<?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>202105</bug_id>
          
          <creation_ts>2019-09-23 07:46:58 -0700</creation_ts>
          <short_desc>Reduce the amount of memory needed to store Options.</short_desc>
          <delta_ts>2019-11-18 12:06:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202126</dependson>
          <blocked>203219</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rakuco</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573301</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 07:46:58 -0700</bug_when>
    <thetext>Details to come in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573303</commentid>
    <comment_count>1</comment_count>
      <attachid>379371</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 08:26:06 -0700</bug_when>
    <thetext>Created attachment 379371
proposed patch.

Let&apos;s get some EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573304</commentid>
    <comment_count>2</comment_count>
      <attachid>379372</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 08:31:12 -0700</bug_when>
    <thetext>Created attachment 379372
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573373</commentid>
    <comment_count>3</comment_count>
      <attachid>379372</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-23 12:00:14 -0700</bug_when>
    <thetext>Comment on attachment 379372
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/runtime/JSCConfig.h:42
&gt;  #if CPU(ARM64) || PLATFORM(WATCHOS)
&gt;  constexpr size_t PageSize = 16 * KB;
&gt; +constexpr size_t ConfigSizeToProtect = 1 * PageSize;
&gt;  #else
&gt;  constexpr size_t PageSize = 4 * KB;
&gt; +constexpr size_t ConfigSizeToProtect = 1 * PageSize;
&gt;  #endif

Add `PageSize = 64 * KB` for `CPU(PPC64) || CPU(PPC64LE) || CPU(PPC) || CPU(UNKNOWN)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573454</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 15:57:29 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Yusuke Suzuki from comment #3)
&gt; &gt; Source/JavaScriptCore/runtime/JSCConfig.h:42
&gt; &gt;  #if CPU(ARM64) || PLATFORM(WATCHOS)
&gt; &gt;  constexpr size_t PageSize = 16 * KB;
&gt; &gt; +constexpr size_t ConfigSizeToProtect = 1 * PageSize;
&gt; &gt;  #else
&gt; &gt;  constexpr size_t PageSize = 4 * KB;
&gt; &gt; +constexpr size_t ConfigSizeToProtect = 1 * PageSize;
&gt; &gt;  #endif
&gt; 
&gt; Add `PageSize = 64 * KB` for `CPU(PPC64) || CPU(PPC64LE) || CPU(PPC) ||
&gt; CPU(UNKNOWN)`.

I&apos;ve added this case.

Landed in r250262: &lt;http://trac.webkit.org/r250262&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573456</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-23 15:58:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55641041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573501</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-23 17:53:07 -0700</bug_when>
    <thetext>Windows port can&apos;t compile:

https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/6980

&gt; c:\cygwin\worker\win10-release\build\webkitbuild\release\derivedsources\forwardingheaders\javascriptcore\optionslist.h(590): fatal error C1060: compiler is out of heap space (compiling source file C:\cygwin\worker\win10-release\build\WebKitBuild\Release\DerivedSources\WebCore\JSInternals.cpp) [C:\cygwin\worker\win10-release\build\WebKitBuild\Release\Source\WebCore\WebCoreTestSupport.vcxproj]
&gt; c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\utility(405): fatal error C1060: compiler is out of heap space (compiling source file C:\cygwin\worker\win10-release\build\Source\WebKitLegacy\win\Plugins\PluginPackage.cpp) [C:\cygwin\worker\win10-release\build\WebKitBuild\Release\Source\WebKitLegacy\WebKitLegacy.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573502</commentid>
    <comment_count>7</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2019-09-23 17:55:32 -0700</bug_when>
    <thetext>&gt;fatal error C1060: compiler is out of heap space

I guess it uses x86_amd64 toolchain (i.e., 32-bit compiler and other tools) instead of amd64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573503</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-23 18:01:16 -0700</bug_when>
    <thetext>Yes, AppleWin has only 32bit Buildbots.

However, WinCairo support only 64bit. And, its buildbots are reporting same errors:

WinCairo 64-bit WKL Debug (Build)
WinCairo 64-bit WKL Release (Build)

https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Release%20%28Build%29/builds/12188

&gt; FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-26.cpp.obj 
&gt; C:\MSVS\VC\Tools\MSVC\14.20.27508\bin\Hostx64\x64\cl.exe  /nologo /TP -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DHAVE_CONFIG_H=1 -DJavaScriptCore_EXPORTS -DNOCRYPT -DNOMINMAX -DUNICODE -DWINVER=0x601 -DWTF_PLATFORM_WIN_CAIRO=1 -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_=&quot;&quot; -IJavaScriptCore\Headers -I. -I..\..\Source\JavaScriptCore -I..\..\Source\JavaScriptCore\API -I..\..\Source\JavaScriptCore\assembler -I..\..\Source\JavaScriptCore\b3 -I..\..\Source\JavaScriptCore\b3\air -I..\..\Source\JavaScriptCore\bindings -I..\..\Source\JavaScriptCore\builtins -I..\..\Source\JavaScriptCore\bytecode -I..\..\Source\JavaScriptCore\bytecompiler -I..\..\Source\JavaScriptCore\dfg -I..\..\Source\JavaScriptCore\disassembler -I..\..\Source\JavaScriptCore\disassembler\ARM64 -I..\..\Source\JavaScriptCore\disassembler\udis86 -I..\..\Source\JavaScriptCore\domjit -I..\..\Source\JavaScriptCore\ftl -I..\..\Source\JavaScriptCore\heap -I..\..\Source\JavaScriptCore\debugger -I..\..\Source\JavaScriptCore\inspector -I..\..\Source\JavaScriptCore\inspector\agents -I..\..\Source\JavaScriptCore\inspector\augmentable -I..\..\Source\JavaScriptCore\inspector\remote -I..\..\Source\JavaScriptCore\interpreter -I..\..\Source\JavaScriptCore\jit -I..\..\Source\JavaScriptCore\llint -I..\..\Source\JavaScriptCore\parser -I..\..\Source\JavaScriptCore\profiler -I..\..\Source\JavaScriptCore\runtime -I..\..\Source\JavaScriptCore\tools -I..\..\Source\JavaScriptCore\wasm -I..\..\Source\JavaScriptCore\wasm\js -I..\..\Source\JavaScriptCore\yarr -IJavaScriptCore\DerivedSources -IJavaScriptCore\DerivedSources\inspector -IJavaScriptCore\DerivedSources\runtime -IJavaScriptCore\DerivedSources\yarr -I..\include\private -I..\..\Source\JavaScriptCore\inspector\remote\socket -IWTF\Headers -IDerivedSources -I..\..\Source\ThirdParty -I..\..\WebKitLibraries\win\include /W4 /DWIN32 /D_WINDOWS  /GR- /EHs- /EHc-  /MD /O2 /Ob2 /DNDEBUG   /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset /Oy- -std:c++17 /showIncludes /FoSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\__\__\JavaScriptCore\DerivedSources\unified-sources\UnifiedSource-f2e18ffc-26.cpp.obj /FdSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\ /FS -c JavaScriptCore\DerivedSources\unified-sources\UnifiedSource-f2e18ffc-26.cpp
&gt; C:\WebKit-BuildWorker\wincairo-wkl-release\build\Source\JavaScriptCore\runtime\PropertyMapHashTable.h(289) : fatal error C1002: compiler is out of heap space in pass 2
&gt; C:\WebKit-BuildWorker\wincairo-wkl-release\build\Source\JavaScriptCore\runtime\Uint16WithFraction.h(140) : fatal error C1002: compiler is out of heap space in pass 2


https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Debug%20%28Build%29/builds/10577

&gt; FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-31.cpp.obj 
&gt; C:\MSVS\VC\Tools\MSVC\14.21.27702\bin\Hostx64\x64\cl.exe  /nologo /TP -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DHAVE_CONFIG_H=1 -DJavaScriptCore_EXPORTS -DNOCRYPT -DNOMINMAX -DUNICODE -DWINVER=0x601 -DWTF_PLATFORM_WIN_CAIRO=1 -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_=&quot;&quot; -IJavaScriptCore\Headers -I. -I..\..\Source\JavaScriptCore -I..\..\Source\JavaScriptCore\API -I..\..\Source\JavaScriptCore\assembler -I..\..\Source\JavaScriptCore\b3 -I..\..\Source\JavaScriptCore\b3\air -I..\..\Source\JavaScriptCore\bindings -I..\..\Source\JavaScriptCore\builtins -I..\..\Source\JavaScriptCore\bytecode -I..\..\Source\JavaScriptCore\bytecompiler -I..\..\Source\JavaScriptCore\dfg -I..\..\Source\JavaScriptCore\disassembler -I..\..\Source\JavaScriptCore\disassembler\ARM64 -I..\..\Source\JavaScriptCore\disassembler\udis86 -I..\..\Source\JavaScriptCore\domjit -I..\..\Source\JavaScriptCore\ftl -I..\..\Source\JavaScriptCore\heap -I..\..\Source\JavaScriptCore\debugger -I..\..\Source\JavaScriptCore\inspector -I..\..\Source\JavaScriptCore\inspector\agents -I..\..\Source\JavaScriptCore\inspector\augmentable -I..\..\Source\JavaScriptCore\inspector\remote -I..\..\Source\JavaScriptCore\interpreter -I..\..\Source\JavaScriptCore\jit -I..\..\Source\JavaScriptCore\llint -I..\..\Source\JavaScriptCore\parser -I..\..\Source\JavaScriptCore\profiler -I..\..\Source\JavaScriptCore\runtime -I..\..\Source\JavaScriptCore\tools -I..\..\Source\JavaScriptCore\wasm -I..\..\Source\JavaScriptCore\wasm\js -I..\..\Source\JavaScriptCore\yarr -IJavaScriptCore\DerivedSources -IJavaScriptCore\DerivedSources\inspector -IJavaScriptCore\DerivedSources\runtime -IJavaScriptCore\DerivedSources\yarr -I..\include\private -I..\..\Source\JavaScriptCore\inspector\remote\socket -IWTF\Headers -IDerivedSources -I..\..\Source\ThirdParty -I..\..\WebKitLibraries\win\include /W4 /DWIN32 /D_WINDOWS  /GR- /EHs- /EHc-  /MD /Zi /Ob0 /Od /RTC1   /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset -std:c++17 /showIncludes /FoSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\__\__\JavaScriptCore\DerivedSources\unified-sources\UnifiedSource-f2e18ffc-31.cpp.obj /FdSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\ /FS -c JavaScriptCore\DerivedSources\unified-sources\UnifiedSource-f2e18ffc-31.cpp
&gt; C:\WebKit-BuildWorker\wincairo-wkl-debug\build\WebKitBuild\Debug\WTF\Headers\wtf/SetForScope.h(43): fatal error C1060: compiler is out of heap space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573510</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2019-09-23 18:33:07 -0700</bug_when>
    <thetext>&gt;Yes, AppleWin has only 32bit Buildbots.

They could switch to 64-bit toolchain to produce 32-bit binaries. It&apos;s probably called amd64_x86 in vcvarsall</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573511</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 18:40:20 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #9)
&gt; &gt;Yes, AppleWin has only 32bit Buildbots.
&gt; 
&gt; They could switch to 64-bit toolchain to produce 32-bit binaries. It&apos;s
&gt; probably called amd64_x86 in vcvarsall

Looks like a MSVC bug:
https://developercommunity.visualstudio.com/content/problem/653301/fatal-error-c1002-compiler-is-out-of-heap-space-in.html

Posted on Sep 6: &quot;A fix for this issue has been internally implemented and is being prepared for release. We’ll update you once it becomes available for download&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573517</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-23 18:58:49 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #9)
&gt; They could switch to 64-bit toolchain to produce 32-bit binaries. It&apos;s
&gt; probably called amd64_x86 in vcvarsall

According the compilation log of comment 6, AppleWin is using &apos;HostX64\x86\CL.exe&apos;.

&gt;   INTERNAL COMPILER ERROR in &apos;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX64\x86\CL.exe&apos;
&gt;       Please choose the Technical Support command on the Visual C++
&gt;       Help menu, or open the Technical Support help file for more information
&gt; cl : Command line error D8040: error creating or communicating with child process [C:\cygwin\worker\win10-release\build\WebKitBuild\Release\Source\WebCore\WebCoreTestSupport.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573518</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-23 19:02:10 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #10)
&gt; Looks like a MSVC bug:
&gt; https://developercommunity.visualstudio.com/content/problem/653301/fatal-
&gt; error-c1002-compiler-is-out-of-heap-space-in.html

Nice to find it out.

&gt; To workaround this issue, please use the x64 hosted toolset or use /cgthreads1 to disable multithreaded compilation.

It must be unacceptable for Windows devs to use /cgthreads1.
Let&apos;s revert the patch until the upcoming MSVC release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573519</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-23 19:06:44 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; (In reply to Mark Lam from comment #10)
&gt; &gt; Looks like a MSVC bug:
&gt; &gt; https://developercommunity.visualstudio.com/content/problem/653301/fatal-
&gt; &gt; error-c1002-compiler-is-out-of-heap-space-in.html
&gt; 
&gt; Nice to find it out.
&gt; 
&gt; &gt; To workaround this issue, please use the x64 hosted toolset or use /cgthreads1 to disable multithreaded compilation.
&gt; 
&gt; It must be unacceptable for Windows devs to use /cgthreads1.
&gt; Let&apos;s revert the patch until the upcoming MSVC release.

It&apos;s sad for progress to be gated by MSVC.  I&apos;ll roll out and see if I can workaround this for MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573521</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-23 19:09:46 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 202126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580569</commentid>
    <comment_count>15</comment_count>
      <attachid>381082</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 10:36:10 -0700</bug_when>
    <thetext>Created attachment 381082
Rebased patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580678</commentid>
    <comment_count>16</comment_count>
      <attachid>381108</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 14:32:44 -0700</bug_when>
    <thetext>Created attachment 381108
refactored test patch for checking Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580770</commentid>
    <comment_count>17</comment_count>
      <attachid>381133</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 16:45:45 -0700</bug_when>
    <thetext>Created attachment 381133
another test patch for MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580774</commentid>
    <comment_count>18</comment_count>
      <attachid>381134</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 17:05:39 -0700</bug_when>
    <thetext>Created attachment 381134
test patch for MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580778</commentid>
    <comment_count>19</comment_count>
      <attachid>381135</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 17:15:43 -0700</bug_when>
    <thetext>Created attachment 381135
test patch for MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580801</commentid>
    <comment_count>20</comment_count>
      <attachid>381142</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 17:55:37 -0700</bug_when>
    <thetext>Created attachment 381142
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580834</commentid>
    <comment_count>21</comment_count>
      <attachid>381148</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 19:53:12 -0700</bug_when>
    <thetext>Created attachment 381148
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580866</commentid>
    <comment_count>22</comment_count>
      <attachid>381148</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-16 22:15:14 -0700</bug_when>
    <thetext>Comment on attachment 381148
patch for landing.

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

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580873</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 22:42:41 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #22)
&gt; New failing tests:
&gt; mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla

I can reproduce this without my patch.  The test is inherently flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580875</commentid>
    <comment_count>24</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-16 22:46:27 -0700</bug_when>
    <thetext>Fix landed in r251226: &lt;http://trac.webkit.org/r251226&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581321</commentid>
    <comment_count>25</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-17 22:25:37 -0700</bug_when>
    <thetext>Filed: Bug 203142 – [Clang][Windows] Options.cpp(317,25): error: no matching function for call to &apos;optionTypeSpecificIndex&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585469</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-30 13:08:02 -0700</bug_when>
    <thetext>This was rolled out in r251400: &lt;http://trac.webkit.org/r251400&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585513</commentid>
    <comment_count>27</comment_count>
      <attachid>382356</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-30 14:28:44 -0700</bug_when>
    <thetext>Created attachment 382356
work in progress using type specific index from Options::s_optionsInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590920</commentid>
    <comment_count>28</comment_count>
      <attachid>383711</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-16 18:46:27 -0800</bug_when>
    <thetext>Created attachment 383711
proposed patch.

Without template magic this time.  In fact, I reduced the amount of stuff defined in Options.h.  So, compile time should be the same or marginally less.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590921</commentid>
    <comment_count>29</comment_count>
      <attachid>383712</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-16 19:08:03 -0800</bug_when>
    <thetext>Created attachment 383712
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590922</commentid>
    <comment_count>30</comment_count>
      <attachid>383713</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-16 19:29:58 -0800</bug_when>
    <thetext>Created attachment 383713
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591132</commentid>
    <comment_count>31</comment_count>
      <attachid>383713</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-18 11:18:10 -0800</bug_when>
    <thetext>Comment on attachment 383713
proposed patch.

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

r=me, I love a patch that makes things easier to read and more efficient at the same time.

&gt; Source/JavaScriptCore/runtime/JSCConfig.h:42
&gt; +constexpr size_t ConfigSizeToProtect = PageSize;

Is it possible to have some static_assert that the size of the options fit in that ?
I&apos;ve seen one that checks for 16*KB, are we guaranteed that PageSize is always that on every platform?

&gt; Source/JavaScriptCore/runtime/Options.cpp:917
&gt;          return; // Illegal option.

If it is illegal, can we make it a release assert instead?

&gt; Source/JavaScriptCore/runtime/Options.cpp:1038
&gt;  {

nitpicking, but I think an ASSERT(type() == other.type()) might be valuable here.

&gt; Source/JavaScriptCore/runtime/OptionsList.h:74
&gt; +// Any modifications to options must be done before the first VM is instantiate.

nit: instantiate =&gt; instantiated.

&gt; Source/JavaScriptCore/runtime/OptionsList.h:555
&gt; +    { // Only needed for initialization

I don&apos;t understand this at all, this function appears to do nothing when passed a non-zero number. I realize it&apos;s not a change from your patch, but can you explain what this is for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591158</commentid>
    <comment_count>32</comment_count>
      <attachid>383713</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-18 12:01:53 -0800</bug_when>
    <thetext>Comment on attachment 383713
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSCConfig.h:42
&gt;&gt; +constexpr size_t ConfigSizeToProtect = PageSize;
&gt; 
&gt; Is it possible to have some static_assert that the size of the options fit in that ?
&gt; I&apos;ve seen one that checks for 16*KB, are we guaranteed that PageSize is always that on every platform?

We already have a static_assert(sizeof(Config) == ConfigSizeToProtect, &quot;&quot;) below (in JSCConfig.h) that covers this.

&gt;&gt; Source/JavaScriptCore/runtime/Options.cpp:917
&gt;&gt;          return; // Illegal option.
&gt; 
&gt; If it is illegal, can we make it a release assert instead?

Done.

&gt;&gt; Source/JavaScriptCore/runtime/Options.cpp:1038
&gt;&gt;  {
&gt; 
&gt; nitpicking, but I think an ASSERT(type() == other.type()) might be valuable here.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/OptionsList.h:74
&gt;&gt; +// Any modifications to options must be done before the first VM is instantiate.
&gt; 
&gt; nit: instantiate =&gt; instantiated.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/OptionsList.h:555
&gt;&gt; +    { // Only needed for initialization
&gt; 
&gt; I don&apos;t understand this at all, this function appears to do nothing when passed a non-zero number. I realize it&apos;s not a change from your patch, but can you explain what this is for?

I think the reason for this is because options in OptionsList.h of type OptionRange has a default value of 0.  The 0 means no range specified, so please set to Uninitialized.  However, it&apos;s meaningless to pass in any other int value.  We can RELEASE_ASSERT that rhs is never non-zero, or provide a better way to specify the initial value.  I&apos;ll leave this as is for now.  We can improve it in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591161</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-18 12:06:38 -0800</bug_when>
    <thetext>Landed in r252557: &lt;http://trac.webkit.org/r252557&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379371</attachid>
            <date>2019-09-23 08:26:06 -0700</date>
            <delta_ts>2019-09-23 08:31:12 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-202105.patch</filename>
            <type>text/plain</type>
            <size>43981</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMjMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNSBA
QAorMjAxOS0wOS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNpemUgb2Yg
dGhlIEpTQzo6Q29uZmlnIG5lZWRlZCB0byBzdG9yZSB0aGUgT3B0aW9ucyBpcyBub3cgcmVkdWNl
ZCB0byA0SworICAgICAgICBpbnN0ZWFkIG9mIDE2SywgZW5hYmxlZCBieSBjb25zdGV4cHIgdGVt
cGxhdGUgbWFnaWMuCisKKyAgICAgICAgMS4gSW5zdGVhZCBvZiBhbGwgb3B0aW9ucyBpbiBhIGxh
cmdlIGFycmF5IG9mIE9wdGlvbkVudHJ5ICh3aGljaCBpcyBhIHVuaW9uIG9mCisgICAgICAgICAg
IGFsbCB0aGUgb3B0aW9uIHR5cGVzKSwgd2Ugbm93IGhhdmUgc2VwYXJhdGUgYXJyYXlzIGZvciBl
YWNoIG9mIHRoZSB0eXBlcyBvZgorICAgICAgICAgICBvcHRpb25zLiAgRm9yIGV4YW1wbGUsCisK
KyAgICAgICAgICAgICAgICBSZW1vdmVkIGdfanNjQ29uZmlnLm9wdGlvbnNbXS4KKyAgICAgICAg
ICAgICAgICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlQm9vbE9wdGlvbnNbXS4KKyAgICAgICAgICAg
ICAgICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlSW50MzJPcHRpb25zW10uCisgICAgICAgICAgICAg
ICAgQWRkZWQgZ19qc2NDb25maWcudHlwZURvdWJsZU9wdGlvbnNbXS4KKyAgICAgICAgICAgICAg
ICAuLi4KKworICAgICAgICAgICBXZSB1c2VkIHRvIGZpbmQgdGhlIHN0b3JhZ2UgZm9yIHRoZSBv
cHRpb24gdXNpbmcgZ19qc2NDb25maWcub3B0aW9uc1tPcHRpb25zOjpJRF0uCisgICAgICAgICAg
IFdlIG5vdyBmaW5kIHRoZSBzdG9yYWdlIGZvciBlYWNoIHR5cGUgb2Ygb3B0aW9uIHVzaW5nCisg
ICAgICAgICAgIGdfanNjQ29uZmlnLm9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0
aW9uVHlwZUlELCBPcHRpb25JRD4oKV0uICBGb3IKKyAgICAgICAgICAgZXhhbXBsZSwgT3B0aW9u
czo6dXNlSklUKCkgdXNlZCB0byBiZSBpbXBsZW1lbnRlZCBhczoKKworICAgICAgICAgICAgICAg
aW5saW5lIGJvb2wmIE9wdGlvbnM6OnVzZUpJVCgpCisgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zW09wdGlvbnM6OnVzZUpJVElE
XTsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAuLi4gd2hpY2ggaXMgbm93IHJlcGxh
Y2VkIHdpdGg6CisKKyAgICAgICAgICAgICAgIGlubGluZSBib29sJiBPcHRpb25zOjp1c2VKSVQo
KQorICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ19qc2NDb25m
aWcudHlwZUJvb2xPcHRpb25zW29wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6
Qm9vbCwgT3B0aW9uSUQ6OnVzZUpJVD4oKV07CisgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
Mi4gSW50cm9kdWNlIHRoZSBvcHRpb25UeXBlU3BlY2lmaWNJbmRleCgpIGNvbnN0ZXhwciB0ZW1w
bGF0ZSBmdW5jdGlvbiBmb3IKKyAgICAgICAgICAgY29tcHV0aW5nIHRoZSBpbmRleCBvZiBlYWNo
IG9wdGlvbiBpbiB0aGVpciByZXNwZWN0aXZlIHR5cGUgc3BlY2lmaWMgb3B0aW9ucworICAgICAg
ICAgICBhcnJheS4KKworICAgICAgICAzLiBJbnRyb2R1Y2UgT3B0aW9uVHlwZXMsIE9wdGlvblR5
cGVJRCwgYW5kIE9wdGlvbklELgorCisgICAgICAgICAgIFRoZSBPcHRpb25UeXBlcyBuYW1lc3Bh
Y2UgcmVwbGFjZXMgT3B0aW9uRW50cnkgYXMgdGhlIGNvbnRhaW5lciBvZiBvcHRpb24gdHlwZXMu
CisgICAgICAgICAgIFRoZSBPcHRpb25JRCBlbnVtIGNsYXNzIHJlcGxhY2VzIE9wdGlvbnM6OklE
LgorICAgICAgICAgICBUaGUgT3B0aW9uVHlwZUlEIGVudW0gY2xhc3MgaXMgbmV3IGFuZCBpcyB1
c2VkIHRvZ2V0aGVyIHdpdGggT3B0aW9uSUQgaW4KKyAgICAgICAgICAgICAgIGNvbnN0ZXhwciB0
ZW1wbGF0ZXMgdG8gY29tcHV0ZSB0aGUgdHlwZVNwZWNpZmljSW5kZXggb2Ygb3B0aW9ucy4KKwor
ICAgICAgICA0LiBSZW1vdmVkIHRoZSBPcHRpb25FbnRyeSBzdHJ1Y3QgYW5kIE9wdGlvbkVudHJ5
LmguICBBZnRlciAoMSksIHRoaXMgc3RydWN0IGlzCisgICAgICAgICAgIG9ubHkgdXNlZCBpbiB0
aGUgT3B0aW9uIGNsYXNzLiAgV2UganVzdCBtb3ZlZCB0aGUgdW5pb24gb2Ygb3B0aW9uIHR5cGVz
ICh0aGF0CisgICAgICAgICAgIE9wdGlvbkVudHJ5IGVtYmVkcykgaW50byB0aGUgT3B0aW9uIGNs
YXNzLgorCisgICAgICAgICAgIE1vdmVkIGNsYXNzIE9wdGlvblJhbmdlIGludG8gT3B0aW9uc0xp
c3QuaC4KKworICAgICAgICA1LiBSZW1vdmVkIHRoZSBsYXJnZSBPcHRpb25FbnRyeSBhcnJheXMg
ZnJvbSBKU0M6OkNvbmZpZy4KKyAgICAgICAgICAgQWRkZWQgdHlwZSBzcGVjaWZpYyBvcHRpb25z
IGFycmF5cy4KKyAgICAgICAgICAgQWxzbyBvcmRlcmVkIHRoZXNlIGFycmF5cyB0byBtYXhpbWl6
ZSBjb21wYWN0bmVzcyBhbmQgbWluaW1pemUgaW50ZXJuYWwgZnJhZ21lbnRhdGlvbi4KKworICAg
ICAgICA2LiBDaGFuZ2VkIHNjYWxlSklUUG9saWN5KCkgdG8gZ28gZGlyZWN0bHkgdG8gZ19qc2ND
b25maWcudHlwZUludDMyT3B0aW9uc1tdCisgICAgICAgICAgIGluc3RlYWQgb2YgZ29pbmcgdGhy
b3VnaCB0aGUgT3B0aW9uIHdyYXBwZXIgb2JqZWN0LiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGxp
ZnkKKyAgICAgICAgICAgdGhpbmdzIGFuZCBtYWtlIHRoZSBPcHRpb24gY2xhc3MgYSByZWFkIG9u
bHkgaW50ZXJmYWNlIG9mIG9wdGlvbnMuCisKKyAgICAgICAgNy4gQ2hhbmdlZCBPcHRpb25zOjpp
bml0aWFsaXplKCkgdG8gb25seSBjb21wdXRlIHRoZSBvcHRpb24gZGVmYXVsdCB2YWx1ZSBvbmNl
LgorICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbnNM
aXN0IG1heSBub3QgYWx3YXlzIGJlIGEgY29uc3RhbnQuCisgICAgICAgICAgIFNvbWV0aW1lcywg
aXQgaXMgYSBmdW5jdGlvbiBjYWxsLgorCisgICAgICAgIDguIFRoZSBPcHRpb24gY2xhc3Mgbm93
IG9ubHkgZ2l2ZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgb3B0aW9ucy4KKworICAgICAgICAg
ICBUaGUgT3B0aW9uIGNsYXNzJyByb2xlIGlzIHRvIHByb3ZpZGUgYW4gaW50ZXJmYWNlIGZvciBy
ZWFkaW5nIGFuIG9wdGlvbiBhdCBhbnkKKyAgICAgICAgICAgZ2l2ZW4gT3B0aW9uSUQgd2l0aG91
dCBmaXJzdCBrbm93aW5nIGFib3V0IHRoZSB0eXBlIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24uCisg
ICAgICAgICAgIEl0IGlzIHVzZWZ1bCBmb3IgaXRlcmF0aW5nIG9wdGlvbnMsIGFuZCBpcyBjdXJy
ZW50bHkgb25seSB1c2VkIGJ5CisgICAgICAgICAgIE9wdGlvbnM6OmR1bXBPcHRpb24oKS4KKwor
ICAgICAgICAgICBUZWNobmljYWxseSwgd2UgY291bGQgbWVyZ2UgYWxsIHRoZSBPcHRpb24gY2xh
c3MgY29kZSBpbnRvIGl0cyBzaW5nbGUgY2xpZW50LgorICAgICAgICAgICBXZSBvcHRlZCBub3Qg
dG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBhbW91bnQgb2YgY29kZSBpcyBub24tdHJpdmlhbCwgYW5k
IHRoZQorICAgICAgICAgICBPcHRpb24gY2xhc3MgZG9lcyBhIGdvb2Qgam9iIG9mIGVuY2Fwc3Vs
YXRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9u
cy5jcHA6CisgICAgICAgIChqc2NPcHRpb25zU2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9u
c0dldFZhbHVlKToKKyAgICAgICAgKGpzY19vcHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAoanNj
X29wdGlvbnNfZ2V0X29wdGlvbl9ncm91cCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uRW50cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpPcHRpb25zOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChKU0M6Om92ZXJyaWRlT3B0aW9uV2l0
aEhldXJpc3RpYyk6CisgICAgICAgIChKU0M6OnNjYWxlSklUUG9saWN5KToKKyAgICAgICAgKEpT
Qzo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6
Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246Ok9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbjo6ZGVmYXVsdE9wdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlv
bjo6aWQgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpPcHRpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9u
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjphdmFpbGFiaWxpdHkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpPcHRpb246OmlzT3ZlcnJpZGRlbiBjb25zdCk6CisgICAgICAgIChK
U0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjppZEluZGV4IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZWZhdWx0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T3B0aW9uOjpib29sVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
T3B0aW9uOjp1bnNpZ25lZFZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZG91
YmxlVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjppbnQzMlZhbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPcHRpb246Om9wdGlvblN0cmluZ1ZhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok9wdGlvbjo6Z2NMb2dMZXZlbFZhbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9P
cHRpb25zTGlzdC5oOgorICAgICAgICAoSlNDOjpPcHRpb25SYW5nZTo6b3BlcmF0b3I9ICk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgIChK
U0M6Om9wdGlvblR5cGVTcGVjaWZpY0luZGV4KToKKyAgICAgICAgKEpTQzo6Y291bnROdW1iZXJP
ZkpTQ09wdGlvbnNPZlR5cGUpOgorCiAyMDE5LTA5LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICB0ZXN0bWFzbTogaW50ZWdlciBvcGVyYW5kcyBsb2Fk
ZWQgYXMgdW5zaWduZWQgdmFsdWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkxOSw3ICs5MTksNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlv
blNjb3BlLmgKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5oCiAgICAgcnVudGltZS9PcGVy
YXRpb25zLmgKLSAgICBydW50aW1lL09wdGlvbkVudHJ5LmgKICAgICBydW50aW1lL09wdGlvbnMu
aAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2
aXNpb24gMjUwMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFu
IGpzY09wdGlvbnNTZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5
cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBc
CiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVz
Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIGlmICghdmFsdWVGcm9tR1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVf
KCkgPSB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x
ODYsNyArMTg2LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAog
ewogI2RlZmluZSBHRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVf
LCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAg
ICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9u
czo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVU
b0dldCwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJl
dHVybiBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfQpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFj
aChKU0NPcHRpb25zRnVuYyAKICNkZWZpbmUgVklTSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVm
YXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlv
bnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6
Ok5vcm1hbCBcCiAgICAgICAgIHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVf
IyNJRCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCi0gICAgICAg
IE9wdGlvbkVudHJ5Ojp0eXBlXyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyBkZWZhdWx0VmFsdWUgeyB9OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGF1dG8gb3B0aW9uVHlwZSA9IGpz
Y09wdGlvbnNUeXBlKGRlZmF1bHRWYWx1ZSk7ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlm
IChmdW5jdGlvbiAoI25hbWVfLCBvcHRpb25UeXBlLCBkZXNjcmlwdGlvbl8sIHVzZXJEYXRhKSkg
ICAgICBcCiAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC02NjYsNyArNjY2LDcgQEAgR09wdGlvbkdyb3Vw
KiBqc2Nfb3B0aW9uc19nZXRfb3B0aW9uX2dybwogICAgIEdBcnJheSogZW50cmllcyA9IGdfYXJy
YXlfbmV3KFRSVUUsIFRSVUUsIHNpemVvZihHT3B0aW9uRW50cnkpKTsKICNkZWZpbmUgUkVHSVNU
RVJfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVz
Y3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5
XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCi0gICAgICAgIHx8IE9wdGlvbnM6
OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKSkgeyBcCisgICAgICAgIHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlv
bklEOjpuYW1lXywgT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShnX3N0cmR1cF9wcmludGYoImpzYy0lcyIsICNu
YW1lXykpOyAgICAgICBcCiAgICAgICAgIGVudHJpZXMgPSBnX2FycmF5X3NldF9zaXplKGVudHJp
ZXMsIGVudHJpZXMtPmxlbiArIDEpOyBcCiAgICAgICAgIEdPcHRpb25FbnRyeSogZW50cnkgPSAm
Z19hcnJheV9pbmRleChlbnRyaWVzLCBHT3B0aW9uRW50cnksIGVudHJpZXMtPmxlbiAtIDEpOyBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUwMjAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzIsNyArMTg3Miw2IEBACiAJCUZFMzAyMkQ3MUU0
Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5zcGVj
dG9yLmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJFODggLyogVGhy
b3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0MjMzMjMy
NEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNM
aXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNDFD
MTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgfTsKQEAgLTUwNzAsNyAr
NTA2OSw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25zLnJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNvZGVHcm91cC5y
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91cC5yYjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0Q0E4IC8qIE1l
dGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1ldGFkYXRhLnJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUg
LyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9u
RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzEyMzI0RDUxQjAw
OURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFE
REI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MzcwLDcgKzczNjgsNiBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAv
KiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovLAogCQkJCUY2
OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJCQlGNjkyQTg3
ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0MjMwMjMyNEQ1
MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQzNkFCMjMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyog
T3B0aW9ucy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlz
dC5oICovLApAQCAtOTM1Myw3ICs5MzUwLDYgQEAKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMTG93ZXJERkdUb0IzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBC
OTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjlDRjkxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRTAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjUwMjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJPcHRpb25FbnRyeS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNiwx
MiArMzUsMTIgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yOwogCiAjaWYg
Q1BVKEFSTTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6
ZSA9IDE2ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICog
UGFnZVNpemU7CiAjZWxzZQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDQgKiBLQjsKK2Nv
bnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNlbmRp
ZgogCi1jb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxNiAqIEtCOwotCiAj
aWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogdXNpbmcgSklUV3JpdGVTZXBhcmF0ZUhlYXBz
RnVuY3Rpb24gPSB2b2lkICgqKShvZmZfdCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAjZW5kaWYK
QEAgLTgyLDggKzgxLDI5IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICAgICAgYm9vbCB1c2VG
YXN0UGVybWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAotICAgICAgICAgICAgT3B0aW9uRW50cnkg
b3B0aW9uc1tOdW1iZXJPZk9wdGlvbnNdOwotICAgICAgICAgICAgT3B0aW9uRW50cnkgZGVmYXVs
dE9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xPcHRp
b25zW051bWJlck9mQm9vbE9wdGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbERlZmF1
bHRPcHRpb25zW051bWJlck9mQm9vbE9wdGlvbnNdOworCisgICAgICAgICAgICBHQ0xvZ2dpbmc6
OkxldmVsIHR5cGVHQ0xvZ0xldmVsT3B0aW9uc1tOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsK
KyAgICAgICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2ZWxEZWZhdWx0T3B0aW9u
c1tOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKworICAgICAgICAgICAgaW50MzJfdCB0eXBl
SW50MzJPcHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsKKyAgICAgICAgICAgIGludDMyX3Qg
dHlwZUludDMyRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZJbnQzMk9wdGlvbnNdOworCisgICAgICAg
ICAgICB1bnNpZ25lZCB0eXBlVW5zaWduZWRPcHRpb25zW051bWJlck9mVW5zaWduZWRPcHRpb25z
XTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHR5cGVVbnNpZ25lZERlZmF1bHRPcHRpb25zW051bWJl
ck9mVW5zaWduZWRPcHRpb25zXTsKKworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVPcHRp
b25zW051bWJlck9mRG91YmxlT3B0aW9uc107CisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJs
ZURlZmF1bHRPcHRpb25zW051bWJlck9mRG91YmxlT3B0aW9uc107CisKKyAgICAgICAgICAgIHNp
emVfdCB0eXBlU2l6ZU9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisgICAgICAgICAgICBz
aXplX3QgdHlwZVNpemVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKworICAg
ICAgICAgICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ09wdGlvbnNbTnVtYmVyT2ZPcHRp
b25TdHJpbmdPcHRpb25zXTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25TdHJp
bmdEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOworCisgICAgICAg
ICAgICBPcHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VPcHRpb25zW051bWJlck9mT3B0aW9uUmFu
Z2VPcHRpb25zXTsKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5cGVPcHRpb25SYW5nZURlZmF1
bHRPcHRpb25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zXTsKICAgICAgICAgfTsKICAgICAg
ICAgY2hhciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwogICAgIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHJldmlzaW9uIDI1
MDIwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNz
IE9wdGlvblJhbmdlIHsKLXByaXZhdGU6Ci0gICAgZW51bSBSYW5nZVN0YXRlIHsgVW5pbml0aWFs
aXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07Ci1wdWJsaWM6Ci0gICAgT3B0aW9u
UmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCi0gICAgeyAvLyBPbmx5IG5lZWRlZCBm
b3IgaW5pdGlhbGl6YXRpb24KLSAgICAgICAgaWYgKCFyaHMpIHsKLSAgICAgICAgICAgIG1fc3Rh
dGUgPSBVbmluaXRpYWxpemVkOwotICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7Ci0gICAg
ICAgICAgICBtX2xvd0xpbWl0ID0gMDsKLSAgICAgICAgICAgIG1faGlnaExpbWl0ID0gMDsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgYm9vbCBpbml0KGNv
bnN0IGNoYXIqKTsKLSAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7Ci0gICAgY29uc3QgY2hh
ciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBt
X3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHNfbnVsbFJhbmdlU3RyOwotCi0gICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOwotICAgIGNv
bnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7Ci0gICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKLSAgICB1
bnNpZ25lZCBtX2hpZ2hMaW1pdDsKLX07Ci0KLS8vIEZvciBzdG9yaW5nIGZvciBhbiBvcHRpb24g
dmFsdWU6Ci11bmlvbiBPcHRpb25FbnRyeSB7Ci0gICAgdXNpbmcgQm9vbCA9IGJvb2w7Ci0gICAg
dXNpbmcgVW5zaWduZWQgPSB1bnNpZ25lZDsKLSAgICB1c2luZyBEb3VibGUgPSBkb3VibGU7Ci0g
ICAgdXNpbmcgSW50MzIgPSBpbnQzMl90OwotICAgIHVzaW5nIFNpemUgPSBzaXplX3Q7Ci0gICAg
dXNpbmcgT3B0aW9uUmFuZ2UgPSBKU0M6Ok9wdGlvblJhbmdlOwotICAgIHVzaW5nIE9wdGlvblN0
cmluZyA9IGNvbnN0IGNoYXIqOwotICAgIHVzaW5nIEdDTG9nTGV2ZWwgPSBHQ0xvZ2dpbmc6Okxl
dmVsOwotCi0gICAgYm9vbCB2YWxCb29sOwotICAgIHVuc2lnbmVkIHZhbFVuc2lnbmVkOwotICAg
IGRvdWJsZSB2YWxEb3VibGU7Ci0gICAgaW50MzJfdCB2YWxJbnQzMjsKLSAgICBzaXplX3QgdmFs
U2l6ZTsKLSAgICBPcHRpb25SYW5nZSB2YWxPcHRpb25SYW5nZTsKLSAgICBjb25zdCBjaGFyKiB2
YWxPcHRpb25TdHJpbmc7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCB2YWxHQ0xvZ0xldmVsOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMjUwMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBz
dGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIEdDCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkLCBPcHRpb25z
OjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQorYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShP
cHRpb25JRCBpZCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKIHsKICAgICBp
ZiAoYXZhaWxhYmlsaXR5ID09IEF2YWlsYWJpbGl0eTo6UmVzdHJpY3RlZCkKICAgICAgICAgcmV0
dXJuIGdfanNjQ29uZmlnLnJlc3RyaWN0ZWRPcHRpb25zRW5hYmxlZDsKQEAgLTE0MCwyNiArMTQw
LDI2IEBAIGJvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQKICAgICAKICAg
ICBVTlVTRURfUEFSQU0oaWQpOwogI2lmICFkZWZpbmVkKE5ERUJVRykKLSAgICBpZiAoaWQgPT0g
bWF4U2luZ2xlQWxsb2NhdGlvblNpemVJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om1heFNp
bmdsZUFsbG9jYXRpb25TaXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogI2lmIE9T
KERBUldJTikKLSAgICBpZiAoaWQgPT0gdXNlU2lnaWxsQ3Jhc2hBbmFseXplcklEKQorICAgIGlm
IChpZCA9PSBPcHRpb25JRDo6dXNlU2lnaWxsQ3Jhc2hBbmFseXplcikKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBPUyhMSU5VWCkKLSAgICBp
ZiAoaWQgPT0gbG9nSklUQ29kZUZvclBlcmZJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Omxv
Z0pJVENvZGVGb3JQZXJmKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGlmIChp
ZCA9PSB0cmFjZUxMSW50RXhlY3V0aW9uSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFj
ZUxMSW50RXhlY3V0aW9uKQogICAgICAgICByZXR1cm4gISFMTElOVF9UUkFDSU5HOwotICAgIGlm
IChpZCA9PSB0cmFjZUxMSW50U2xvd1BhdGhJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnRy
YWNlTExJbnRTbG93UGF0aCkKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIG92ZXJyaWRlT3B0
aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIq
IG5hbWUsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCitib29sIG92ZXJyaWRl
T3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uSUQgaWQsIGNvbnN0IGNoYXIq
IG5hbWUsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgYm9vbCBh
dmFpbGFibGUgPSAoYXZhaWxhYmlsaXR5ID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFs
KQogICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShpZCwgYXZhaWxhYmlsaXR5KTsKQEAg
LTI4Myw5ICsyODMsOSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
CiB9CiAKIC8vIFJlYWxpemUgdGhlIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgotY29u
c3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bT3B0aW9uczo6bnVt
YmVyT2ZPcHRpb25zXSA9IHsKK2NvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29w
dGlvbnNJbmZvW051bWJlck9mT3B0aW9uc10gPSB7CiAjZGVmaW5lIEZJTExfT1BUSU9OX0lORk8o
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IFwKLSAgICB7ICNuYW1lXywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBlXywgQXZh
aWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfIH0sCisgICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywg
T3B0aW9uVHlwZUlEOjp0eXBlXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfLCBvcHRpb25U
eXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCkg
fSwKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKEZJTExfT1BUSU9OX0lORk8pCiAjdW5kZWYgRklM
TF9PUFRJT05fSU5GTwogfTsKQEAgLTI5OSwyNiArMjk5LDI1IEBAIHN0YXRpYyB2b2lkIHNjYWxl
SklUUG9saWN5KCkKICAgICAgICAgc2NhbGVGYWN0b3IgPSAwLjA7CiAKICAgICBzdHJ1Y3QgT3B0
aW9uVG9TY2FsZSB7Ci0gICAgICAgIE9wdGlvbnM6OklEIGlkOworICAgICAgICBzaXplX3QgaW5k
ZXg7CiAgICAgICAgIGludDMyX3QgbWluVmFsOwogICAgIH07CiAKICAgICBzdGF0aWMgY29uc3Qg
T3B0aW9uVG9TY2FsZSBvcHRpb25zVG9TY2FsZVtdID0gewotICAgICAgICB7IE9wdGlvbnM6OnRo
cmVzaG9sZEZvckpJVEFmdGVyV2FybVVwSUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJl
c2hvbGRGb3JKSVRTb29uSUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZUFmdGVyV2FybVVwSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhy
ZXNob2xkRm9yT3B0aW1pemVTb29uSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hv
bGRGb3JGVExPcHRpbWl6ZVNvb25JRCwgMiB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9s
ZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXBJRCwgMiB9CisgICAgICAgIHsgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJ
VEFmdGVyV2FybVVwPigpLCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8
T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJVFNvb24+KCksIDAg
fSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMy
LCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMSB9LAorICAg
ICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlv
bklEOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD4oKSwgMSB9LAorICAgICAg
ICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklE
Ojp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBl
U3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9y
RlRMT3B0aW1pemVTb29uPigpLCAyIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5k
ZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9wdGltaXpl
QWZ0ZXJXYXJtVXA+KCksIDIgfSwKICAgICB9OwogCi0gICAgY29uc3QgaW50IG51bWJlck9mT3B0
aW9uc1RvU2NhbGUgPSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2Nh
bGUpOworICAgIGNvbnN0ZXhwciBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVvZihv
cHRpb25zVG9TY2FsZSkgLyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlOyBpKyspIHsKLSAgICAgICAgT3B0aW9uIG9w
dGlvbihvcHRpb25zVG9TY2FsZVtpXS5pZCk7Ci0gICAgICAgIEFTU0VSVChvcHRpb24udHlwZSgp
ID09IE9wdGlvbnM6OlR5cGU6OkludDMyKTsKLSAgICAgICAgb3B0aW9uLmludDMyVmFsKCkgKj0g
c2NhbGVGYWN0b3I7Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpID0gc3RkOjptYXgob3B0aW9u
LmludDMyVmFsKCksIG9wdGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7CisgICAgICAgIGludDMyX3Qm
IG9wdGlvblZhbHVlID0gZ19qc2NDb25maWcudHlwZUludDMyT3B0aW9uc1tvcHRpb25zVG9TY2Fs
ZVtpXS5pbmRleF07CisgICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9yOworICAgICAg
ICBvcHRpb25WYWx1ZSA9IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBvcHRpb25zVG9TY2FsZVtpXS5t
aW5WYWwpOwogICAgIH0KIH0KIApAQCAtNDQxLDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHJlY29t
cHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgIGlmICghT3B0aW9uczo6dXNlQ29uY3VycmVudEdD
KCkpCiAgICAgICAgIE9wdGlvbnM6OmNvbGxlY3RDb250aW51b3VzbHkoKSA9IGZhbHNlOwogCi0g
ICAgaWYgKE9wdGlvbihPcHRpb25zOjpqaXRQb2xpY3lTY2FsZUlEKS5pc092ZXJyaWRkZW4oKSkK
KyAgICBpZiAoT3B0aW9uKE9wdGlvbklEOjpqaXRQb2xpY3lTY2FsZSkuaXNPdmVycmlkZGVuKCkp
CiAgICAgICAgIHNjYWxlSklUUG9saWN5KCk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNl
RWFnZXJDb21waWxhdGlvbigpKSB7CkBAIC01MTcsOSArNTE2LDExIEBAIHZvaWQgT3B0aW9uczo6
aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBDb25maWc6OmVuYWJsZVJlc3RyaWN0ZWRPcHRpb25z
KCk7CiAjZW5kaWYKICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9u
cyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBJTklUX09QVElPTih0eXBlXywg
bmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAg
ICAgICAgICAgbmFtZV8oKSA9IGRlZmF1bHRWYWx1ZV87IFwKLSAgICAgICAgICAgIG5hbWVfIyNE
ZWZhdWx0KCkgPSBkZWZhdWx0VmFsdWVfOworI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFt
ZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgeyBcCisgICAg
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGRlZmF1bHRWYWx1ZV87IFwKKyAgICAgICAgICAgICAg
ICBuYW1lXygpID0gdmFsdWU7IFwKKyAgICAgICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0g
dmFsdWU7IFwKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04o
SU5JVF9PUFRJT04pCiAjdW5kZWYgSU5JVF9PUFRJT04KIApAQCAtNTQzLDcgKzU0NCw3IEBAIHZv
aWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKICNlbHNl
IC8vIFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNU
SUNTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRp
b25fKSBcCi0gICAgICAgICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwg
bmFtZV8jI0lELCAiSlNDXyIgI25hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOwor
ICAgICAgICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIE9wdGlvbklE
OjpuYW1lXywgIkpTQ18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKICAg
ICAgICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklT
VElDUykKICN1bmRlZiBPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTCiAjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCkBAIC03MjIsMTYgKzcyMywxNSBAQCBib29sIE9wdGlvbnM6OnNldE9w
dGlvbldpdGhvdXRBbGlhcyhjb25zCiAKICAgICBjb25zdCBjaGFyKiB2YWx1ZVN0ciA9IGVxdWFs
U3RyICsgMTsKIAotICAgIC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNpZnkg
YXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZworICAgIC8vIEZvciBlYWNoIG9wdGlv
biwgY2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhcmcgaXMgYSBtYXRjaC4gSWYgc28sIHNldCB0aGUg
YXJnCiAgICAgLy8gaWYgdGhlIHZhbHVlIG1ha2VzIHNlbnNlLiBPdGhlcndpc2UsIG1vdmUgb24g
dG8gY2hlY2tpbmcgdGhlIG5leHQgb3B0aW9uLgogI2RlZmluZSBTRVRfT1BUSU9OX0lGX01BVENI
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSBcCiAgICAgaWYgKHN0cmxlbigjbmFtZV8pID09IHN0YXRpY19jYXN0PHNpemVfdD4oZXF1YWxT
dHIgLSBhcmcpICAgICAgXAogICAgICAgICAmJiAhc3RybmNtcChhcmcsICNuYW1lXywgZXF1YWxT
dHIgLSBhcmcpKSB7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6
YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICAgXAotICAgICAgICAgICAg
JiYgIWlzQXZhaWxhYmxlKG5hbWVfIyNJRCwgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkg
XAorICAgICAgICBpZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2YWlsYWJpbGl0
eTo6Tm9ybWFsICAgIFwKKyAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShPcHRpb25JRDo6bmFt
ZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICB2YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHBh
cnNlKHZhbHVlU3RyLCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAo
c3VjY2VzcykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC04MTEsMTAgKzgxMSwxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxP
cHRpb25zKFN0cmluZ0J1aWxkCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0K
IAotICAgIGZvciAoaW50IGlkID0gMDsgaWQgPCBudW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKKyAg
ICBmb3IgKHNpemVfdCBpZCA9IDA7IGlkIDwgTnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CiAgICAg
ICAgIGlmIChzZXBhcmF0b3IgJiYgaWQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBh
cmF0b3IpOwotICAgICAgICBkdW1wT3B0aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxJ
RD4oaWQpLCBvcHRpb25IZWFkZXIsIG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsK
KyAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9uSUQ+
KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CiAg
ICAgfQogfQogCkBAIC04MzAsMTAgKzgzMCwxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRp
b25zKEZJTEUqIHN0cmVhCiAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uczo6SUQgaWQsCit2b2lk
IE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVsIGxl
dmVsLCBPcHRpb25JRCBpZCwKICAgICBjb25zdCBjaGFyKiBoZWFkZXIsIGNvbnN0IGNoYXIqIGZv
b3RlciwgRHVtcERlZmF1bHRzT3B0aW9uIGR1bXBEZWZhdWx0c09wdGlvbikKIHsKLSAgICBpZiAo
aWQgPj0gbnVtYmVyT2ZPcHRpb25zKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGlkKSA+
PSBOdW1iZXJPZk9wdGlvbnMpCiAgICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCiAK
ICAgICBPcHRpb24gb3B0aW9uKGlkKTsKQEAgLTg3NSwyOSArODc1LDcxIEBAIHZvaWQgT3B0aW9u
czo6ZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCkKICAgICAgICAgQ1JBU0goKTsKIH0KIAorT3B0
aW9uOjpPcHRpb24oT3B0aW9uSUQgaWQpCisgICAgOiBtX2lkKGlkKQoreworICAgIHVuc2lnbmVk
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVT
cGVjaWZpY0luZGV4ID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmlj
SW5kZXg7CisgICAgT3B0aW9uVHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lu
ZGV4XS50eXBlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisKKyNkZWZpbmUgSEFORExFX0NBU0Uo
T3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblR5cGVf
OiBcCisgICAgICAgIEFTU0VSVCh0eXBlU3BlY2lmaWNJbmRleCA8IE51bWJlck9mIyNPcHRpb25U
eXBlXyMjT3B0aW9ucyk7IFwKKyAgICAgICAgbV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25m
aWcudHlwZSMjT3B0aW9uVHlwZV8jI09wdGlvbnNbdHlwZVNwZWNpZmljSW5kZXhdOyBcCisgICAg
ICAgIGJyZWFrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKEhBTkRMRV9DQVNFKQor
I3VuZGVmIEhBTkRMRV9DQVNFCisgICAgfQorfQorCitjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZh
dWx0T3B0aW9uKCkgY29uc3QKK3sKKyAgICBPcHRpb24gcmVzdWx0OworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVTcGVj
aWZpY0luZGV4ID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmljSW5k
ZXg7CisgICAgT3B0aW9uVHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2luZGV4
XS50eXBlOworCisgICAgcmVzdWx0Lm1faWQgPSBtX2lkOworICAgIHN3aXRjaCAodHlwZSkgewor
CisjZGVmaW5lIEhBTkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0
aW9uVHlwZUlEOjpPcHRpb25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5k
ZXggPCBOdW1iZXJPZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAgIHJlc3VsdC5t
X3ZhbCMjT3B0aW9uVHlwZV8gPSBnX2pzY0NvbmZpZy50eXBlIyNPcHRpb25UeXBlXyMjRGVmYXVs
dE9wdGlvbnNbdHlwZVNwZWNpZmljSW5kZXhdOyBcCisgICAgICAgIGJyZWFrOworCisgICAgRk9S
X0VBQ0hfSlNDX09QVElPTl9UWVBFKEhBTkRMRV9DQVNFKQorI3VuZGVmIEhBTkRMRV9DQVNFCisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNl
IE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFs
Qm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgor
ICAgICAgICBidWlsZGVyLmFwcGVuZChtX3ZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKLSAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxVbnNpZ25lZCk7CisgICAgY2FzZSBPcHRp
b25UeXBlSUQ6OlVuc2lnbmVkOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFVu
c2lnbmVkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgot
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbFNpemUpOworICAgIGNhc2Ug
T3B0aW9uVHlwZUlEOjpTaXplOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFNp
emUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2VudHJ5LnZhbERvdWJs
ZSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkRvdWJsZToKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihtX3ZhbERvdWJsZSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgT3B0aW9uczo6VHlwZTo6SW50MzI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KG1fZW50cnkudmFsSW50MzIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxJbnQzMik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7CisgICAgY2FzZSBPcHRpb25U
eXBlSUQ6Ok9wdGlvblJhbmdlOgorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3ZhbE9wdGlvblJh
bmdlLnJhbmdlU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6Ok9wdGlvblN0cmluZzogewotICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX2VudHJ5
LnZhbE9wdGlvblN0cmluZzsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uU3RyaW5nOiB7
CisgICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fdmFsT3B0aW9uU3RyaW5nOwogICAgICAg
ICBpZiAoIW9wdGlvbikKICAgICAgICAgICAgIG9wdGlvbiA9ICIiOwogICAgICAgICBidWlsZGVy
LmFwcGVuZCgnIicpOwpAQCAtOTA1LDggKzk0Nyw4IEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDogewotICAg
ICAgICBidWlsZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV9lbnRyeS52YWxH
Q0xvZ0xldmVsKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWw6IHsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fdmFsR0NMb2dMZXZl
bCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtOTE1LDIzICs5NTcsMjMgQEAg
dm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcgogYm9vbCBPcHRpb246Om9w
ZXJhdG9yPT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUo
KSkgewotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fZW50
cnkudmFsQm9vbCA9PSBvdGhlci5tX2VudHJ5LnZhbEJvb2w7Ci0gICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpVbnNpZ25lZDoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQgPT0gb3Ro
ZXIubV9lbnRyeS52YWxVbnNpZ25lZDsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6Ci0g
ICAgICAgIHJldHVybiBtX2VudHJ5LnZhbFNpemUgPT0gb3RoZXIubV9lbnRyeS52YWxTaXplOwot
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICByZXR1cm4gKG1fZW50cnku
dmFsRG91YmxlID09IG90aGVyLm1fZW50cnkudmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX2Vu
dHJ5LnZhbERvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkpOwot
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6SW50MzI6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZh
bEludDMyID09IG90aGVyLm1fZW50cnkudmFsSW50MzI7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpPcHRpb25SYW5nZToKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFu
Z2VTdHJpbmcoKSA9PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7
Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6Ci0gICAgICAgIHJldHVybiAo
bV9lbnRyeS52YWxPcHRpb25TdHJpbmcgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25TdHJpbmcp
Ci0gICAgICAgICAgICB8fCAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV9lbnRy
eS52YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX2VudHJ5LnZhbE9wdGlvblN0cmluZywgb3Ro
ZXIubV9lbnRyeS52YWxPcHRpb25TdHJpbmcpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdD
TG9nTGV2ZWw6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9nTGV2ZWwgPT0gb3RoZXIu
bV9lbnRyeS52YWxHQ0xvZ0xldmVsOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgorICAg
ICAgICByZXR1cm4gbV92YWxCb29sID09IG90aGVyLm1fdmFsQm9vbDsKKyAgICBjYXNlIE9wdGlv
blR5cGVJRDo6VW5zaWduZWQ6CisgICAgICAgIHJldHVybiBtX3ZhbFVuc2lnbmVkID09IG90aGVy
Lm1fdmFsVW5zaWduZWQ7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlNpemU6CisgICAgICAgIHJl
dHVybiBtX3ZhbFNpemUgPT0gb3RoZXIubV92YWxTaXplOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpEb3VibGU6CisgICAgICAgIHJldHVybiAobV92YWxEb3VibGUgPT0gb3RoZXIubV92YWxEb3Vi
bGUpIHx8IChzdGQ6OmlzbmFuKG1fdmFsRG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fdmFs
RG91YmxlKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkludDMyOgorICAgICAgICByZXR1cm4g
bV92YWxJbnQzMiA9PSBvdGhlci5tX3ZhbEludDMyOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpP
cHRpb25SYW5nZToKKyAgICAgICAgcmV0dXJuIG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmco
KSA9PSBvdGhlci5tX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7CisgICAgY2FzZSBPcHRp
b25UeXBlSUQ6Ok9wdGlvblN0cmluZzoKKyAgICAgICAgcmV0dXJuIChtX3ZhbE9wdGlvblN0cmlu
ZyA9PSBvdGhlci5tX3ZhbE9wdGlvblN0cmluZykKKyAgICAgICAgICAgIHx8IChtX3ZhbE9wdGlv
blN0cmluZyAmJiBvdGhlci5tX3ZhbE9wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fdmFsT3B0aW9u
U3RyaW5nLCBvdGhlci5tX3ZhbE9wdGlvblN0cmluZykpOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpHQ0xvZ0xldmVsOgorICAgICAgICByZXR1cm4gbV92YWxHQ0xvZ0xldmVsID09IG90aGVyLm1f
dmFsR0NMb2dMZXZlbDsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjUwMjAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxzdGRp
bnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC01Mywz
OSArNTIsMTkgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogCiBj
bGFzcyBPcHRpb25zIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIER1bXBMZXZlbCB7CisgICAg
ZW51bSBjbGFzcyBEdW1wTGV2ZWwgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSA9IDAsCiAgICAg
ICAgIE92ZXJyaWRkZW4sCiAgICAgICAgIEFsbCwKICAgICAgICAgVmVyYm9zZQogICAgIH07CiAK
LSAgICBlbnVtIGNsYXNzIEF2YWlsYWJpbGl0eSB7CisgICAgZW51bSBjbGFzcyBBdmFpbGFiaWxp
dHkgOiB1aW50OF90IHsKICAgICAgICAgTm9ybWFsID0gMCwKICAgICAgICAgUmVzdHJpY3RlZCwK
ICAgICAgICAgQ29uZmlndXJhYmxlCiAgICAgfTsKIAotI2RlZmluZSBERUNMQVJFX09QVElPTl9J
RCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9u
XykgXAotICAgIG5hbWVfIyNJRCwKLQotICAgIGVudW0gSUQgewotICAgICAgICBGT1JfRUFDSF9K
U0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lEKQotICAgICAgICBudW1iZXJPZk9wdGlvbnMKLSAg
ICB9OwotI3VuZGVmIERFQ0xBUkVfT1BUSU9OX0lECi0KLSAgICBlbnVtIGNsYXNzIFR5cGUgewot
ICAgICAgICBCb29sLAotICAgICAgICBVbnNpZ25lZCwKLSAgICAgICAgRG91YmxlLAotICAgICAg
ICBJbnQzMiwKLSAgICAgICAgU2l6ZSwKLSAgICAgICAgT3B0aW9uUmFuZ2UsCi0gICAgICAgIE9w
dGlvblN0cmluZywKLSAgICAgICAgR0NMb2dMZXZlbCwKLSAgICB9OwotCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgLy8gUGFyc2VzIGEgc3Ry
aW5nIG9mIG9wdGlvbnMgd2hlcmUgZWFjaCBvcHRpb24gaXMgb2YgdGhlIGZvcm1hdCAiLS08b3B0
aW9uTmFtZT49PHZhbHVlPiIKQEAgLTEwMiwxMyArODEsMTggQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogCiAj
ZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8oKSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRp
b25zW25hbWVfIyNJRF0udmFsIyN0eXBlXzsgfSAgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKSB7IHJldHVybiBnX2pzY0NvbmZp
Zy5kZWZhdWx0T3B0aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0KLQorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8oKSBcCisgICAgeyBcCisgICAg
ICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3Bl
Y2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisg
ICAgfSAgXAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFt
ZV8jI0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBl
IyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlw
ZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KICAgICBGT1JfRUFDSF9K
U0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRlZiBERUNMQVJFX09QVElP
Tl9BQ0NFU1NPUlMKIAotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxp
dHkpOworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklELCBBdmFpbGFiaWxpdHkp
OwogCiBwcml2YXRlOgogCkBAIC0xMTYsOCArMTAwLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
RW50cnlJbmZvIHsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29uc3QgY2hh
ciogZGVzY3JpcHRpb247Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgT3B0aW9uVHlwZUlE
IHR5cGU7CiAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAgIHVuc2ln
bmVkIHR5cGVTcGVjaWZpY0luZGV4OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBAIC0xMjks
MTIyICsxMTQsNTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uc0lmTmVl
ZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1
bXBMZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRv
ciwgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290ZXIsIER1
bXBEZWZhdWx0c09wdGlvbik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWls
ZGVyJiwgRHVtcExldmVsLCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1
aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25I
ZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKIAog
ICAgIHN0YXRpYyBib29sIHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpOwog
ICAgIHN0YXRpYyBib29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKICAgICBz
dGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGljKGNvbnN0IGNoYXIq
IG5hbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW251bWJl
ck9mT3B0aW9uc107CisgICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW051
bWJlck9mT3B0aW9uc107CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwogfTsKIAogY2xhc3Mg
T3B0aW9uIHsKIHB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQpCi0gICAgICAgIDog
bV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9wdGlvbnNbbV9pZF0pCi0g
ICAgewotICAgIH0KLSAgICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOworCiAgICAgdm9pZCBkdW1w
KFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRp
b24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICBPcHRpb25z
OjpJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFyKiBuYW1lKCkg
Y29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBPcHRpb25z
OjpUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmls
aXR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKKyAgICBPcHRpb25J
RCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLm5hbWU7IH0KKyAg
ICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNfb3B0
aW9uc0luZm9baWRJbmRleCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9wdGlvblR5cGVJRCB0eXBl
KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLnR5cGU7
IH0KKyAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3QgeyByZXR1
cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWlsYWJpbGl0eTsgfQorICAg
IGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gZGVmYXVsdE9wdGlv
bigpOyB9CiAgICAgY29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsKLSAgICAKLSAg
ICBib29sJiBib29sVmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7Ci0gICAgZG91
YmxlJiBkb3VibGVWYWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAgIE9wdGlvblJh
bmdlIG9wdGlvblJhbmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsKCk7
Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAotcHJpdmF0ZToK
LSAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMuCi0gICAg
T3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAgICAgIDogbV9p
ZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
T3B0aW9uczo6SUQgbV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKLX07CiAKLWlubGlu
ZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19CisjZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1Io
T3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBlXygpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05f
VFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IKIAotaW5saW5l
IGNvbnN0IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBP
cHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1pbmxpbmUgT3B0
aW9uczo6VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpz
X29wdGlvbnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpBdmFpbGFiaWxp
dHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpz
X29wdGlvbnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5saW5lIGJvb2wgT3B0aW9u
Ojppc092ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0
aW9uKCk7Ci19Ci0KLWlubGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRp
b25zW21faWRdKTsKLX0KLQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0gICAg
cmV0dXJuIG1fZW50cnkudmFsQm9vbDsKLX0KLQotaW5saW5lIHVuc2lnbmVkJiBPcHRpb246OnVu
c2lnbmVkVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZDsKLX0KK3ByaXZh
dGU6CisgICAgT3B0aW9uKCkgeyB9CiAKLWlubGluZSBkb3VibGUmIE9wdGlvbjo6ZG91YmxlVmFs
KCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxEb3VibGU7Ci19CisgICAgc2l6ZV90IGlkSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1faWQpOyB9CiAKLWlubGlu
ZSBpbnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxJ
bnQzMjsKLX0KKyAgICBPcHRpb25JRCBtX2lkOworICAgIHVuaW9uIHsKIAotaW5saW5lIE9wdGlv
blJhbmdlIE9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZh
bE9wdGlvblJhbmdlOwotfQorI2RlZmluZSBERUNMQVJFX01FTUJFUihPcHRpb25UeXBlXywgdHlw
ZV8pIFwKKyAgICAgICAgdHlwZV8gbV92YWwjI09wdGlvblR5cGVfOworICAgIEZPUl9FQUNIX0pT
Q19PUFRJT05fVFlQRShERUNMQVJFX01FTUJFUikKKyN1bmRlZiBERUNMQVJFX01FTUJFUgogCi1p
bmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQotewotICAgIHJldHVy
biBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0KLQotaW5saW5lIEdDTG9nZ2luZzo6TGV2ZWwm
IE9wdGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsR0NMb2dM
ZXZlbDsKLX0KKyAgICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1MDIwMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE1ICsyNSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkdD
TG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCiBuYW1lc3BhY2UgSlND
IHsKIAogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVm
aW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKIC8vIGFsb25nIHdpdGggdGhl
aXIgdHlwZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucyB2YWx1ZXMgYXJlIGFjdHVh
bGx5Ci0vLyByZWFsaXplZCBhcyBhbiBhcnJheSBvZiBPcHRpb25FbnRyeSBlbGVtZW50cyBpbiBK
U0M6OkNvbmZpZy4KKy8vIHJlYWxpemVkIGFzIGFycmF5cyBvZiBlYWNoIG9mIHRoZSBPcHRpb25U
eXBlcyBpbiBKU0M6OkNvbmZpZy4KIC8vCi0vLyAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpIHdp
bGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAorLy8gICAgIE9w
dGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5cyBvZiBvcHRpb25z
IHZhbHVlcyB3aXRoCiAvLyB0aGUgZGVmYXVsdHMgc3BlY2lmaWVkIGluIEZPUl9FQUNIX0pTQ19P
UFRJT04oKSBiZWxvdy4gQWZ0ZXIgdGhhdCwgdGhlIHZhbHVlcyBjYW4KIC8vIGJlIHByb2dyYW1t
YXRpY2FsbHkgcmVhZCBhbmQgd3JpdHRlbiB0byB1c2luZyBhbiBhY2Nlc3NvciBtZXRob2Qgd2l0
aCB0aGUKIC8vIHNhbWUgbmFtZSBhcyB0aGUgb3B0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIG9wdGlv
biAidXNlSklUIiBjYW4gYmUgcmVhZCBhbmQKQEAgLTU0LDYgKzU3LDY4IEBAIG5hbWVzcGFjZSBK
U0MgewogLy8gY2hlY2tzIGFyZSBkb25lIGFmdGVyIHRoZSBvcHRpb24gdmFsdWVzIGFyZSBzZXQu
IElmIHlvdSBhbHRlciB0aGUgb3B0aW9uCiAvLyB2YWx1ZXMgYWZ0ZXIgdGhlIHNhbml0eSBjaGVj
a3MgKGZvciB5b3VyIG93biB0ZXN0aW5nKSwgdGhlbiB5b3UncmUgbGlhYmxlIHRvCiAvLyBlbnN1
cmUgdGhhdCB0aGUgbmV3IHZhbHVlcyBzZXQgYXJlIHNhbmUgYW5kIHJlYXNvbmFibGUgZm9yIHlv
dXIgb3duIHJ1bi4KKy8vCisvLyBBbnkgbW9kaWZpY2F0aW9ucyB0byBvcHRpb25zIG11c3QgYmUg
ZG9uZSBiZWZvcmUgdGhlIGZpcnN0IFZNIGlzIGluc3RhbnRpYXRlLgorLy8gT24gaW5zdGFudGlh
dGlvbiBvZiB0aGUgZmlyc3QgVk0gaW5zdGFuY2UsIHRoZSBPcHRpb25zIHdpbGwgYmUgd3JpdGUg
cHJvdGVjdGVkCisvLyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIHRoZXJlYWZ0ZXIuCisKK2NsYXNz
IE9wdGlvblJhbmdlIHsKK3ByaXZhdGU6CisgICAgZW51bSBSYW5nZVN0YXRlIHsgVW5pbml0aWFs
aXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07CitwdWJsaWM6CisgICAgT3B0aW9u
UmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCisgICAgeyAvLyBPbmx5IG5lZWRlZCBm
b3IgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaWYgKCFyaHMpIHsKKyAgICAgICAgICAgIG1fc3Rh
dGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7CisgICAg
ICAgICAgICBtX2xvd0xpbWl0ID0gMDsKKyAgICAgICAgICAgIG1faGlnaExpbWl0ID0gMDsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBpbml0KGNv
bnN0IGNoYXIqKTsKKyAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7CisgICAgY29uc3QgY2hh
ciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBt
X3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHNfbnVsbFJhbmdlU3RyOworCisgICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOworICAgIGNv
bnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7CisgICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKKyAgICB1
bnNpZ25lZCBtX2hpZ2hMaW1pdDsKK307CisKKyNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTl9U
WVBFKHYpIFwKKyAgICB2KEJvb2wsIGJvb2wpIFwKKyAgICB2KFVuc2lnbmVkLCB1bnNpZ25lZCkg
XAorICAgIHYoRG91YmxlLCBkb3VibGUpIFwKKyAgICB2KEludDMyLCBpbnQzMl90KSBcCisgICAg
dihTaXplLCBzaXplX3QpIFwKKyAgICB2KE9wdGlvblJhbmdlLCBPcHRpb25SYW5nZSkgXAorICAg
IHYoT3B0aW9uU3RyaW5nLCBjb25zdCBjaGFyKikgXAorICAgIHYoR0NMb2dMZXZlbCwgR0NMb2dn
aW5nOjpMZXZlbCkgXAorCituYW1lc3BhY2UgT3B0aW9uVHlwZXMgeworCisjZGVmaW5lIERFQ0xB
UkVfVFlQRVMoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdXNpbmcgT3B0aW9uVHlwZV8gPSB0
eXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9UWVBFUykKKyN1bmRl
ZiBERUNMQVJFX1RZUEVTCisKK30gLy8gbmFtZXNwYWNlIE9wdGlvblR5cGVzCisKK2VudW0gY2xh
c3MgT3B0aW9uVHlwZUlEIDogdWludDhfdCB7CisKKyNkZWZpbmUgREVDTEFSRV9UWVBFSUQoT3B0
aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgT3B0aW9uVHlwZV8sCisgICAgRk9SX0VBQ0hfSlNDX09Q
VElPTl9UWVBFKERFQ0xBUkVfVFlQRUlEKQorI3VuZGVmIERFQ0xBUkVfVFlQRUlECisKK307CiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTih2KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB2KEJvb2wsIHVzZUtlcm5UQ1NNLCB0cnVlLCBOb3JtYWws
ICJOb3RlOiB0aGlzIG5lZWRzIHRvIGdvIGJlZm9yZSBvdGhlciBvcHRpb25zIHNpbmNlIHRoZXkg
ZGVwZW5kIG9uIHRoaXMgdmFsdWUuIikgXApAQCAtNTAzLDYgKzU2OCwyOSBAQCBlbnVtIE9wdGlv
bkVxdWl2YWxlbmNlIHsKICAgICB2KG1heGltdW1GVExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
LCBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAgICAgdiht
YXhpbXVtSW5saW5pbmdDYWxsZXJTaXplLCBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRlY29kZUNv
c3QsIFNhbWVPcHRpb24pIFwKIAorI2RlZmluZSBERUNMQVJFX09QVElPTl9JRCh0eXBlXywgbmFt
ZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIG5h
bWVfLAorZW51bSBjbGFzcyBPcHRpb25JRCA6IHVpbnQxNl90IHsKKyAgICBGT1JfRUFDSF9KU0Nf
T1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lEKQorfTsKKyN1bmRlZiBERUNMQVJFX09QVElPTl9JRAor
CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnZhbGlkT3B0aW9uSW5kZXggPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTxPcHRpb25UeXBlSUQgdHlwZSwg
T3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCkK
K3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworI2RlZmluZSBDT1VOVF9JTkRFWF9BTkRfRklORF9N
QVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bmFtZV8pIFwKKyAgICAgICAgcmV0dXJu
IGluZGV4OyBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBlXykgXAorICAgICAg
ICBpbmRleCsrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9JTkRFWF9BTkRfRklO
RF9NQVRDSCk7CisjdW5kZWYgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gKKyAgICByZXR1cm4g
SW52YWxpZE9wdGlvbkluZGV4OworfQogCiBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZK
U0NPcHRpb25zKCkKIHsKQEAgLTUxNSw1ICs2MDMsMjQgQEAgY29uc3RleHByIHNpemVfdCBjb3Vu
dE51bWJlck9mSlNDT3B0aW9ucwogCiBjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9ucyA9
IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworY29uc3Rl
eHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQgdHlw
ZSkKK3sKKyAgICBzaXplX3QgY291bnQgPSAwOworI2RlZmluZSBDT1VOVF9PUFRJT04odHlwZV8s
IG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAg
ICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGNvdW50Kys7Cisg
ICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9PUFRJT04pOworI3VuZGVmIENPVU5UX09QVElP
TgorICAgIHJldHVybiBjb3VudDsKK30KIAorY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkJvb2xP
cHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpCb29s
KTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnMgPSBjb3VudE51bWJl
ck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OlVuc2lnbmVkKTsKK2NvbnN0ZXhwciBz
aXplX3QgTnVtYmVyT2ZEb3VibGVPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5
cGUoT3B0aW9uVHlwZUlEOjpEb3VibGUpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkludDMy
T3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6SW50
MzIpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZlNpemVPcHRpb25zID0gY291bnROdW1iZXJP
ZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpTaXplKTsKK2NvbnN0ZXhwciBzaXplX3Qg
TnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlw
ZShPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZP
cHRpb25TdHJpbmdPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9u
VHlwZUlEOjpPcHRpb25TdHJpbmcpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkdDTG9nTGV2
ZWxPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpH
Q0xvZ0xldmVsKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379372</attachid>
            <date>2019-09-23 08:31:12 -0700</date>
            <delta_ts>2019-10-16 10:36:10 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-202105.patch</filename>
            <type>text/plain</type>
            <size>44076</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMjMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNSBA
QAorMjAxOS0wOS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNpemUgb2Yg
dGhlIEpTQzo6Q29uZmlnIG5lZWRlZCB0byBzdG9yZSB0aGUgT3B0aW9ucyBpcyBub3cgcmVkdWNl
ZCB0byA0SworICAgICAgICBpbnN0ZWFkIG9mIDE2SywgZW5hYmxlZCBieSBjb25zdGV4cHIgdGVt
cGxhdGUgbWFnaWMuCisKKyAgICAgICAgMS4gSW5zdGVhZCBvZiBhbGwgb3B0aW9ucyBpbiBhIGxh
cmdlIGFycmF5IG9mIE9wdGlvbkVudHJ5ICh3aGljaCBpcyBhIHVuaW9uIG9mCisgICAgICAgICAg
IGFsbCB0aGUgb3B0aW9uIHR5cGVzKSwgd2Ugbm93IGhhdmUgc2VwYXJhdGUgYXJyYXlzIGZvciBl
YWNoIG9mIHRoZSB0eXBlcyBvZgorICAgICAgICAgICBvcHRpb25zLiAgRm9yIGV4YW1wbGUsCisK
KyAgICAgICAgICAgICAgICBSZW1vdmVkIGdfanNjQ29uZmlnLm9wdGlvbnNbXS4KKyAgICAgICAg
ICAgICAgICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlQm9vbE9wdGlvbnNbXS4KKyAgICAgICAgICAg
ICAgICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlSW50MzJPcHRpb25zW10uCisgICAgICAgICAgICAg
ICAgQWRkZWQgZ19qc2NDb25maWcudHlwZURvdWJsZU9wdGlvbnNbXS4KKyAgICAgICAgICAgICAg
ICAuLi4KKworICAgICAgICAgICBXZSB1c2VkIHRvIGZpbmQgdGhlIHN0b3JhZ2UgZm9yIHRoZSBv
cHRpb24gdXNpbmcgZ19qc2NDb25maWcub3B0aW9uc1tPcHRpb25zOjpJRF0uCisgICAgICAgICAg
IFdlIG5vdyBmaW5kIHRoZSBzdG9yYWdlIGZvciBlYWNoIHR5cGUgb2Ygb3B0aW9uIHVzaW5nCisg
ICAgICAgICAgIGdfanNjQ29uZmlnLm9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0
aW9uVHlwZUlELCBPcHRpb25JRD4oKV0uICBGb3IKKyAgICAgICAgICAgZXhhbXBsZSwgT3B0aW9u
czo6dXNlSklUKCkgdXNlZCB0byBiZSBpbXBsZW1lbnRlZCBhczoKKworICAgICAgICAgICAgICAg
aW5saW5lIGJvb2wmIE9wdGlvbnM6OnVzZUpJVCgpCisgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zW09wdGlvbnM6OnVzZUpJVElE
XTsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAuLi4gd2hpY2ggaXMgbm93IHJlcGxh
Y2VkIHdpdGg6CisKKyAgICAgICAgICAgICAgIGlubGluZSBib29sJiBPcHRpb25zOjp1c2VKSVQo
KQorICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ19qc2NDb25m
aWcudHlwZUJvb2xPcHRpb25zW29wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6
Qm9vbCwgT3B0aW9uSUQ6OnVzZUpJVD4oKV07CisgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
Mi4gSW50cm9kdWNlIHRoZSBvcHRpb25UeXBlU3BlY2lmaWNJbmRleCgpIGNvbnN0ZXhwciB0ZW1w
bGF0ZSBmdW5jdGlvbiBmb3IKKyAgICAgICAgICAgY29tcHV0aW5nIHRoZSBpbmRleCBvZiBlYWNo
IG9wdGlvbiBpbiB0aGVpciByZXNwZWN0aXZlIHR5cGUgc3BlY2lmaWMgb3B0aW9ucworICAgICAg
ICAgICBhcnJheS4KKworICAgICAgICAzLiBJbnRyb2R1Y2UgT3B0aW9uVHlwZXMsIE9wdGlvblR5
cGVJRCwgYW5kIE9wdGlvbklELgorCisgICAgICAgICAgIFRoZSBPcHRpb25UeXBlcyBuYW1lc3Bh
Y2UgcmVwbGFjZXMgT3B0aW9uRW50cnkgYXMgdGhlIGNvbnRhaW5lciBvZiBvcHRpb24gdHlwZXMu
CisgICAgICAgICAgIFRoZSBPcHRpb25JRCBlbnVtIGNsYXNzIHJlcGxhY2VzIE9wdGlvbnM6OklE
LgorICAgICAgICAgICBUaGUgT3B0aW9uVHlwZUlEIGVudW0gY2xhc3MgaXMgbmV3IGFuZCBpcyB1
c2VkIHRvZ2V0aGVyIHdpdGggT3B0aW9uSUQgaW4KKyAgICAgICAgICAgICAgIGNvbnN0ZXhwciB0
ZW1wbGF0ZXMgdG8gY29tcHV0ZSB0aGUgdHlwZVNwZWNpZmljSW5kZXggb2Ygb3B0aW9ucy4KKwor
ICAgICAgICA0LiBSZW1vdmVkIHRoZSBPcHRpb25FbnRyeSBzdHJ1Y3QgYW5kIE9wdGlvbkVudHJ5
LmguICBBZnRlciAoMSksIHRoaXMgc3RydWN0IGlzCisgICAgICAgICAgIG9ubHkgdXNlZCBpbiB0
aGUgT3B0aW9uIGNsYXNzLiAgV2UganVzdCBtb3ZlZCB0aGUgdW5pb24gb2Ygb3B0aW9uIHR5cGVz
ICh0aGF0CisgICAgICAgICAgIE9wdGlvbkVudHJ5IGVtYmVkcykgaW50byB0aGUgT3B0aW9uIGNs
YXNzLgorCisgICAgICAgICAgIE1vdmVkIGNsYXNzIE9wdGlvblJhbmdlIGludG8gT3B0aW9uc0xp
c3QuaC4KKworICAgICAgICA1LiBSZW1vdmVkIHRoZSBsYXJnZSBPcHRpb25FbnRyeSBhcnJheXMg
ZnJvbSBKU0M6OkNvbmZpZy4KKyAgICAgICAgICAgQWRkZWQgdHlwZSBzcGVjaWZpYyBvcHRpb25z
IGFycmF5cy4KKyAgICAgICAgICAgQWxzbyBvcmRlcmVkIHRoZXNlIGFycmF5cyB0byBtYXhpbWl6
ZSBjb21wYWN0bmVzcyBhbmQgbWluaW1pemUgaW50ZXJuYWwgZnJhZ21lbnRhdGlvbi4KKworICAg
ICAgICA2LiBDaGFuZ2VkIHNjYWxlSklUUG9saWN5KCkgdG8gZ28gZGlyZWN0bHkgdG8gZ19qc2ND
b25maWcudHlwZUludDMyT3B0aW9uc1tdCisgICAgICAgICAgIGluc3RlYWQgb2YgZ29pbmcgdGhy
b3VnaCB0aGUgT3B0aW9uIHdyYXBwZXIgb2JqZWN0LiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGxp
ZnkKKyAgICAgICAgICAgdGhpbmdzIGFuZCBtYWtlIHRoZSBPcHRpb24gY2xhc3MgYSByZWFkIG9u
bHkgaW50ZXJmYWNlIG9mIG9wdGlvbnMuCisKKyAgICAgICAgNy4gQ2hhbmdlZCBPcHRpb25zOjpp
bml0aWFsaXplKCkgdG8gb25seSBjb21wdXRlIHRoZSBvcHRpb24gZGVmYXVsdCB2YWx1ZSBvbmNl
LgorICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbnNM
aXN0IG1heSBub3QgYWx3YXlzIGJlIGEgY29uc3RhbnQuCisgICAgICAgICAgIFNvbWV0aW1lcywg
aXQgaXMgYSBmdW5jdGlvbiBjYWxsLgorCisgICAgICAgIDguIFRoZSBPcHRpb24gY2xhc3Mgbm93
IG9ubHkgZ2l2ZXMgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgb3B0aW9ucy4KKworICAgICAgICAg
ICBUaGUgT3B0aW9uIGNsYXNzJyByb2xlIGlzIHRvIHByb3ZpZGUgYW4gaW50ZXJmYWNlIGZvciBy
ZWFkaW5nIGFuIG9wdGlvbiBhdCBhbnkKKyAgICAgICAgICAgZ2l2ZW4gT3B0aW9uSUQgd2l0aG91
dCBmaXJzdCBrbm93aW5nIGFib3V0IHRoZSB0eXBlIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24uCisg
ICAgICAgICAgIEl0IGlzIHVzZWZ1bCBmb3IgaXRlcmF0aW5nIG9wdGlvbnMsIGFuZCBpcyBjdXJy
ZW50bHkgb25seSB1c2VkIGJ5CisgICAgICAgICAgIE9wdGlvbnM6OmR1bXBPcHRpb24oKS4KKwor
ICAgICAgICAgICBUZWNobmljYWxseSwgd2UgY291bGQgbWVyZ2UgYWxsIHRoZSBPcHRpb24gY2xh
c3MgY29kZSBpbnRvIGl0cyBzaW5nbGUgY2xpZW50LgorICAgICAgICAgICBXZSBvcHRlZCBub3Qg
dG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBhbW91bnQgb2YgY29kZSBpcyBub24tdHJpdmlhbCwgYW5k
IHRoZQorICAgICAgICAgICBPcHRpb24gY2xhc3MgZG9lcyBhIGdvb2Qgam9iIG9mIGVuY2Fwc3Vs
YXRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9u
cy5jcHA6CisgICAgICAgIChqc2NPcHRpb25zU2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9u
c0dldFZhbHVlKToKKyAgICAgICAgKGpzY19vcHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAoanNj
X29wdGlvbnNfZ2V0X29wdGlvbl9ncm91cCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uRW50cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpPcHRpb25zOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChKU0M6Om92ZXJyaWRlT3B0aW9uV2l0
aEhldXJpc3RpYyk6CisgICAgICAgIChKU0M6OnNjYWxlSklUUG9saWN5KToKKyAgICAgICAgKEpT
Qzo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6
Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246Ok9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbjo6ZGVmYXVsdE9wdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
Ok9wdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlv
bjo6aWQgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpPcHRpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9u
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjphdmFpbGFiaWxpdHkgY29uc3Qp
OgorICAgICAgICAoSlNDOjpPcHRpb246OmlzT3ZlcnJpZGRlbiBjb25zdCk6CisgICAgICAgIChK
U0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjppZEluZGV4IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZWZhdWx0T3B0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T3B0aW9uOjpib29sVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
T3B0aW9uOjp1bnNpZ25lZFZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZG91
YmxlVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjppbnQzMlZhbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPcHRpb246Om9wdGlvblN0cmluZ1ZhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Ok9wdGlvbjo6Z2NMb2dMZXZlbFZhbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9P
cHRpb25zTGlzdC5oOgorICAgICAgICAoSlNDOjpPcHRpb25SYW5nZTo6b3BlcmF0b3I9ICk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgIChK
U0M6Om9wdGlvblR5cGVTcGVjaWZpY0luZGV4KToKKyAgICAgICAgKEpTQzo6Y291bnROdW1iZXJP
ZkpTQ09wdGlvbnNPZlR5cGUpOgorCiAyMDE5LTA5LTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICB0ZXN0bWFzbTogaW50ZWdlciBvcGVyYW5kcyBsb2Fk
ZWQgYXMgdW5zaWduZWQgdmFsdWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkxOSw3ICs5MTksNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlv
blNjb3BlLmgKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5oCiAgICAgcnVudGltZS9PcGVy
YXRpb25zLmgKLSAgICBydW50aW1lL09wdGlvbkVudHJ5LmgKICAgICBydW50aW1lL09wdGlvbnMu
aAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2
aXNpb24gMjUwMjAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFu
IGpzY09wdGlvbnNTZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5
cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBc
CiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVz
Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIGlmICghdmFsdWVGcm9tR1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVf
KCkgPSB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x
ODYsNyArMTg2LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAog
ewogI2RlZmluZSBHRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVf
LCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAg
ICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9u
czo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVU
b0dldCwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJl
dHVybiBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfQpAQCAtNjE2LDggKzYxNiw4IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFj
aChKU0NPcHRpb25zRnVuYyAKIAogI2RlZmluZSBWSVNJVF9PUFRJT04odHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoT3B0
aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0
eTo6Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6bmFt
ZV8jI0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKLSAgICAg
ICAgT3B0aW9uRW50cnk6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5h
bWVfLCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKKyAgICAgICAg
T3B0aW9uVHlwZXM6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgYXV0byBvcHRpb25UeXBlID0ganNjT3B0aW9uc1R5cGUoZGVmYXVs
dFZhbHVlKTsgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKGZ1bmN0aW9uICgjbmFtZV8s
IG9wdGlvblR5cGUsIGRlc2NyaXB0aW9uXywgdXNlckRhdGEpKSAgICAgIFwKICAgICAgICAgICAg
IHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTY2Niw3ICs2NjYsNyBAQCBHT3B0aW9uR3JvdXAqIGpzY19vcHRpb25zX2dldF9v
cHRpb25fZ3JvCiAgICAgR0FycmF5KiBlbnRyaWVzID0gZ19hcnJheV9uZXcoVFJVRSwgVFJVRSwg
c2l6ZW9mKEdPcHRpb25FbnRyeSkpOwogI2RlZmluZSBSRUdJU1RFUl9PUFRJT04odHlwZV8sIG5h
bWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBp
ZiAoT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWls
YWJpbGl0eTo6Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9u
czo6bmFtZV8jI0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwK
KyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBPcHRpb25z
OjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBuYW1lKGdfc3RyZHVwX3ByaW50ZigianNjLSVzIiwgI25hbWVfKSk7ICAgICAgIFwKICAg
ICAgICAgZW50cmllcyA9IGdfYXJyYXlfc2V0X3NpemUoZW50cmllcywgZW50cmllcy0+bGVuICsg
MSk7IFwKICAgICAgICAgR09wdGlvbkVudHJ5KiBlbnRyeSA9ICZnX2FycmF5X2luZGV4KGVudHJp
ZXMsIEdPcHRpb25FbnRyeSwgZW50cmllcy0+bGVuIC0gMSk7IFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZN
SW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTMwMjJENTFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUz
MThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRF
MUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87
IH07CiAJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAz
MkJFODggLyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzAy
MzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9w
dGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNjFBRERCN0FEMDA1
NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTNBMDZBNjFD
MTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZERCAvKiBK
SVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTA3MCw3ICs1MDY5LDYgQEAKIAkJRkUzNUMy
RkEyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wdGlvbnMucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5y
dWJ5OyBwYXRoID0gT3B0aW9ucy5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUz
NUMyRkIyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wY29kZUdyb3VwLnJiICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucnVieTsgcGF0aCA9IE9wY29kZUdyb3VwLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTM1QzJGQzIxQjFFNkM3MDAwRjRDQTggLyogTWV0YWRhdGEucmIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gTWV0YWRhdGEucmI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25FbnRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uc0xpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xs
YXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczNzAsNyArNzM2
OCw2IEBACiAJCQkJRTM5RUVBRjIyMjgxMjQ0QzAwODQ3NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCiAJCQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2
MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAv
KiBPcGVyYXRpb25zLmggKi8sCi0JCQkJRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlv
bkVudHJ5LmggKi8sCiAJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovLAogCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJ
RkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8sCkBAIC05MzUzLDcg
KzkzNTAsNiBAQAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1Rv
QjMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExM
b3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGOTE5RDBCQUMxMDBC
MUQxQjUgLyogRlRMT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUzODQyMzIyMzI0
RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMx
QzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJFMDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
CShyZXZpc2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ND
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIk9wdGlvbkVudHJ5LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3QuaCIKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTM2LDEyICszNSwxMiBAQCBjbGFzcyBG
aXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I7CiAKICNpZiBDUFUoQVJNNjQpIHx8IFBMQVRG
T1JNKFdBVENIT1MpCiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VTaXplID0gMTYgKiBLQjsKK2NvbnN0
ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNlbHNlCiBj
b25zdGV4cHIgc2l6ZV90IFBhZ2VTaXplID0gNCAqIEtCOworY29uc3RleHByIHNpemVfdCBDb25m
aWdTaXplVG9Qcm90ZWN0ID0gMSAqIFBhZ2VTaXplOwogI2VuZGlmCiAKLWNvbnN0ZXhwciBzaXpl
X3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICogS0I7Ci0KICNpZiBFTkFCTEUoU0VQQVJBVEVE
X1dYX0hFQVApCiB1c2luZyBKSVRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbiA9IHZvaWQgKCop
KG9mZl90LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKICNlbmRpZgpAQCAtODIsOCArODEsMjkgQEAg
c3RydWN0IENvbmZpZyB7CiAgICAgICAgICAgICBib29sIHVzZUZhc3RQZXJtaXNpb25zSklUQ29w
eTsKICNlbmRpZgogCi0gICAgICAgICAgICBPcHRpb25FbnRyeSBvcHRpb25zW051bWJlck9mT3B0
aW9uc107Ci0gICAgICAgICAgICBPcHRpb25FbnRyeSBkZWZhdWx0T3B0aW9uc1tOdW1iZXJPZk9w
dGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbE9wdGlvbnNbTnVtYmVyT2ZCb29sT3B0
aW9uc107CisgICAgICAgICAgICBib29sIHR5cGVCb29sRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZC
b29sT3B0aW9uc107CisKKyAgICAgICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2
ZWxPcHRpb25zW051bWJlck9mR0NMb2dMZXZlbE9wdGlvbnNdOworICAgICAgICAgICAgR0NMb2dn
aW5nOjpMZXZlbCB0eXBlR0NMb2dMZXZlbERlZmF1bHRPcHRpb25zW051bWJlck9mR0NMb2dMZXZl
bE9wdGlvbnNdOworCisgICAgICAgICAgICBpbnQzMl90IHR5cGVJbnQzMk9wdGlvbnNbTnVtYmVy
T2ZJbnQzMk9wdGlvbnNdOworICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJEZWZhdWx0T3B0
aW9uc1tOdW1iZXJPZkludDMyT3B0aW9uc107CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHR5cGVV
bnNpZ25lZE9wdGlvbnNbTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnNdOworICAgICAgICAgICAgdW5z
aWduZWQgdHlwZVVuc2lnbmVkRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnNd
OworCisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJsZU9wdGlvbnNbTnVtYmVyT2ZEb3VibGVP
cHRpb25zXTsKKyAgICAgICAgICAgIGRvdWJsZSB0eXBlRG91YmxlRGVmYXVsdE9wdGlvbnNbTnVt
YmVyT2ZEb3VibGVPcHRpb25zXTsKKworICAgICAgICAgICAgc2l6ZV90IHR5cGVTaXplT3B0aW9u
c1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKyAgICAgICAgICAgIHNpemVfdCB0eXBlU2l6ZURlZmF1
bHRPcHRpb25zW051bWJlck9mU2l6ZU9wdGlvbnNdOworCisgICAgICAgICAgICBjb25zdCBjaGFy
KiB0eXBlT3B0aW9uU3RyaW5nT3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOwor
ICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ0RlZmF1bHRPcHRpb25zW051
bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9uc107CisKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5
cGVPcHRpb25SYW5nZU9wdGlvbnNbTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnNdOworICAgICAg
ICAgICAgT3B0aW9uUmFuZ2UgdHlwZU9wdGlvblJhbmdlRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZP
cHRpb25SYW5nZU9wdGlvbnNdOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNpemVb
Q29uZmlnU2l6ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkocmV2aXNpb24gMjUwMjAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgT3B0aW9uUmFuZ2UgewotcHJp
dmF0ZToKLSAgICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5v
cm1hbCwgSW52ZXJ0ZWQgfTsKLXB1YmxpYzoKLSAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChj
b25zdCBpbnQmIHJocykKLSAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgot
ICAgICAgICBpZiAoIXJocykgewotICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7
Ci0gICAgICAgICAgICBtX3JhbmdlU3RyaW5nID0gMDsKLSAgICAgICAgICAgIG1fbG93TGltaXQg
PSAwOwotICAgICAgICAgICAgbV9oaWdoTGltaXQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoY29uc3QgY2hhciopOwotICAgIGJv
b2wgaXNJblJhbmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251
bGxSYW5nZVN0cjsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VT
dHI7Ci0KLSAgICBSYW5nZVN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgY2hhciogbV9yYW5nZVN0
cmluZzsKLSAgICB1bnNpZ25lZCBtX2xvd0xpbWl0OwotICAgIHVuc2lnbmVkIG1faGlnaExpbWl0
OwotfTsKLQotLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKLXVuaW9uIE9wdGlv
bkVudHJ5IHsKLSAgICB1c2luZyBCb29sID0gYm9vbDsKLSAgICB1c2luZyBVbnNpZ25lZCA9IHVu
c2lnbmVkOwotICAgIHVzaW5nIERvdWJsZSA9IGRvdWJsZTsKLSAgICB1c2luZyBJbnQzMiA9IGlu
dDMyX3Q7Ci0gICAgdXNpbmcgU2l6ZSA9IHNpemVfdDsKLSAgICB1c2luZyBPcHRpb25SYW5nZSA9
IEpTQzo6T3B0aW9uUmFuZ2U7Ci0gICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3QgY2hhcio7
Ci0gICAgdXNpbmcgR0NMb2dMZXZlbCA9IEdDTG9nZ2luZzo6TGV2ZWw7Ci0KLSAgICBib29sIHZh
bEJvb2w7Ci0gICAgdW5zaWduZWQgdmFsVW5zaWduZWQ7Ci0gICAgZG91YmxlIHZhbERvdWJsZTsK
LSAgICBpbnQzMl90IHZhbEludDMyOwotICAgIHNpemVfdCB2YWxTaXplOwotICAgIE9wdGlvblJh
bmdlIHZhbE9wdGlvblJhbmdlOwotICAgIGNvbnN0IGNoYXIqIHZhbE9wdGlvblN0cmluZzsKLSAg
ICBHQ0xvZ2dpbmc6OkxldmVsIHZhbEdDTG9nTGV2ZWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZp
c2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgT3B0aW9u
czo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFp
bGFiaWxpdHkpCitib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbklEIGlkLCBPcHRpb25z
OjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQogewogICAgIGlmIChhdmFpbGFiaWxpdHkgPT0g
QXZhaWxhYmlsaXR5OjpSZXN0cmljdGVkKQogICAgICAgICByZXR1cm4gZ19qc2NDb25maWcucmVz
dHJpY3RlZE9wdGlvbnNFbmFibGVkOwpAQCAtMTQwLDI2ICsxNDAsMjYgQEAgYm9vbCBPcHRpb25z
Ojppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZAogICAgIAogICAgIFVOVVNFRF9QQVJBTShpZCk7
CiAjaWYgIWRlZmluZWQoTkRFQlVHKQotICAgIGlmIChpZCA9PSBtYXhTaW5nbGVBbGxvY2F0aW9u
U2l6ZUlEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bWF4U2luZ2xlQWxsb2NhdGlvblNpemUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAjaWYgT1MoREFSV0lOKQotICAgIGlmIChp
ZCA9PSB1c2VTaWdpbGxDcmFzaEFuYWx5emVySUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp1
c2VTaWdpbGxDcmFzaEFuYWx5emVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogI2lm
IEVOQUJMRShBU1NFTUJMRVIpICYmIE9TKExJTlVYKQotICAgIGlmIChpZCA9PSBsb2dKSVRDb2Rl
Rm9yUGVyZklEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bG9nSklUQ29kZUZvclBlcmYpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgaWYgKGlkID09IHRyYWNlTExJbnRFeGVj
dXRpb25JRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnRyYWNlTExJbnRFeGVjdXRpb24pCiAg
ICAgICAgIHJldHVybiAhIUxMSU5UX1RSQUNJTkc7Ci0gICAgaWYgKGlkID09IHRyYWNlTExJbnRT
bG93UGF0aElEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTEludFNsb3dQYXRoKQog
ICAgICAgICByZXR1cm4gISFMTElOVF9UUkFDSU5HOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKFQm
IHZhcmlhYmxlLCBPcHRpb25zOjpJRCBpZCwgY29uc3QgY2hhciogbmFtZSwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK2Jvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGlj
KFQmIHZhcmlhYmxlLCBPcHRpb25JRCBpZCwgY29uc3QgY2hhciogbmFtZSwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKIHsKICAgICBib29sIGF2YWlsYWJsZSA9IChhdmFpbGFi
aWxpdHkgPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwpCiAgICAgICAgIHx8IE9wdGlv
bnM6OmlzQXZhaWxhYmxlKGlkLCBhdmFpbGFiaWxpdHkpOwpAQCAtMjgzLDkgKzI4Myw5IEBAIHZv
aWQgT3B0aW9uUmFuZ2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKIH0KIAogLy8gUmVhbGl6ZSB0
aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9wdGlvbnM6Ci1jb25zdCBPcHRpb25zOjpFbnRyeUlu
Zm8gT3B0aW9uczo6c19vcHRpb25zSW5mb1tPcHRpb25zOjpudW1iZXJPZk9wdGlvbnNdID0gewor
Y29uc3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bTnVtYmVyT2ZP
cHRpb25zXSA9IHsKICNkZWZpbmUgRklMTF9PUFRJT05fSU5GTyh0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIHsgI25hbWVfLCBk
ZXNjcmlwdGlvbl8sIE9wdGlvbnM6OlR5cGU6OnR5cGVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJp
bGl0eV8gfSwKKyAgICB7ICNuYW1lXywgZGVzY3JpcHRpb25fLCBPcHRpb25UeXBlSUQ6OnR5cGVf
LCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8sIG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9w
dGlvblR5cGVJRDo6dHlwZV8sIE9wdGlvbklEOjpuYW1lXz4oKSB9LAogICAgIEZPUl9FQUNIX0pT
Q19PUFRJT04oRklMTF9PUFRJT05fSU5GTykKICN1bmRlZiBGSUxMX09QVElPTl9JTkZPCiB9OwpA
QCAtMjk5LDI2ICsyOTksMjUgQEAgc3RhdGljIHZvaWQgc2NhbGVKSVRQb2xpY3koKQogICAgICAg
ICBzY2FsZUZhY3RvciA9IDAuMDsKIAogICAgIHN0cnVjdCBPcHRpb25Ub1NjYWxlIHsKLSAgICAg
ICAgT3B0aW9uczo6SUQgaWQ7CisgICAgICAgIHNpemVfdCBpbmRleDsKICAgICAgICAgaW50MzJf
dCBtaW5WYWw7CiAgICAgfTsKIAogICAgIHN0YXRpYyBjb25zdCBPcHRpb25Ub1NjYWxlIG9wdGlv
bnNUb1NjYWxlW10gPSB7Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUQWZ0ZXJX
YXJtVXBJRCwgMCB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb25JRCwg
MCB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXBJ
RCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25n
V2FybVVwSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNv
b25JRCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGltaXplU29v
bklELCAyIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRl
cldhcm1VcElELCAyIH0KKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25U
eXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA+KCksIDAg
fSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMy
LCBPcHRpb25JRDo6dGhyZXNob2xkRm9ySklUU29vbj4oKSwgMCB9LAorICAgICAgICB7IG9wdGlv
blR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNp
ZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGlt
aXplU29vbj4oKSwgMSB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlv
blR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb24+KCks
IDIgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6Oklu
dDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMiB9
LAogICAgIH07CiAKLSAgICBjb25zdCBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVv
ZihvcHRpb25zVG9TY2FsZSkgLyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7CisgICAgY29uc3RleHBy
IGludCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlvbnNUb1NjYWxlKSAvIHNp
emVvZihPcHRpb25Ub1NjYWxlKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mT3B0
aW9uc1RvU2NhbGU7IGkrKykgewotICAgICAgICBPcHRpb24gb3B0aW9uKG9wdGlvbnNUb1NjYWxl
W2ldLmlkKTsKLSAgICAgICAgQVNTRVJUKG9wdGlvbi50eXBlKCkgPT0gT3B0aW9uczo6VHlwZTo6
SW50MzIpOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSAqPSBzY2FsZUZhY3RvcjsKLSAgICAg
ICAgb3B0aW9uLmludDMyVmFsKCkgPSBzdGQ6Om1heChvcHRpb24uaW50MzJWYWwoKSwgb3B0aW9u
c1RvU2NhbGVbaV0ubWluVmFsKTsKKyAgICAgICAgaW50MzJfdCYgb3B0aW9uVmFsdWUgPSBnX2pz
Y0NvbmZpZy50eXBlSW50MzJPcHRpb25zW29wdGlvbnNUb1NjYWxlW2ldLmluZGV4XTsKKyAgICAg
ICAgb3B0aW9uVmFsdWUgKj0gc2NhbGVGYWN0b3I7CisgICAgICAgIG9wdGlvblZhbHVlID0gc3Rk
OjptYXgob3B0aW9uVmFsdWUsIG9wdGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7CiAgICAgfQogfQog
CkBAIC00NDEsNyArNDQwLDcgQEAgc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9u
cygpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSkKICAgICAgICAgT3B0aW9u
czo6Y29sbGVjdENvbnRpbnVvdXNseSgpID0gZmFsc2U7CiAKLSAgICBpZiAoT3B0aW9uKE9wdGlv
bnM6OmppdFBvbGljeVNjYWxlSUQpLmlzT3ZlcnJpZGRlbigpKQorICAgIGlmIChPcHRpb24oT3B0
aW9uSUQ6OmppdFBvbGljeVNjYWxlKS5pc092ZXJyaWRkZW4oKSkKICAgICAgICAgc2NhbGVKSVRQ
b2xpY3koKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6Zm9yY2VFYWdlckNvbXBpbGF0aW9uKCkp
IHsKQEAgLTUxNyw5ICs1MTYsMTEgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICAg
ICAgICAgIENvbmZpZzo6ZW5hYmxlUmVzdHJpY3RlZE9wdGlvbnMoKTsKICNlbmRpZgogICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBlYWNoIG9mIHRoZSBvcHRpb25zIHdpdGggdGhlaXIgZGVmYXVs
dCB2YWx1ZXM6Ci0jZGVmaW5lIElOSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgICAgICAgICBuYW1lXygpID0g
ZGVmYXVsdFZhbHVlXzsgXAotICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IGRlZmF1bHRW
YWx1ZV87CisjZGVmaW5lIElOSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSB7IFwKKyAgICAgICAgICAgICAgICBhdXRvIHZh
bHVlID0gZGVmYXVsdFZhbHVlXzsgXAorICAgICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsg
XAorICAgICAgICAgICAgICAgIG5hbWVfIyNEZWZhdWx0KCkgPSB2YWx1ZTsgXAorICAgICAgICAg
ICAgfQogICAgICAgICAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihJTklUX09QVElPTikKICN1bmRl
ZiBJTklUX09QVElPTgogCkBAIC01NDMsNyArNTQ0LDcgQEAgdm9pZCBPcHRpb25zOjppbml0aWFs
aXplKCkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogI2Vsc2UgLy8gUExBVEZPUk0oQ09DT0Ep
CiAjZGVmaW5lIE9WRVJSSURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1ModHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICAgICAgICAg
IG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1lXygpLCBuYW1lXyMjSUQsICJKU0NfIiAj
bmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7CisgICAgICAgICAgICBvdmVycmlk
ZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgT3B0aW9uSUQ6Om5hbWVfLCAiSlNDXyIgI25h
bWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOwogICAgICAgICAgICAgRk9SX0VBQ0hf
SlNDX09QVElPTihPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTKQogI3VuZGVmIE9WRVJS
SURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1MKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKQEAg
LTcyMiwxNiArNzIzLDE1IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNv
bnMKIAogICAgIGNvbnN0IGNoYXIqIHZhbHVlU3RyID0gZXF1YWxTdHIgKyAxOwogCi0gICAgLy8g
Rm9yIGVhY2ggb3B0aW9uLCBjaGVjayBpZiB0aGUgc3BlY2lmeSBhcmcgaXMgYSBtYXRjaC4gSWYg
c28sIHNldCB0aGUgYXJnCisgICAgLy8gRm9yIGVhY2ggb3B0aW9uLCBjaGVjayBpZiB0aGUgc3Bl
Y2lmaWVkIGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKICAgICAvLyBpZiB0aGUg
dmFsdWUgbWFrZXMgc2Vuc2UuIE90aGVyd2lzZSwgbW92ZSBvbiB0byBjaGVja2luZyB0aGUgbmV4
dCBvcHRpb24uCiAjZGVmaW5lIFNFVF9PUFRJT05fSUZfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZh
dWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoc3RybGVu
KCNuYW1lXykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihlcXVhbFN0ciAtIGFyZykgICAgICBcCiAg
ICAgICAgICYmICFzdHJuY21wKGFyZywgI25hbWVfLCBlcXVhbFN0ciAtIGFyZykpIHsgICAgICAg
ICAgICAgICAgXAotICAgICAgICBpZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2
YWlsYWJpbGl0eTo6Tm9ybWFsICAgICBcCi0gICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUobmFt
ZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCisgICAgICAgIGlmIChBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgXAorICAg
ICAgICAgICAgJiYgIWlzQXZhaWxhYmxlKE9wdGlvbklEOjpuYW1lXywgQXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKSkgXAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVf
IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZhbHVl
ID0gKGRlZmF1bHRWYWx1ZV8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFyc2UodmFsdWVTdHIsIHZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzdWNjZXNzKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgbmFtZV8o
KSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTgx
MSwxMCArODExLDEwIEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGQK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCi0gICAgZm9yIChpbnQgaWQg
PSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQrKykgeworICAgIGZvciAoc2l6ZV90IGlkID0g
MDsgaWQgPCBOdW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKICAgICAgICAgaWYgKHNlcGFyYXRvciAm
JiBpZCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlcGFyYXRvcik7Ci0gICAgICAgIGR1
bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PElEPihpZCksIG9wdGlvbkhlYWRl
ciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOworICAgICAgICBkdW1wT3B0aW9u
KGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBvcHRpb25IZWFkZXIs
IG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsKICAgICB9CiB9CiAKQEAgLTgzMCwx
MCArODMwLDEwIEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoRklMRSogc3RyZWEKICAg
ICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
RHVtcExldmVsIGxldmVsLCBPcHRpb25zOjpJRCBpZCwKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlv
bihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLAog
ICAgIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBEdW1wRGVmYXVsdHNP
cHRpb24gZHVtcERlZmF1bHRzT3B0aW9uKQogewotICAgIGlmIChpZCA+PSBudW1iZXJPZk9wdGlv
bnMpCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaWQpID49IE51bWJlck9mT3B0aW9ucykK
ICAgICAgICAgcmV0dXJuOyAvLyBJbGxlZ2FsIG9wdGlvbi4KIAogICAgIE9wdGlvbiBvcHRpb24o
aWQpOwpAQCAtODc1LDI5ICs4NzUsNzEgQEAgdm9pZCBPcHRpb25zOjplbnN1cmVPcHRpb25zQXJl
Q29oZXJlbnQoKQogICAgICAgICBDUkFTSCgpOwogfQogCitPcHRpb246Ok9wdGlvbihPcHRpb25J
RCBpZCkKKyAgICA6IG1faWQoaWQpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9pZCk7CisgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXggPSBPcHRp
b25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlU3BlY2lmaWNJbmRleDsKKyAgICBPcHRpb25U
eXBlSUQgdHlwZSA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGU7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8p
IFwKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwKKyAgICAgICAgQVNTRVJU
KHR5cGVTcGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAor
ICAgICAgICBtX3ZhbCMjT3B0aW9uVHlwZV8gPSBnX2pzY0NvbmZpZy50eXBlIyNPcHRpb25UeXBl
XyMjT3B0aW9uc1t0eXBlU3BlY2lmaWNJbmRleF07IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoSEFORExFX0NBU0UpCisjdW5kZWYgSEFORExFX0NBU0UK
KyAgICB9Cit9CisKK2NvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAor
eworICAgIE9wdGlvbiByZXN1bHQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9pZCk7CisgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXggPSBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlU3BlY2lmaWNJbmRleDsKKyAgICBPcHRpb25UeXBl
SUQgdHlwZSA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGU7CisKKyAgICByZXN1
bHQubV9pZCA9IG1faWQ7CisgICAgc3dpdGNoICh0eXBlKSB7CisKKyNkZWZpbmUgSEFORExFX0NB
U0UoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblR5
cGVfOiBcCisgICAgICAgIEFTU0VSVCh0eXBlU3BlY2lmaWNJbmRleCA8IE51bWJlck9mIyNPcHRp
b25UeXBlXyMjT3B0aW9ucyk7IFwKKyAgICAgICAgcmVzdWx0Lm1fdmFsIyNPcHRpb25UeXBlXyA9
IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNEZWZhdWx0T3B0aW9uc1t0eXBlU3BlY2lm
aWNJbmRleF07IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZ
UEUoSEFORExFX0NBU0UpCisjdW5kZWYgSEFORExFX0NBU0UKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9v
bDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxCb29sID8gInRydWUiIDogImZh
bHNlIik7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkJvb2w6CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fdmFsQm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2VudHJ5LnZhbFVuc2lnbmVkKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6VW5zaWduZWQ6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsVW5zaWduZWQpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fZW50cnkudmFsU2l6ZSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlNpemU6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsU2l6ZSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fZW50cnkudmFsRG91YmxlKTsKKyAgICBjYXNlIE9wdGlv
blR5cGVJRDo6RG91YmxlOgorICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKG1fdmFsRG91YmxlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxJbnQzMik7
CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkludDMyOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX3ZhbEludDMyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpPcHRpb25SYW5nZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxPcHRpb25S
YW5nZS5yYW5nZVN0cmluZygpKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2U6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOiB7
Ci0gICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fZW50cnkudmFsT3B0aW9uU3RyaW5nOwor
ICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6IHsKKyAgICAgICAgY29uc3QgY2hh
ciogb3B0aW9uID0gbV92YWxPcHRpb25TdHJpbmc7CiAgICAgICAgIGlmICghb3B0aW9uKQogICAg
ICAgICAgICAgb3B0aW9uID0gIiI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CkBAIC05
MDUsOCArOTQ3LDggQEAgdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcgog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOiB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX2VudHJ5LnZhbEdDTG9nTGV2ZWwpKTsKKyAgICBj
YXNlIE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbDogeworICAgICAgICBidWlsZGVyLmFwcGVuZChH
Q0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV92YWxHQ0xvZ0xldmVsKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICB9CkBAIC05MTUsMjMgKzk1NywyMyBAQCB2b2lkIE9wdGlvbjo6ZHVtcChT
dHJpbmdCdWlsZGVyJiBidWlsZGVyCiBib29sIE9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRp
b24mIG90aGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpCb29sOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxCb29sID09IG90aGVy
Lm1fZW50cnkudmFsQm9vbDsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAg
ICAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZCA9PSBvdGhlci5tX2VudHJ5LnZhbFVuc2ln
bmVkOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAgICAgcmV0dXJuIG1fZW50
cnkudmFsU2l6ZSA9PSBvdGhlci5tX2VudHJ5LnZhbFNpemU7Ci0gICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpEb3VibGU6Ci0gICAgICAgIHJldHVybiAobV9lbnRyeS52YWxEb3VibGUgPT0gb3RoZXIu
bV9lbnRyeS52YWxEb3VibGUpIHx8IChzdGQ6OmlzbmFuKG1fZW50cnkudmFsRG91YmxlKSAmJiBz
dGQ6OmlzbmFuKG90aGVyLm1fZW50cnkudmFsRG91YmxlKSk7Ci0gICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsSW50MzIgPT0gb3RoZXIubV9l
bnRyeS52YWxJbnQzMjsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAg
ICAgICByZXR1cm4gbV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpID09IG90aGVy
Lm1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsKLSAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6Ok9wdGlvblN0cmluZzoKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5LnZhbE9wdGlvblN0
cmluZyA9PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZykKLSAgICAgICAgICAgIHx8ICht
X2VudHJ5LnZhbE9wdGlvblN0cmluZyAmJiBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZyAm
JiAhc3RyY21wKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nLCBvdGhlci5tX2VudHJ5LnZhbE9wdGlv
blN0cmluZykpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDoKLSAgICAgICAg
cmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX2VudHJ5LnZhbEdDTG9nTGV2
ZWw7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkJvb2w6CisgICAgICAgIHJldHVybiBtX3ZhbEJv
b2wgPT0gb3RoZXIubV92YWxCb29sOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoK
KyAgICAgICAgcmV0dXJuIG1fdmFsVW5zaWduZWQgPT0gb3RoZXIubV92YWxVbnNpZ25lZDsKKyAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAgICAgcmV0dXJuIG1fdmFsU2l6ZSA9PSBv
dGhlci5tX3ZhbFNpemU7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkRvdWJsZToKKyAgICAgICAg
cmV0dXJuIChtX3ZhbERvdWJsZSA9PSBvdGhlci5tX3ZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4o
bV92YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV92YWxEb3VibGUpKTsKKyAgICBjYXNl
IE9wdGlvblR5cGVJRDo6SW50MzI6CisgICAgICAgIHJldHVybiBtX3ZhbEludDMyID09IG90aGVy
Lm1fdmFsSW50MzI7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlOgorICAgICAg
ICByZXR1cm4gbV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpID09IG90aGVyLm1fdmFsT3B0
aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uU3Ry
aW5nOgorICAgICAgICByZXR1cm4gKG1fdmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fdmFsT3B0
aW9uU3RyaW5nKQorICAgICAgICAgICAgfHwgKG1fdmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1f
dmFsT3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV92YWxPcHRpb25TdHJpbmcsIG90aGVyLm1fdmFs
T3B0aW9uU3RyaW5nKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWw6CisgICAg
ICAgIHJldHVybiBtX3ZhbEdDTG9nTGV2ZWwgPT0gb3RoZXIubV92YWxHQ0xvZ0xldmVsOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyNTAyMDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTUzLDM5ICs1MiwxOSBAQCBjb25zdGV4
cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAKIGNsYXNzIE9wdGlvbnMgewogcHVi
bGljOgotICAgIGVudW0gY2xhc3MgRHVtcExldmVsIHsKKyAgICBlbnVtIGNsYXNzIER1bXBMZXZl
bCA6IHVpbnQ4X3QgewogICAgICAgICBOb25lID0gMCwKICAgICAgICAgT3ZlcnJpZGRlbiwKICAg
ICAgICAgQWxsLAogICAgICAgICBWZXJib3NlCiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgQXZh
aWxhYmlsaXR5IHsKKyAgICBlbnVtIGNsYXNzIEF2YWlsYWJpbGl0eSA6IHVpbnQ4X3QgewogICAg
ICAgICBOb3JtYWwgPSAwLAogICAgICAgICBSZXN0cmljdGVkLAogICAgICAgICBDb25maWd1cmFi
bGUKICAgICB9OwogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0lEKHR5cGVfLCBuYW1lXywgZGVm
YXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgbmFtZV8jI0lE
LAotCi0gICAgZW51bSBJRCB7Ci0gICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9P
UFRJT05fSUQpCi0gICAgICAgIG51bWJlck9mT3B0aW9ucwotICAgIH07Ci0jdW5kZWYgREVDTEFS
RV9PUFRJT05fSUQKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIEJvb2wsCi0gICAg
ICAgIFVuc2lnbmVkLAotICAgICAgICBEb3VibGUsCi0gICAgICAgIEludDMyLAotICAgICAgICBT
aXplLAotICAgICAgICBPcHRpb25SYW5nZSwKLSAgICAgICAgT3B0aW9uU3RyaW5nLAotICAgICAg
ICBHQ0xvZ0xldmVsLAotICAgIH07Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7CiAKICAgICAvLyBQYXJzZXMgYSBzdHJpbmcgb2Ygb3B0aW9ucyB3aGVy
ZSBlYWNoIG9wdGlvbiBpcyBvZiB0aGUgZm9ybWF0ICItLTxvcHRpb25OYW1lPj08dmFsdWU+IgpA
QCAtMTAyLDEzICs4MSwxOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCk7CiAKICNkZWZpbmUgREVDTEFSRV9PUFRJ
T05fQUNDRVNTT1JTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5Xywg
ZGVzY3JpcHRpb25fKSBcCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5
cGVfJiBuYW1lXygpIHsgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbbmFtZV8jI0lEXS52YWwj
I3R5cGVfOyB9ICBcCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5cGVf
JiBuYW1lXyMjRGVmYXVsdCgpIHsgcmV0dXJuIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW25h
bWVfIyNJRF0udmFsIyN0eXBlXzsgfQotCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9u
VHlwZXM6OnR5cGVfJiBuYW1lXygpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGdfanNjQ29u
ZmlnLnR5cGUjI3R5cGVfIyNPcHRpb25zW29wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5
cGVJRDo6dHlwZV8sIE9wdGlvbklEOjpuYW1lXz4oKV07IFwKKyAgICB9ICBcCisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgT3B0aW9uVHlwZXM6OnR5cGVfJiBuYW1lXyMjRGVmYXVsdCgpIFwKKyAg
ICB7IFwKKyAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLnR5cGUjI3R5cGVfIyNEZWZhdWx0T3B0
aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25J
RDo6bmFtZV8+KCldOyBcCisgICAgfQogICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9P
UFRJT05fQUNDRVNTT1JTKQogI3VuZGVmIERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUwogCi0gICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoSUQsIEF2YWlsYWJpbGl0eSk7CisgICAgc3RhdGljIGJv
b2wgaXNBdmFpbGFibGUoT3B0aW9uSUQsIEF2YWlsYWJpbGl0eSk7CiAKIHByaXZhdGU6CiAKQEAg
LTExNiw4ICsxMDAsOSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBFbnRyeUluZm8gewogICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lOwogICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsKLSAg
ICAgICAgVHlwZSB0eXBlOworICAgICAgICBPcHRpb25UeXBlSUQgdHlwZTsKICAgICAgICAgQXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eTsKKyAgICAgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5k
ZXg7CiAgICAgfTsKIAogICAgIE9wdGlvbnMoKTsKQEAgLTEyOSwxMjIgKzExNCw1NCBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKICAgICBzdGF0aWMg
dm9pZCBkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBjb25zdCBjaGFy
KiB0aXRsZSwKICAgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRp
b25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsK
LSAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIElE
LAorICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwg
T3B0aW9uSUQsCiAgICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRlciwgY29uc3QgY2hhciog
b3B0aW9uRm9vdGVyLCBEdW1wRGVmYXVsdHNPcHRpb24pOwogCiAgICAgc3RhdGljIGJvb2wgc2V0
T3B0aW9uV2l0aG91dEFsaWFzKGNvbnN0IGNoYXIqIGFyZyk7CiAgICAgc3RhdGljIGJvb2wgc2V0
QWxpYXNlZE9wdGlvbihjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29sIG92ZXJyaWRl
QWxpYXNlZE9wdGlvbldpdGhIZXVyaXN0aWMoY29uc3QgY2hhciogbmFtZSk7CiAKLSAgICBzdGF0
aWMgY29uc3QgRW50cnlJbmZvIHNfb3B0aW9uc0luZm9bbnVtYmVyT2ZPcHRpb25zXTsKKyAgICBz
dGF0aWMgY29uc3QgRW50cnlJbmZvIHNfb3B0aW9uc0luZm9bTnVtYmVyT2ZPcHRpb25zXTsKIAog
ICAgIGZyaWVuZCBjbGFzcyBPcHRpb247CiB9OwogCiBjbGFzcyBPcHRpb24gewogcHVibGljOgot
ICAgIE9wdGlvbihPcHRpb25zOjpJRCBpZCkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAs
IG1fZW50cnkoZ19qc2NDb25maWcub3B0aW9uc1ttX2lkXSkKLSAgICB7Ci0gICAgfQotICAgIAor
ICAgIE9wdGlvbihPcHRpb25JRCk7CisKICAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQogICAgIAotICAgIE9wdGlvbnM6OklEIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQotICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKLSAgICBjb25zdCBj
aGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIE9wdGlvbnM6OlR5cGUgdHlwZSgpIGNvbnN0
OwotICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdDsKLSAgICBi
b29sIGlzT3ZlcnJpZGRlbigpIGNvbnN0OworICAgIE9wdGlvbklEIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW2lkSW5kZXgoKV0ubmFtZTsgfQorICAgIGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCld
LmRlc2NyaXB0aW9uOyB9CisgICAgT3B0aW9uVHlwZUlEIHR5cGUoKSBjb25zdCB7IHJldHVybiBP
cHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5kZXgoKV0udHlwZTsgfQorICAgIE9wdGlvbnM6OkF2
YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlv
bnNJbmZvW2lkSW5kZXgoKV0uYXZhaWxhYmlsaXR5OyB9CisgICAgYm9vbCBpc092ZXJyaWRkZW4o
KSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7IH0KICAgICBjb25zdCBP
cHRpb24gZGVmYXVsdE9wdGlvbigpIGNvbnN0OwotICAgIAotICAgIGJvb2wmIGJvb2xWYWwoKTsK
LSAgICB1bnNpZ25lZCYgdW5zaWduZWRWYWwoKTsKLSAgICBkb3VibGUmIGRvdWJsZVZhbCgpOwot
ICAgIGludDMyX3QmIGludDMyVmFsKCk7Ci0gICAgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2VWYWwo
KTsKLSAgICBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmdWYWwoKTsKLSAgICBHQ0xvZ2dpbmc6Okxl
dmVsJiBnY0xvZ0xldmVsVmFsKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIC8vIE9ubHkgdXNlZCBm
b3IgY29uc3RydWN0aW5nIGRlZmF1bHQgT3B0aW9ucy4KLSAgICBPcHRpb24oT3B0aW9uczo6SUQg
aWQsIE9wdGlvbkVudHJ5JiBlbnRyeSkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1f
ZW50cnkoZW50cnkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBPcHRpb25zOjpJRCBtX2lkOwot
ICAgIE9wdGlvbkVudHJ5JiBtX2VudHJ5OwotfTsKIAotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlv
bjo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9p
ZF0ubmFtZTsKLX0KKyNkZWZpbmUgREVDTEFSRV9BQ0NFU1NPUihPcHRpb25UeXBlXywgdHlwZV8p
IFwKKyAgICB0eXBlXyB2YWwjI09wdGlvblR5cGVfKCkgY29uc3QgeyByZXR1cm4gbV92YWwjI09w
dGlvblR5cGVfOyB9CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfQUNDRVNT
T1IpCisjdW5kZWYgREVDTEFSRV9BQ0NFU1NPUgogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9u
OjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0lu
Zm9bbV9pZF0uZGVzY3JpcHRpb247Ci19Ci0KLWlubGluZSBPcHRpb25zOjpUeXBlIE9wdGlvbjo6
dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0u
dHlwZTsKLX0KLQotaW5saW5lIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBPcHRpb246OmF2YWlsYWJp
bGl0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0u
YXZhaWxhYmlsaXR5OwotfQotCi1pbmxpbmUgYm9vbCBPcHRpb246OmlzT3ZlcnJpZGRlbigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICp0aGlzICE9IGRlZmF1bHRPcHRpb24oKTsKLX0KLQotaW5saW5l
IGNvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAotewotICAgIHJldHVy
biBPcHRpb24obV9pZCwgZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbV9pZF0pOwotfQotCi1p
bmxpbmUgYm9vbCYgT3B0aW9uOjpib29sVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxC
b29sOwotfQotCi1pbmxpbmUgdW5zaWduZWQmIE9wdGlvbjo6dW5zaWduZWRWYWwoKQotewotICAg
IHJldHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkOwotfQorcHJpdmF0ZToKKyAgICBPcHRpb24oKSB7
IH0KIAotaW5saW5lIGRvdWJsZSYgT3B0aW9uOjpkb3VibGVWYWwoKQotewotICAgIHJldHVybiBt
X2VudHJ5LnZhbERvdWJsZTsKLX0KKyAgICBzaXplX3QgaWRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4obV9pZCk7IH0KIAotaW5saW5lIGludDMyX3QmIE9wdGlvbjo6
aW50MzJWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbEludDMyOwotfQorICAgIE9wdGlv
bklEIG1faWQ7CisgICAgdW5pb24gewogCi1pbmxpbmUgT3B0aW9uUmFuZ2UgT3B0aW9uOjpvcHRp
b25SYW5nZVZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2U7Ci19Cisj
ZGVmaW5lIERFQ0xBUkVfTUVNQkVSKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgICAgICB0eXBl
XyBtX3ZhbCMjT3B0aW9uVHlwZV87CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xB
UkVfTUVNQkVSKQorI3VuZGVmIERFQ0xBUkVfTUVNQkVSCiAKLWlubGluZSBjb25zdCBjaGFyKiBP
cHRpb246Om9wdGlvblN0cmluZ1ZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9u
U3RyaW5nOwotfQotCi1pbmxpbmUgR0NMb2dnaW5nOjpMZXZlbCYgT3B0aW9uOjpnY0xvZ0xldmVs
VmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xldmVsOwotfQorICAgIH07Cit9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjUwMjAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTUgKzI1
LDE4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR0NMb2dnaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBIb3cgZG8gSlND
IFZNIG9wdGlvbnMgd29yaz8KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gVGhl
IEZPUl9FQUNIX0pTQ19PUFRJT04oKSBtYWNybyBiZWxvdyBkZWZpbmVzIGEgbGlzdCBvZiBhbGwg
SlNDIG9wdGlvbnMgaW4gdXNlLAogLy8gYWxvbmcgd2l0aCB0aGVpciB0eXBlcyBhbmQgZGVmYXVs
dCB2YWx1ZXMuIFRoZSBvcHRpb25zIHZhbHVlcyBhcmUgYWN0dWFsbHkKLS8vIHJlYWxpemVkIGFz
IGFuIGFycmF5IG9mIE9wdGlvbkVudHJ5IGVsZW1lbnRzIGluIEpTQzo6Q29uZmlnLgorLy8gcmVh
bGl6ZWQgYXMgYXJyYXlzIG9mIGVhY2ggb2YgdGhlIE9wdGlvblR5cGVzIGluIEpTQzo6Q29uZmln
LgogLy8KLS8vICAgICBPcHRpb25zOjppbml0aWFsaXplKCkgd2lsbCBpbml0aWFsaXplIHRoZSBh
cnJheSBvZiBvcHRpb25zIHZhbHVlcyB3aXRoCisvLyAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
IHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXlzIG9mIG9wdGlvbnMgdmFsdWVzIHdpdGgKIC8vIHRo
ZSBkZWZhdWx0cyBzcGVjaWZpZWQgaW4gRk9SX0VBQ0hfSlNDX09QVElPTigpIGJlbG93LiBBZnRl
ciB0aGF0LCB0aGUgdmFsdWVzIGNhbgogLy8gYmUgcHJvZ3JhbW1hdGljYWxseSByZWFkIGFuZCB3
cml0dGVuIHRvIHVzaW5nIGFuIGFjY2Vzc29yIG1ldGhvZCB3aXRoIHRoZQogLy8gc2FtZSBuYW1l
IGFzIHRoZSBvcHRpb24uIEZvciBleGFtcGxlLCB0aGUgb3B0aW9uICJ1c2VKSVQiIGNhbiBiZSBy
ZWFkIGFuZApAQCAtNTQsNiArNTcsNjggQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBjaGVja3MgYXJl
IGRvbmUgYWZ0ZXIgdGhlIG9wdGlvbiB2YWx1ZXMgYXJlIHNldC4gSWYgeW91IGFsdGVyIHRoZSBv
cHRpb24KIC8vIHZhbHVlcyBhZnRlciB0aGUgc2FuaXR5IGNoZWNrcyAoZm9yIHlvdXIgb3duIHRl
c3RpbmcpLCB0aGVuIHlvdSdyZSBsaWFibGUgdG8KIC8vIGVuc3VyZSB0aGF0IHRoZSBuZXcgdmFs
dWVzIHNldCBhcmUgc2FuZSBhbmQgcmVhc29uYWJsZSBmb3IgeW91ciBvd24gcnVuLgorLy8KKy8v
IEFueSBtb2RpZmljYXRpb25zIHRvIG9wdGlvbnMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgZmly
c3QgVk0gaXMgaW5zdGFudGlhdGUuCisvLyBPbiBpbnN0YW50aWF0aW9uIG9mIHRoZSBmaXJzdCBW
TSBpbnN0YW5jZSwgdGhlIE9wdGlvbnMgd2lsbCBiZSB3cml0ZSBwcm90ZWN0ZWQKKy8vIGFuZCBj
YW5ub3QgYmUgbW9kaWZpZWQgdGhlcmVhZnRlci4KKworY2xhc3MgT3B0aW9uUmFuZ2UgeworcHJp
dmF0ZToKKyAgICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5v
cm1hbCwgSW52ZXJ0ZWQgfTsKK3B1YmxpYzoKKyAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChj
b25zdCBpbnQmIHJocykKKyAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgor
ICAgICAgICBpZiAoIXJocykgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7
CisgICAgICAgICAgICBtX3JhbmdlU3RyaW5nID0gMDsKKyAgICAgICAgICAgIG1fbG93TGltaXQg
PSAwOworICAgICAgICAgICAgbV9oaWdoTGltaXQgPSAwOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sIGluaXQoY29uc3QgY2hhciopOworICAgIGJv
b2wgaXNJblJhbmdlKHVuc2lnbmVkKTsKKyAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251
bGxSYW5nZVN0cjsgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VT
dHI7CisKKyAgICBSYW5nZVN0YXRlIG1fc3RhdGU7CisgICAgY29uc3QgY2hhciogbV9yYW5nZVN0
cmluZzsKKyAgICB1bnNpZ25lZCBtX2xvd0xpbWl0OworICAgIHVuc2lnbmVkIG1faGlnaExpbWl0
OworfTsKKworI2RlZmluZSBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUodikgXAorICAgIHYoQm9v
bCwgYm9vbCkgXAorICAgIHYoVW5zaWduZWQsIHVuc2lnbmVkKSBcCisgICAgdihEb3VibGUsIGRv
dWJsZSkgXAorICAgIHYoSW50MzIsIGludDMyX3QpIFwKKyAgICB2KFNpemUsIHNpemVfdCkgXAor
ICAgIHYoT3B0aW9uUmFuZ2UsIE9wdGlvblJhbmdlKSBcCisgICAgdihPcHRpb25TdHJpbmcsIGNv
bnN0IGNoYXIqKSBcCisgICAgdihHQ0xvZ0xldmVsLCBHQ0xvZ2dpbmc6OkxldmVsKSBcCisKK25h
bWVzcGFjZSBPcHRpb25UeXBlcyB7CisKKyNkZWZpbmUgREVDTEFSRV9UWVBFUyhPcHRpb25UeXBl
XywgdHlwZV8pIFwKKyAgICB1c2luZyBPcHRpb25UeXBlXyA9IHR5cGVfOworICAgIEZPUl9FQUNI
X0pTQ19PUFRJT05fVFlQRShERUNMQVJFX1RZUEVTKQorI3VuZGVmIERFQ0xBUkVfVFlQRVMKKwor
fSAvLyBuYW1lc3BhY2UgT3B0aW9uVHlwZXMKKworZW51bSBjbGFzcyBPcHRpb25UeXBlSUQgOiB1
aW50OF90IHsKKworI2RlZmluZSBERUNMQVJFX1RZUEVJRChPcHRpb25UeXBlXywgdHlwZV8pIFwK
KyAgICBPcHRpb25UeXBlXywKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9U
WVBFSUQpCisjdW5kZWYgREVDTEFSRV9UWVBFSUQKKworfTsKIAogI2RlZmluZSBGT1JfRUFDSF9K
U0NfT1BUSU9OKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIHYoQm9vbCwgdXNlS2VyblRDU00sIHRydWUsIE5vcm1hbCwgIk5vdGU6IHRoaXMgbmVlZHMg
dG8gZ28gYmVmb3JlIG90aGVyIG9wdGlvbnMgc2luY2UgdGhleSBkZXBlbmQgb24gdGhpcyB2YWx1
ZS4iKSBcCkBAIC01MDMsNiArNTY4LDI5IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAg
IHYobWF4aW11bUZUTENhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIG1heGltdW1GVExDYW5kaWRh
dGVCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKICAgICB2KG1heGltdW1JbmxpbmluZ0NhbGxl
clNpemUsIG1heGltdW1JbmxpbmluZ0NhbGxlckJ5dGVjb2RlQ29zdCwgU2FtZU9wdGlvbikgXAog
CisjZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0lEKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgbmFtZV8sCitlbnVtIGNsYXNzIE9w
dGlvbklEIDogdWludDE2X3QgeworICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9PUFRJ
T05fSUQpCit9OworI3VuZGVmIERFQ0xBUkVfT1BUSU9OX0lECisKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IEludmFsaWRPcHRpb25JbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCk7CisKK3RlbXBsYXRlPE9wdGlvblR5cGVJRCB0eXBlLCBPcHRpb25JRCBpZD4KK2NvbnN0
ZXhwciBzaXplX3Qgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXgoKQoreworICAgIHNpemVfdCBpbmRl
eCA9IDA7CisjZGVmaW5lIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENIKHR5cGVfLCBuYW1lXywg
ZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgaWYgKGlk
ID09IE9wdGlvbklEOjpuYW1lXykgXAorICAgICAgICByZXR1cm4gaW5kZXg7IFwKKyAgICBpZiAo
dHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGluZGV4Kys7CisKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OKENPVU5UX0lOREVYX0FORF9GSU5EX01BVENIKTsKKyN1bmRlZiBD
T1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSAorICAgIHJldHVybiBJbnZhbGlkT3B0aW9uSW5kZXg7
Cit9CiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMoKQogewpAQCAt
NTE1LDUgKzYwMywyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25z
CiAKIGNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09w
dGlvbnMoKTsKIAotfSAvLyBuYW1lc3BhY2UgSlNDCitjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVt
YmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRCB0eXBlKQoreworICAgIHNpemVfdCBj
b3VudCA9IDA7CisjZGVmaW5lIENPVU5UX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIGlmICh0eXBlID09IE9wdGlv
blR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAgY291bnQrKzsKKyAgICBGT1JfRUFDSF9KU0NfT1BU
SU9OKENPVU5UX09QVElPTik7CisjdW5kZWYgQ09VTlRfT1BUSU9OCisgICAgcmV0dXJuIGNvdW50
OworfQogCitjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mQm9vbE9wdGlvbnMgPSBjb3VudE51bWJl
ck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkJvb2wpOworY29uc3RleHByIHNpemVf
dCBOdW1iZXJPZlVuc2lnbmVkT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBl
KE9wdGlvblR5cGVJRDo6VW5zaWduZWQpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkRvdWJs
ZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkRv
dWJsZSk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mSW50MzJPcHRpb25zID0gY291bnROdW1i
ZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpJbnQzMik7Citjb25zdGV4cHIgc2l6
ZV90IE51bWJlck9mU2l6ZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShP
cHRpb25UeXBlSUQ6OlNpemUpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk9wdGlvblJhbmdl
T3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6T3B0
aW9uUmFuZ2UpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnMg
PSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmlu
Zyk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mR0NMb2dMZXZlbE9wdGlvbnMgPSBjb3VudE51
bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWwpOworCit9IC8v
IG5hbWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="395084"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381082</attachid>
            <date>2019-10-16 10:36:10 -0700</date>
            <delta_ts>2019-10-16 17:55:37 -0700</delta_ts>
            <desc>Rebased patch for landing.</desc>
            <filename>bug-202105.patch</filename>
            <type>text/plain</type>
            <size>44083</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxMTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNSBA
QAorMjAxOS0xMC0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGUgc2l6ZSBvZiB0
aGUgSlNDOjpDb25maWcgbmVlZGVkIHRvIHN0b3JlIHRoZSBPcHRpb25zIGlzIG5vdyByZWR1Y2Vk
IHRvIDRLCisgICAgICAgIGluc3RlYWQgb2YgMTZLLCBlbmFibGVkIGJ5IGNvbnN0ZXhwciB0ZW1w
bGF0ZSBtYWdpYy4KKworICAgICAgICAxLiBJbnN0ZWFkIG9mIGFsbCBvcHRpb25zIGluIGEgbGFy
Z2UgYXJyYXkgb2YgT3B0aW9uRW50cnkgKHdoaWNoIGlzIGEgdW5pb24gb2YKKyAgICAgICAgICAg
YWxsIHRoZSBvcHRpb24gdHlwZXMpLCB3ZSBub3cgaGF2ZSBzZXBhcmF0ZSBhcnJheXMgZm9yIGVh
Y2ggb2YgdGhlIHR5cGVzIG9mCisgICAgICAgICAgIG9wdGlvbnMuICBGb3IgZXhhbXBsZSwKKwor
ICAgICAgICAgICAgICAgIFJlbW92ZWQgZ19qc2NDb25maWcub3B0aW9uc1tdLgorICAgICAgICAg
ICAgICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVCb29sT3B0aW9uc1tdLgorICAgICAgICAgICAg
ICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbXS4KKyAgICAgICAgICAgICAg
ICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlRG91YmxlT3B0aW9uc1tdLgorICAgICAgICAgICAgICAg
IC4uLgorCisgICAgICAgICAgIFdlIHVzZWQgdG8gZmluZCB0aGUgc3RvcmFnZSBmb3IgdGhlIG9w
dGlvbiB1c2luZyBnX2pzY0NvbmZpZy5vcHRpb25zW09wdGlvbnM6OklEXS4KKyAgICAgICAgICAg
V2Ugbm93IGZpbmQgdGhlIHN0b3JhZ2UgZm9yIGVhY2ggdHlwZSBvZiBvcHRpb24gdXNpbmcKKyAg
ICAgICAgICAgZ19qc2NDb25maWcub3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRp
b25UeXBlSUQsIE9wdGlvbklEPigpXS4gIEZvcgorICAgICAgICAgICBleGFtcGxlLCBPcHRpb25z
Ojp1c2VKSVQoKSB1c2VkIHRvIGJlIGltcGxlbWVudGVkIGFzOgorCisgICAgICAgICAgICAgICBp
bmxpbmUgYm9vbCYgT3B0aW9uczo6dXNlSklUKCkKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbT3B0aW9uczo6dXNlSklUSURd
OworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgIC4uLiB3aGljaCBpcyBub3cgcmVwbGFj
ZWQgd2l0aDoKKworICAgICAgICAgICAgICAgaW5saW5lIGJvb2wmIE9wdGlvbnM6OnVzZUpJVCgp
CisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnX2pzY0NvbmZp
Zy50eXBlQm9vbE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpC
b29sLCBPcHRpb25JRDo6dXNlSklUPigpXTsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAy
LiBJbnRyb2R1Y2UgdGhlIG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCkgY29uc3RleHByIHRlbXBs
YXRlIGZ1bmN0aW9uIGZvcgorICAgICAgICAgICBjb21wdXRpbmcgdGhlIGluZGV4IG9mIGVhY2gg
b3B0aW9uIGluIHRoZWlyIHJlc3BlY3RpdmUgdHlwZSBzcGVjaWZpYyBvcHRpb25zCisgICAgICAg
ICAgIGFycmF5LgorCisgICAgICAgIDMuIEludHJvZHVjZSBPcHRpb25UeXBlcywgT3B0aW9uVHlw
ZUlELCBhbmQgT3B0aW9uSUQuCisKKyAgICAgICAgICAgVGhlIE9wdGlvblR5cGVzIG5hbWVzcGFj
ZSByZXBsYWNlcyBPcHRpb25FbnRyeSBhcyB0aGUgY29udGFpbmVyIG9mIG9wdGlvbiB0eXBlcy4K
KyAgICAgICAgICAgVGhlIE9wdGlvbklEIGVudW0gY2xhc3MgcmVwbGFjZXMgT3B0aW9uczo6SUQu
CisgICAgICAgICAgIFRoZSBPcHRpb25UeXBlSUQgZW51bSBjbGFzcyBpcyBuZXcgYW5kIGlzIHVz
ZWQgdG9nZXRoZXIgd2l0aCBPcHRpb25JRCBpbgorICAgICAgICAgICAgICAgY29uc3RleHByIHRl
bXBsYXRlcyB0byBjb21wdXRlIHRoZSB0eXBlU3BlY2lmaWNJbmRleCBvZiBvcHRpb25zLgorCisg
ICAgICAgIDQuIFJlbW92ZWQgdGhlIE9wdGlvbkVudHJ5IHN0cnVjdCBhbmQgT3B0aW9uRW50cnku
aC4gIEFmdGVyICgxKSwgdGhpcyBzdHJ1Y3QgaXMKKyAgICAgICAgICAgb25seSB1c2VkIGluIHRo
ZSBPcHRpb24gY2xhc3MuICBXZSBqdXN0IG1vdmVkIHRoZSB1bmlvbiBvZiBvcHRpb24gdHlwZXMg
KHRoYXQKKyAgICAgICAgICAgT3B0aW9uRW50cnkgZW1iZWRzKSBpbnRvIHRoZSBPcHRpb24gY2xh
c3MuCisKKyAgICAgICAgICAgTW92ZWQgY2xhc3MgT3B0aW9uUmFuZ2UgaW50byBPcHRpb25zTGlz
dC5oLgorCisgICAgICAgIDUuIFJlbW92ZWQgdGhlIGxhcmdlIE9wdGlvbkVudHJ5IGFycmF5cyBm
cm9tIEpTQzo6Q29uZmlnLgorICAgICAgICAgICBBZGRlZCB0eXBlIHNwZWNpZmljIG9wdGlvbnMg
YXJyYXlzLgorICAgICAgICAgICBBbHNvIG9yZGVyZWQgdGhlc2UgYXJyYXlzIHRvIG1heGltaXpl
IGNvbXBhY3RuZXNzIGFuZCBtaW5pbWl6ZSBpbnRlcm5hbCBmcmFnbWVudGF0aW9uLgorCisgICAg
ICAgIDYuIENoYW5nZWQgc2NhbGVKSVRQb2xpY3koKSB0byBnbyBkaXJlY3RseSB0byBnX2pzY0Nv
bmZpZy50eXBlSW50MzJPcHRpb25zW10KKyAgICAgICAgICAgaW5zdGVhZCBvZiBnb2luZyB0aHJv
dWdoIHRoZSBPcHRpb24gd3JhcHBlciBvYmplY3QuICBUaGlzIGFsbG93cyB1cyB0byBzaW1wbGlm
eQorICAgICAgICAgICB0aGluZ3MgYW5kIG1ha2UgdGhlIE9wdGlvbiBjbGFzcyBhIHJlYWQgb25s
eSBpbnRlcmZhY2Ugb2Ygb3B0aW9ucy4KKworICAgICAgICA3LiBDaGFuZ2VkIE9wdGlvbnM6Omlu
aXRpYWxpemUoKSB0byBvbmx5IGNvbXB1dGUgdGhlIG9wdGlvbiBkZWZhdWx0IHZhbHVlIG9uY2Uu
CisgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgT3B0aW9uc0xp
c3QgbWF5IG5vdCBhbHdheXMgYmUgYSBjb25zdGFudC4KKyAgICAgICAgICAgU29tZXRpbWVzLCBp
dCBpcyBhIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAgICAgOC4gVGhlIE9wdGlvbiBjbGFzcyBub3cg
b25seSBnaXZlcyByZWFkIG9ubHkgYWNjZXNzIHRvIHRoZSBvcHRpb25zLgorCisgICAgICAgICAg
IFRoZSBPcHRpb24gY2xhc3MnIHJvbGUgaXMgdG8gcHJvdmlkZSBhbiBpbnRlcmZhY2UgZm9yIHJl
YWRpbmcgYW4gb3B0aW9uIGF0IGFueQorICAgICAgICAgICBnaXZlbiBPcHRpb25JRCB3aXRob3V0
IGZpcnN0IGtub3dpbmcgYWJvdXQgdGhlIHR5cGUgb2YgdGhlIHNwZWNpZmljIG9wdGlvbi4KKyAg
ICAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBpdGVyYXRpbmcgb3B0aW9ucywgYW5kIGlzIGN1cnJl
bnRseSBvbmx5IHVzZWQgYnkKKyAgICAgICAgICAgT3B0aW9uczo6ZHVtcE9wdGlvbigpLgorCisg
ICAgICAgICAgIFRlY2huaWNhbGx5LCB3ZSBjb3VsZCBtZXJnZSBhbGwgdGhlIE9wdGlvbiBjbGFz
cyBjb2RlIGludG8gaXRzIHNpbmdsZSBjbGllbnQuCisgICAgICAgICAgIFdlIG9wdGVkIG5vdCB0
byBkbyB0aGlzIGJlY2F1c2UgdGhlIGFtb3VudCBvZiBjb2RlIGlzIG5vbi10cml2aWFsLCBhbmQg
dGhlCisgICAgICAgICAgIE9wdGlvbiBjbGFzcyBkb2VzIGEgZ29vZCBqb2Igb2YgZW5jYXBzdWxh
dGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NPcHRpb25z
LmNwcDoKKyAgICAgICAgKGpzY09wdGlvbnNTZXRWYWx1ZSk6CisgICAgICAgIChqc2NPcHRpb25z
R2V0VmFsdWUpOgorICAgICAgICAoanNjX29wdGlvbnNfZm9yZWFjaCk6CisgICAgICAgIChqc2Nf
b3B0aW9uc19nZXRfb3B0aW9uX2dyb3VwKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25FbnRyeS5o
OiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Ok9wdGlvbnM6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKEpTQzo6b3ZlcnJpZGVPcHRpb25XaXRo
SGV1cmlzdGljKToKKyAgICAgICAgKEpTQzo6c2NhbGVKSVRQb2xpY3kpOgorICAgICAgICAoSlND
OjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKToKKyAgICAgICAgKEpTQzo6
T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjpkZWZhdWx0T3B0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
T3B0aW9uOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6T3B0aW9u
OjppZCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9wdGlvbjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246
OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246OmF2YWlsYWJpbGl0eSBjb25zdCk6
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6aXNPdmVycmlkZGVuIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uOjpPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246OmlkSW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpPcHRpb246OmRlZmF1bHRPcHRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpPcHRpb246OmJvb2xWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpP
cHRpb246OnVuc2lnbmVkVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkb3Vi
bGVWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OmludDMyVmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZhbCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uOjpnY0xvZ0xldmVsVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnNMaXN0Lmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpvcGVyYXRvcj0gKToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uUmFuZ2U6OnJhbmdlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6b3B0aW9uVHlwZVNwZWNpZmljSW5kZXgpOgorICAgICAgICAoSlNDOjpjb3VudE51bWJlck9m
SlNDT3B0aW9uc09mVHlwZSk6CisKIDIwMTktMTAtMTUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUg
ZmFpbGVkIHRvIGhhbmRsZSBPT01FIHdoZW4gcmVzb2x2aW5nIHJvcGUgc3RyaW5nLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjUxMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05MjAs
NyArOTIwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAg
IHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCiAgICAgcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAogICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5oCi0gICAgcnVudGltZS9PcHRpb25F
bnRyeS5oCiAgICAgcnVudGltZS9PcHRpb25zLmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgK
ICAgICBydW50aW1lL1BhcnNlSW50LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1MTE3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4
LDcgKzE2OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBqc2NPcHRpb25zU2V0VmFsdWUoY29uc3QKIHsK
ICNkZWZpbmUgU0VUX09QVElPTl9WQUxVRSh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmICghZ19zdHJjbXAwKCNuYW1lXywg
b3B0aW9uKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBP
cHRpb25FbnRyeTo6dHlwZV8gdmFsdWVUb1NldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gdmFsdWVUb1NldDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIXZhbHVlRnJvbUdWYWx1ZSh2
YWx1ZSwgdmFsdWVUb1NldCkpICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAg
cmV0dXJuIEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBPcHRpb25zOjpuYW1lXygpID0gdmFsdWVUb1NldDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBnYm9vbGVh
biBqc2NPcHRpb25zR2V0VmFsdWUoY29uc3QKIHsKICNkZWZpbmUgR0VUX09QVElPTl9WQUxVRSh0
eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykg
XAogICAgIGlmICghZ19zdHJjbXAwKCNuYW1lXywgb3B0aW9uKSkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8gdmFsdWVUb0dl
dCA9IE9wdGlvbnM6Om5hbWVfKCk7ICAgICAgICAgICAgICAgXAorICAgICAgICBPcHRpb25UeXBl
czo6dHlwZV8gdmFsdWVUb0dldCA9IE9wdGlvbnM6Om5hbWVfKCk7ICAgICAgICAgICAgICAgXAog
ICAgICAgICB2YWx1ZVRvR1ZhbHVlKHZhbHVlVG9HZXQsIHZhbHVlKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gVFJVRTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KQEAgLTYxNiw4ICs2MTYs
OCBAQCB2b2lkIGpzY19vcHRpb25zX2ZvcmVhY2goSlNDT3B0aW9uc0Z1bmMgCiAKICNkZWZpbmUg
VklTSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5Xywg
ZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmls
aXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCi0gICAgICAgIHx8IE9wdGlv
bnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5
OjphdmFpbGFiaWxpdHlfKSkgeyBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyBkZWZhdWx0
VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHx8IE9wdGlv
bnM6OmlzQXZhaWxhYmxlKE9wdGlvbklEOjpuYW1lXywgT3B0aW9uczo6QXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKSkgeyBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyBkZWZhdWx0VmFs
dWUgeyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGF1dG8gb3B0aW9u
VHlwZSA9IGpzY09wdGlvbnNUeXBlKGRlZmF1bHRWYWx1ZSk7ICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgIGlmIChmdW5jdGlvbiAoI25hbWVfLCBvcHRpb25UeXBlLCBkZXNjcmlwdGlvbl8sIHVz
ZXJEYXRhKSkgICAgICBcCiAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC02NjYsNyArNjY2LDcgQEAgR09w
dGlvbkdyb3VwKiBqc2Nfb3B0aW9uc19nZXRfb3B0aW9uX2dybwogICAgIEdBcnJheSogZW50cmll
cyA9IGdfYXJyYXlfbmV3KFRSVUUsIFRSVUUsIHNpemVvZihHT3B0aW9uRW50cnkpKTsKICNkZWZp
bmUgUkVHSVNURVJfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmls
aXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZh
aWxhYmlsaXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCi0gICAgICAgIHx8
IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZhaWxh
YmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCisgICAgICAgIHx8IE9wdGlvbnM6OmlzQXZhaWxh
YmxlKE9wdGlvbklEOjpuYW1lXywgT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlf
KSkgeyBcCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShnX3N0cmR1cF9wcmludGYoImpz
Yy0lcyIsICNuYW1lXykpOyAgICAgICBcCiAgICAgICAgIGVudHJpZXMgPSBnX2FycmF5X3NldF9z
aXplKGVudHJpZXMsIGVudHJpZXMtPmxlbiArIDEpOyBcCiAgICAgICAgIEdPcHRpb25FbnRyeSog
ZW50cnkgPSAmZ19hcnJheV9pbmRleChlbnRyaWVzLCBHT3B0aW9uRW50cnksIGVudHJpZXMtPmxl
biAtIDEpOyBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUx
MTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzIsNyArMTg3Miw2IEBACiAJCUZF
MzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8q
IFZNSW5zcGVjdG9yLmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJF
ODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
Mzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbnNMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgfTsKQEAg
LTUwNzMsNyArNTA3Miw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25z
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNv
ZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91
cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0
Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1l
dGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIzMjRENTFB
MDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzEy
MzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03MzgyLDcgKzczODAsNiBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMw
MDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICov
LAogCQkJCUY2OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQlGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0
MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBP
cHRpb25zTGlzdC5oICovLApAQCAtOTkwNSw3ICs5OTAyLDYgQEAKIAkJCQkwRjJCREMyQzE1MUZE
RTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdB
MEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCShyZXZpc2lvbiAyNTExNzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIk9wdGlvbkVudHJ5LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTM2LDEyICszNSwxMiBAQCBj
bGFzcyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I7CiAKICNpZiBDUFUoQVJNNjQpIHx8
IFBMQVRGT1JNKFdBVENIT1MpCiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VTaXplID0gMTYgKiBLQjsK
K2NvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNl
bHNlCiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VTaXplID0gNCAqIEtCOworY29uc3RleHByIHNpemVf
dCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMSAqIFBhZ2VTaXplOwogI2VuZGlmCiAKLWNvbnN0ZXhw
ciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDMyICogS0I7Ci0KICNpZiBFTkFCTEUoU0VQ
QVJBVEVEX1dYX0hFQVApCiB1c2luZyBKSVRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbiA9IHZv
aWQgKCopKG9mZl90LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKICNlbmRpZgpAQCAtODIsOCArODEs
MjkgQEAgc3RydWN0IENvbmZpZyB7CiAgICAgICAgICAgICBib29sIHVzZUZhc3RQZXJtaXNpb25z
SklUQ29weTsKICNlbmRpZgogCi0gICAgICAgICAgICBPcHRpb25FbnRyeSBvcHRpb25zW051bWJl
ck9mT3B0aW9uc107Ci0gICAgICAgICAgICBPcHRpb25FbnRyeSBkZWZhdWx0T3B0aW9uc1tOdW1i
ZXJPZk9wdGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbE9wdGlvbnNbTnVtYmVyT2ZC
b29sT3B0aW9uc107CisgICAgICAgICAgICBib29sIHR5cGVCb29sRGVmYXVsdE9wdGlvbnNbTnVt
YmVyT2ZCb29sT3B0aW9uc107CisKKyAgICAgICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdD
TG9nTGV2ZWxPcHRpb25zW051bWJlck9mR0NMb2dMZXZlbE9wdGlvbnNdOworICAgICAgICAgICAg
R0NMb2dnaW5nOjpMZXZlbCB0eXBlR0NMb2dMZXZlbERlZmF1bHRPcHRpb25zW051bWJlck9mR0NM
b2dMZXZlbE9wdGlvbnNdOworCisgICAgICAgICAgICBpbnQzMl90IHR5cGVJbnQzMk9wdGlvbnNb
TnVtYmVyT2ZJbnQzMk9wdGlvbnNdOworICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJEZWZh
dWx0T3B0aW9uc1tOdW1iZXJPZkludDMyT3B0aW9uc107CisKKyAgICAgICAgICAgIHVuc2lnbmVk
IHR5cGVVbnNpZ25lZE9wdGlvbnNbTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnNdOworICAgICAgICAg
ICAgdW5zaWduZWQgdHlwZVVuc2lnbmVkRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZVbnNpZ25lZE9w
dGlvbnNdOworCisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJsZU9wdGlvbnNbTnVtYmVyT2ZE
b3VibGVPcHRpb25zXTsKKyAgICAgICAgICAgIGRvdWJsZSB0eXBlRG91YmxlRGVmYXVsdE9wdGlv
bnNbTnVtYmVyT2ZEb3VibGVPcHRpb25zXTsKKworICAgICAgICAgICAgc2l6ZV90IHR5cGVTaXpl
T3B0aW9uc1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKyAgICAgICAgICAgIHNpemVfdCB0eXBlU2l6
ZURlZmF1bHRPcHRpb25zW051bWJlck9mU2l6ZU9wdGlvbnNdOworCisgICAgICAgICAgICBjb25z
dCBjaGFyKiB0eXBlT3B0aW9uU3RyaW5nT3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlv
bnNdOworICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ0RlZmF1bHRPcHRp
b25zW051bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9uc107CisKKyAgICAgICAgICAgIE9wdGlvblJh
bmdlIHR5cGVPcHRpb25SYW5nZU9wdGlvbnNbTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnNdOwor
ICAgICAgICAgICAgT3B0aW9uUmFuZ2UgdHlwZU9wdGlvblJhbmdlRGVmYXVsdE9wdGlvbnNbTnVt
YmVyT2ZPcHRpb25SYW5nZU9wdGlvbnNdOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3Vy
ZVNpemVbQ29uZmlnU2l6ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkocmV2aXNpb24gMjUxMTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKLSNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIE9wdGlvblJhbmdl
IHsKLXByaXZhdGU6Ci0gICAgZW51bSBSYW5nZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdEVy
cm9yLCBOb3JtYWwsIEludmVydGVkIH07Ci1wdWJsaWM6Ci0gICAgT3B0aW9uUmFuZ2UmIG9wZXJh
dG9yPSAoY29uc3QgaW50JiByaHMpCi0gICAgeyAvLyBPbmx5IG5lZWRlZCBmb3IgaW5pdGlhbGl6
YXRpb24KLSAgICAgICAgaWYgKCFyaHMpIHsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBVbmluaXRp
YWxpemVkOwotICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7Ci0gICAgICAgICAgICBtX2xv
d0xpbWl0ID0gMDsKLSAgICAgICAgICAgIG1faGlnaExpbWl0ID0gMDsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsK
LSAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7Ci0gICAgY29uc3QgY2hhciogcmFuZ2VTdHJp
bmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5n
IDogc19udWxsUmFuZ2VTdHI7IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVs
bFJhbmdlU3RyOwotCi0gICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOwotICAgIGNvbnN0IGNoYXIqIG1f
cmFuZ2VTdHJpbmc7Ci0gICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKLSAgICB1bnNpZ25lZCBtX2hp
Z2hMaW1pdDsKLX07Ci0KLS8vIEZvciBzdG9yaW5nIGZvciBhbiBvcHRpb24gdmFsdWU6Ci11bmlv
biBPcHRpb25FbnRyeSB7Ci0gICAgdXNpbmcgQm9vbCA9IGJvb2w7Ci0gICAgdXNpbmcgVW5zaWdu
ZWQgPSB1bnNpZ25lZDsKLSAgICB1c2luZyBEb3VibGUgPSBkb3VibGU7Ci0gICAgdXNpbmcgSW50
MzIgPSBpbnQzMl90OwotICAgIHVzaW5nIFNpemUgPSBzaXplX3Q7Ci0gICAgdXNpbmcgT3B0aW9u
UmFuZ2UgPSBKU0M6Ok9wdGlvblJhbmdlOwotICAgIHVzaW5nIE9wdGlvblN0cmluZyA9IGNvbnN0
IGNoYXIqOwotICAgIHVzaW5nIEdDTG9nTGV2ZWwgPSBHQ0xvZ2dpbmc6OkxldmVsOwotCi0gICAg
Ym9vbCB2YWxCb29sOwotICAgIHVuc2lnbmVkIHZhbFVuc2lnbmVkOwotICAgIGRvdWJsZSB2YWxE
b3VibGU7Ci0gICAgaW50MzJfdCB2YWxJbnQzMjsKLSAgICBzaXplX3QgdmFsU2l6ZTsKLSAgICBP
cHRpb25SYW5nZSB2YWxPcHRpb25SYW5nZTsKLSAgICBjb25zdCBjaGFyKiB2YWxPcHRpb25TdHJp
bmc7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCB2YWxHQ0xvZ0xldmVsOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkocmV2aXNpb24gMjUxMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgYm9vbCBw
YXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIEdDCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkLCBPcHRpb25zOjpBdmFpbGFiaWxp
dHkgYXZhaWxhYmlsaXR5KQorYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRCBpZCwg
T3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKIHsKICAgICBpZiAoYXZhaWxhYmls
aXR5ID09IEF2YWlsYWJpbGl0eTo6UmVzdHJpY3RlZCkKICAgICAgICAgcmV0dXJuIGdfanNjQ29u
ZmlnLnJlc3RyaWN0ZWRPcHRpb25zRW5hYmxlZDsKQEAgLTE0MCwyNiArMTQwLDI2IEBAIGJvb2wg
T3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQKICAgICAKICAgICBVTlVTRURfUEFS
QU0oaWQpOwogI2lmICFkZWZpbmVkKE5ERUJVRykKLSAgICBpZiAoaWQgPT0gbWF4U2luZ2xlQWxs
b2NhdGlvblNpemVJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om1heFNpbmdsZUFsbG9jYXRp
b25TaXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogI2lmIE9TKERBUldJTikKLSAg
ICBpZiAoaWQgPT0gdXNlU2lnaWxsQ3Jhc2hBbmFseXplcklEKQorICAgIGlmIChpZCA9PSBPcHRp
b25JRDo6dXNlU2lnaWxsQ3Jhc2hBbmFseXplcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBPUyhMSU5VWCkKLSAgICBpZiAoaWQgPT0gbG9n
SklUQ29kZUZvclBlcmZJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OmxvZ0pJVENvZGVGb3JQ
ZXJmKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGlmIChpZCA9PSB0cmFjZUxM
SW50RXhlY3V0aW9uSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50RXhlY3V0
aW9uKQogICAgICAgICByZXR1cm4gISFMTElOVF9UUkFDSU5HOwotICAgIGlmIChpZCA9PSB0cmFj
ZUxMSW50U2xvd1BhdGhJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnRyYWNlTExJbnRTbG93
UGF0aCkKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJp
c3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsIE9wdGlv
bnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCitib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhl
dXJpc3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uSUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsIE9wdGlv
bnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgYm9vbCBhdmFpbGFibGUgPSAo
YXZhaWxhYmlsaXR5ID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsKQogICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShpZCwgYXZhaWxhYmlsaXR5KTsKQEAgLTI4Myw5ICsyODMs
OSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiB9CiAKIC8vIFJl
YWxpemUgdGhlIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgotY29uc3QgT3B0aW9uczo6
RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25z
XSA9IHsKK2NvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW051
bWJlck9mT3B0aW9uc10gPSB7CiAjZGVmaW5lIEZJTExfT1BUSU9OX0lORk8odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICB7ICNu
YW1lXywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBlXywgQXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfIH0sCisgICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uVHlwZUlE
Ojp0eXBlXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfLCBvcHRpb25UeXBlU3BlY2lmaWNJ
bmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCkgfSwKICAgICBGT1Jf
RUFDSF9KU0NfT1BUSU9OKEZJTExfT1BUSU9OX0lORk8pCiAjdW5kZWYgRklMTF9PUFRJT05fSU5G
TwogfTsKQEAgLTI5OSwyNiArMjk5LDI1IEBAIHN0YXRpYyB2b2lkIHNjYWxlSklUUG9saWN5KCkK
ICAgICAgICAgc2NhbGVGYWN0b3IgPSAwLjA7CiAKICAgICBzdHJ1Y3QgT3B0aW9uVG9TY2FsZSB7
Ci0gICAgICAgIE9wdGlvbnM6OklEIGlkOworICAgICAgICBzaXplX3QgaW5kZXg7CiAgICAgICAg
IGludDMyX3QgbWluVmFsOwogICAgIH07CiAKICAgICBzdGF0aWMgY29uc3QgT3B0aW9uVG9TY2Fs
ZSBvcHRpb25zVG9TY2FsZVtdID0gewotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckpJ
VEFmdGVyV2FybVVwSUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRT
b29uSUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0
aW1pemVTb29uSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRp
bWl6ZVNvb25JRCwgMiB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGlt
aXplQWZ0ZXJXYXJtVXBJRCwgMiB9CisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8
T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVw
PigpLCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
OjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJVFNvb24+KCksIDAgfSwKKyAgICAgICAg
eyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMSB9LAorICAgICAgICB7IG9wdGlv
blR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD4oKSwgMSB9LAorICAgICAgICB7IG9wdGlvblR5
cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRG
b3JPcHRpbWl6ZVNvb24+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVT
b29uPigpLCAyIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlw
ZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA+
KCksIDIgfSwKICAgICB9OwogCi0gICAgY29uc3QgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUg
PSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOworICAgIGNv
bnN0ZXhwciBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVvZihvcHRpb25zVG9TY2Fs
ZSkgLyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1i
ZXJPZk9wdGlvbnNUb1NjYWxlOyBpKyspIHsKLSAgICAgICAgT3B0aW9uIG9wdGlvbihvcHRpb25z
VG9TY2FsZVtpXS5pZCk7Ci0gICAgICAgIEFTU0VSVChvcHRpb24udHlwZSgpID09IE9wdGlvbnM6
OlR5cGU6OkludDMyKTsKLSAgICAgICAgb3B0aW9uLmludDMyVmFsKCkgKj0gc2NhbGVGYWN0b3I7
Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpID0gc3RkOjptYXgob3B0aW9uLmludDMyVmFsKCks
IG9wdGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7CisgICAgICAgIGludDMyX3QmIG9wdGlvblZhbHVl
ID0gZ19qc2NDb25maWcudHlwZUludDMyT3B0aW9uc1tvcHRpb25zVG9TY2FsZVtpXS5pbmRleF07
CisgICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9yOworICAgICAgICBvcHRpb25WYWx1
ZSA9IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOwogICAg
IH0KIH0KIApAQCAtNDQxLDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMoKQogICAgIGlmICghT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpCiAgICAgICAg
IE9wdGlvbnM6OmNvbGxlY3RDb250aW51b3VzbHkoKSA9IGZhbHNlOwogCi0gICAgaWYgKE9wdGlv
bihPcHRpb25zOjpqaXRQb2xpY3lTY2FsZUlEKS5pc092ZXJyaWRkZW4oKSkKKyAgICBpZiAoT3B0
aW9uKE9wdGlvbklEOjpqaXRQb2xpY3lTY2FsZSkuaXNPdmVycmlkZGVuKCkpCiAgICAgICAgIHNj
YWxlSklUUG9saWN5KCk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRWFnZXJDb21waWxh
dGlvbigpKSB7CkBAIC01MjIsOSArNTIxLDExIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
CiAgICAgICAgICAgICBDb25maWc6OmVuYWJsZVJlc3RyaWN0ZWRPcHRpb25zKCk7CiAjZW5kaWYK
ICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWly
IGRlZmF1bHQgdmFsdWVzOgotI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgbmFt
ZV8oKSA9IGRlZmF1bHRWYWx1ZV87IFwKLSAgICAgICAgICAgIG5hbWVfIyNEZWZhdWx0KCkgPSBk
ZWZhdWx0VmFsdWVfOworI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgeyBcCisgICAgICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IGRlZmF1bHRWYWx1ZV87IFwKKyAgICAgICAgICAgICAgICBuYW1lXygpID0g
dmFsdWU7IFwKKyAgICAgICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gdmFsdWU7IFwKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oSU5JVF9PUFRJT04p
CiAjdW5kZWYgSU5JVF9PUFRJT04KIApAQCAtNTQ4LDcgKzU0OSw3IEBAIHZvaWQgT3B0aW9uczo6
aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKICNlbHNlIC8vIFBMQVRGT1JN
KENPQ09BKQogI2RlZmluZSBPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTKHR5cGVfLCBu
YW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAg
ICAgICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgbmFtZV8jI0lELCAi
SlNDXyIgI25hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOworICAgICAgICAgICAg
b3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIE9wdGlvbklEOjpuYW1lXywgIkpT
Q18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKICAgICAgICAgICAgIEZP
Ul9FQUNIX0pTQ19PUFRJT04oT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUykKICN1bmRl
ZiBPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCkBAIC03MjcsMTYgKzcyOCwxNSBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRB
bGlhcyhjb25zCiAKICAgICBjb25zdCBjaGFyKiB2YWx1ZVN0ciA9IGVxdWFsU3RyICsgMTsKIAot
ICAgIC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNpZnkgYXJnIGlzIGEgbWF0
Y2guIElmIHNvLCBzZXQgdGhlIGFyZworICAgIC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYg
dGhlIHNwZWNpZmllZCBhcmcgaXMgYSBtYXRjaC4gSWYgc28sIHNldCB0aGUgYXJnCiAgICAgLy8g
aWYgdGhlIHZhbHVlIG1ha2VzIHNlbnNlLiBPdGhlcndpc2UsIG1vdmUgb24gdG8gY2hlY2tpbmcg
dGhlIG5leHQgb3B0aW9uLgogI2RlZmluZSBTRVRfT1BUSU9OX0lGX01BVENIKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYg
KHN0cmxlbigjbmFtZV8pID09IHN0YXRpY19jYXN0PHNpemVfdD4oZXF1YWxTdHIgLSBhcmcpICAg
ICAgXAogICAgICAgICAmJiAhc3RybmNtcChhcmcsICNuYW1lXywgZXF1YWxTdHIgLSBhcmcpKSB7
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5
XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICAgXAotICAgICAgICAgICAgJiYgIWlzQXZhaWxh
YmxlKG5hbWVfIyNJRCwgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgXAorICAgICAgICBp
ZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2YWlsYWJpbGl0eTo6Tm9ybWFsICAg
IFwKKyAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIEF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5
Ojp0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICB2YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3Ry
LCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc3VjY2VzcykgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IG5hbWVfKCkgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CkBAIC04MTYsMTAgKzgxNiwxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKFN0cmlu
Z0J1aWxkCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0KIAotICAgIGZvciAo
aW50IGlkID0gMDsgaWQgPCBudW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKKyAgICBmb3IgKHNpemVf
dCBpZCA9IDA7IGlkIDwgTnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CiAgICAgICAgIGlmIChzZXBh
cmF0b3IgJiYgaWQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOwotICAg
ICAgICBkdW1wT3B0aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxJRD4oaWQpLCBvcHRp
b25IZWFkZXIsIG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsKKyAgICAgICAgZHVt
cE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9uSUQ+KGlkKSwgb3B0aW9u
SGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CiAgICAgfQogfQogCkBA
IC04MzUsMTAgKzgzNSwxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKEZJTEUqIHN0
cmVhCiAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KIAotdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uczo6SUQgaWQsCit2b2lkIE9wdGlvbnM6OmR1
bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVsIGxldmVsLCBPcHRpb25J
RCBpZCwKICAgICBjb25zdCBjaGFyKiBoZWFkZXIsIGNvbnN0IGNoYXIqIGZvb3RlciwgRHVtcERl
ZmF1bHRzT3B0aW9uIGR1bXBEZWZhdWx0c09wdGlvbikKIHsKLSAgICBpZiAoaWQgPj0gbnVtYmVy
T2ZPcHRpb25zKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGlkKSA+PSBOdW1iZXJPZk9w
dGlvbnMpCiAgICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCiAKICAgICBPcHRpb24g
b3B0aW9uKGlkKTsKQEAgLTg4MCwyOSArODgwLDcxIEBAIHZvaWQgT3B0aW9uczo6ZW5zdXJlT3B0
aW9uc0FyZUNvaGVyZW50KCkKICAgICAgICAgQ1JBU0goKTsKIH0KIAorT3B0aW9uOjpPcHRpb24o
T3B0aW9uSUQgaWQpCisgICAgOiBtX2lkKGlkKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4
ID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmljSW5kZXg7CisgICAg
T3B0aW9uVHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlOwor
CisgICAgc3dpdGNoICh0eXBlKSB7CisKKyNkZWZpbmUgSEFORExFX0NBU0UoT3B0aW9uVHlwZV8s
IHR5cGVfKSBcCisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblR5cGVfOiBcCisgICAgICAg
IEFTU0VSVCh0eXBlU3BlY2lmaWNJbmRleCA8IE51bWJlck9mIyNPcHRpb25UeXBlXyMjT3B0aW9u
cyk7IFwKKyAgICAgICAgbV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0
aW9uVHlwZV8jI09wdGlvbnNbdHlwZVNwZWNpZmljSW5kZXhdOyBcCisgICAgICAgIGJyZWFrOwor
CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKEhBTkRMRV9DQVNFKQorI3VuZGVmIEhBTkRM
RV9DQVNFCisgICAgfQorfQorCitjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkg
Y29uc3QKK3sKKyAgICBPcHRpb24gcmVzdWx0OworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4ID0g
T3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmljSW5kZXg7CisgICAgT3B0
aW9uVHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlOworCisg
ICAgcmVzdWx0Lm1faWQgPSBtX2lkOworICAgIHN3aXRjaCAodHlwZSkgeworCisjZGVmaW5lIEhB
TkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpP
cHRpb25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJP
ZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAgIHJlc3VsdC5tX3ZhbCMjT3B0aW9u
VHlwZV8gPSBnX2pzY0NvbmZpZy50eXBlIyNPcHRpb25UeXBlXyMjRGVmYXVsdE9wdGlvbnNbdHlw
ZVNwZWNpZmljSW5kZXhdOyBcCisgICAgICAgIGJyZWFrOworCisgICAgRk9SX0VBQ0hfSlNDX09Q
VElPTl9UWVBFKEhBTkRMRV9DQVNFKQorI3VuZGVmIEhBTkRMRV9DQVNFCisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6OkJvb2w6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFsQm9vbCA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgorICAgICAgICBidWls
ZGVyLmFwcGVuZChtX3ZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKLSAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIobV9lbnRyeS52YWxVbnNpZ25lZCk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlVu
c2lnbmVkOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFVuc2lnbmVkKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbFNpemUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpTaXplOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFNpemUpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2VudHJ5LnZhbERvdWJsZSk7CisgICAgY2Fz
ZSBPcHRpb25UeXBlSUQ6OkRvdWJsZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihtX3ZhbERvdWJsZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6SW50MzI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFs
SW50MzIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIobV92YWxJbnQzMik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFs
T3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlv
blJhbmdlOgorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3Ry
aW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0
cmluZzogewotICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX2VudHJ5LnZhbE9wdGlvblN0
cmluZzsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uU3RyaW5nOiB7CisgICAgICAgIGNv
bnN0IGNoYXIqIG9wdGlvbiA9IG1fdmFsT3B0aW9uU3RyaW5nOwogICAgICAgICBpZiAoIW9wdGlv
bikKICAgICAgICAgICAgIG9wdGlvbiA9ICIiOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicp
OwpAQCAtOTEwLDggKzk1Miw4IEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDogewotICAgICAgICBidWlsZGVy
LmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV9lbnRyeS52YWxHQ0xvZ0xldmVsKSk7
CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWw6IHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fdmFsR0NMb2dMZXZlbCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtOTIwLDIzICs5NjIsMjMgQEAgdm9pZCBPcHRpb246
OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcgogYm9vbCBPcHRpb246Om9wZXJhdG9yPT0oY29u
c3QgT3B0aW9uJiBvdGhlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNh
c2UgT3B0aW9uczo6VHlwZTo6Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbCA9
PSBvdGhlci5tX2VudHJ5LnZhbEJvb2w7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25l
ZDoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQgPT0gb3RoZXIubV9lbnRyeS52
YWxVbnNpZ25lZDsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6Ci0gICAgICAgIHJldHVy
biBtX2VudHJ5LnZhbFNpemUgPT0gb3RoZXIubV9lbnRyeS52YWxTaXplOwotICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICByZXR1cm4gKG1fZW50cnkudmFsRG91YmxlID09
IG90aGVyLm1fZW50cnkudmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX2VudHJ5LnZhbERvdWJs
ZSkgJiYgc3RkOjppc25hbihvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkpOwotICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6SW50MzI6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEludDMyID09IG90
aGVyLm1fZW50cnkudmFsSW50MzI7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25SYW5n
ZToKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSA9
PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7Ci0gICAgY2FzZSBP
cHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6Ci0gICAgICAgIHJldHVybiAobV9lbnRyeS52YWxP
cHRpb25TdHJpbmcgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25TdHJpbmcpCi0gICAgICAgICAg
ICB8fCAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV9lbnRyeS52YWxPcHRpb25T
dHJpbmcgJiYgIXN0cmNtcChtX2VudHJ5LnZhbE9wdGlvblN0cmluZywgb3RoZXIubV9lbnRyeS52
YWxPcHRpb25TdHJpbmcpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6Ci0g
ICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9nTGV2ZWwgPT0gb3RoZXIubV9lbnRyeS52YWxH
Q0xvZ0xldmVsOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgorICAgICAgICByZXR1cm4g
bV92YWxCb29sID09IG90aGVyLm1fdmFsQm9vbDsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6VW5z
aWduZWQ6CisgICAgICAgIHJldHVybiBtX3ZhbFVuc2lnbmVkID09IG90aGVyLm1fdmFsVW5zaWdu
ZWQ7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlNpemU6CisgICAgICAgIHJldHVybiBtX3ZhbFNp
emUgPT0gb3RoZXIubV92YWxTaXplOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpEb3VibGU6Cisg
ICAgICAgIHJldHVybiAobV92YWxEb3VibGUgPT0gb3RoZXIubV92YWxEb3VibGUpIHx8IChzdGQ6
OmlzbmFuKG1fdmFsRG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fdmFsRG91YmxlKSk7Cisg
ICAgY2FzZSBPcHRpb25UeXBlSUQ6OkludDMyOgorICAgICAgICByZXR1cm4gbV92YWxJbnQzMiA9
PSBvdGhlci5tX3ZhbEludDMyOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZToK
KyAgICAgICAgcmV0dXJuIG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSA9PSBvdGhlci5t
X3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9w
dGlvblN0cmluZzoKKyAgICAgICAgcmV0dXJuIChtX3ZhbE9wdGlvblN0cmluZyA9PSBvdGhlci5t
X3ZhbE9wdGlvblN0cmluZykKKyAgICAgICAgICAgIHx8IChtX3ZhbE9wdGlvblN0cmluZyAmJiBv
dGhlci5tX3ZhbE9wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fdmFsT3B0aW9uU3RyaW5nLCBvdGhl
ci5tX3ZhbE9wdGlvblN0cmluZykpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVs
OgorICAgICAgICByZXR1cm4gbV92YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fdmFsR0NMb2dMZXZl
bDsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjUxMTc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiSlNFeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC01MywzOSArNTIsMTkgQEAg
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogCiBjbGFzcyBPcHRpb25z
IHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIER1bXBMZXZlbCB7CisgICAgZW51bSBjbGFzcyBE
dW1wTGV2ZWwgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSA9IDAsCiAgICAgICAgIE92ZXJyaWRk
ZW4sCiAgICAgICAgIEFsbCwKICAgICAgICAgVmVyYm9zZQogICAgIH07CiAKLSAgICBlbnVtIGNs
YXNzIEF2YWlsYWJpbGl0eSB7CisgICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgOiB1aW50OF90
IHsKICAgICAgICAgTm9ybWFsID0gMCwKICAgICAgICAgUmVzdHJpY3RlZCwKICAgICAgICAgQ29u
ZmlndXJhYmxlCiAgICAgfTsKIAotI2RlZmluZSBERUNMQVJFX09QVElPTl9JRCh0eXBlXywgbmFt
ZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIG5h
bWVfIyNJRCwKLQotICAgIGVudW0gSUQgewotICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERF
Q0xBUkVfT1BUSU9OX0lEKQotICAgICAgICBudW1iZXJPZk9wdGlvbnMKLSAgICB9OwotI3VuZGVm
IERFQ0xBUkVfT1BUSU9OX0lECi0KLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICBCb29s
LAotICAgICAgICBVbnNpZ25lZCwKLSAgICAgICAgRG91YmxlLAotICAgICAgICBJbnQzMiwKLSAg
ICAgICAgU2l6ZSwKLSAgICAgICAgT3B0aW9uUmFuZ2UsCi0gICAgICAgIE9wdGlvblN0cmluZywK
LSAgICAgICAgR0NMb2dMZXZlbCwKLSAgICB9OwotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgLy8gUGFyc2VzIGEgc3RyaW5nIG9mIG9wdGlv
bnMgd2hlcmUgZWFjaCBvcHRpb24gaXMgb2YgdGhlIGZvcm1hdCAiLS08b3B0aW9uTmFtZT49PHZh
bHVlPiIKQEAgLTEwMiwxMyArODEsMTggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogCiAjZGVmaW5lIERFQ0xB
UkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJp
bGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVu
dHJ5Ojp0eXBlXyYgbmFtZV8oKSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zW25hbWVfIyNJ
RF0udmFsIyN0eXBlXzsgfSAgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5
Ojp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKSB7IHJldHVybiBnX2pzY0NvbmZpZy5kZWZhdWx0T3B0
aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0KLQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBn
X2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxP
cHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8jI0RlZmF1bHQo
KSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVm
YXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywg
T3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERF
Q0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRlZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMK
IAotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOworICAgIHN0
YXRpYyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRl
OgogCkBAIC0xMTYsOCArMTAwLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgRW50cnlJbmZvIHsK
ICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRp
b247Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgT3B0aW9uVHlwZUlEIHR5cGU7CiAgICAg
ICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAgIHVuc2lnbmVkIHR5cGVTcGVj
aWZpY0luZGV4OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBAIC0xMjksMTIyICsxMTQsNTQg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAg
c3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29u
c3QgY2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgY29uc3QgY2hh
ciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09w
dGlvbik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwgRHVtcExl
dmVsLCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1w
TGV2ZWwsIE9wdGlvbklELAogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0
IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKIAogICAgIHN0YXRpYyBi
b29sIHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBi
b29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKICAgICBzdGF0aWMgYm9vbCBv
dmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGljKGNvbnN0IGNoYXIqIG5hbWUpOwogCi0g
ICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW251bWJlck9mT3B0aW9uc107
CisgICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW051bWJlck9mT3B0aW9u
c107CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwogfTsKIAogY2xhc3MgT3B0aW9uIHsKIHB1
YmxpYzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQpCi0gICAgICAgIDogbV9pZChpZCkKLSAg
ICAgICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9wdGlvbnNbbV9pZF0pCi0gICAgewotICAgIH0K
LSAgICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOworCiAgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxk
ZXImKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICBPcHRpb25zOjpJRCBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAg
Y29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBPcHRpb25zOjpUeXBlIHR5cGUo
KSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3Q7
Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKKyAgICBPcHRpb25JRCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4g
T3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLm5hbWU7IH0KKyAgICBjb25zdCBjaGFy
KiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baWRJ
bmRleCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9wdGlvblR5cGVJRCB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLnR5cGU7IH0KKyAgICBPcHRp
b25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6
c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWlsYWJpbGl0eTsgfQorICAgIGJvb2wgaXNPdmVy
cmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gZGVmYXVsdE9wdGlvbigpOyB9CiAgICAg
Y29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsKLSAgICAKLSAgICBib29sJiBib29s
VmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7Ci0gICAgZG91YmxlJiBkb3VibGVW
YWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAgIE9wdGlvblJhbmdlIG9wdGlvblJh
bmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsKCk7Ci0gICAgR0NMb2dn
aW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBPbmx5
IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMuCi0gICAgT3B0aW9uKE9wdGlv
bnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAg
ICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgT3B0aW9uczo6SUQg
bV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKLX07CiAKLWlubGluZSBjb25zdCBjaGFy
KiBPcHRpb246Om5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJ
bmZvW21faWRdLm5hbWU7Ci19CisjZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1IoT3B0aW9uVHlwZV8s
IHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBlXygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJF
X0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IKIAotaW5saW5lIGNvbnN0IGNoYXIq
IE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29w
dGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1pbmxpbmUgT3B0aW9uczo6VHlwZSBP
cHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZv
W21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjph
dmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZv
W21faWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5saW5lIGJvb2wgT3B0aW9uOjppc092ZXJyaWRk
ZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19Ci0K
LWlubGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW21faWRdKTsK
LX0KLQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50
cnkudmFsQm9vbDsKLX0KLQotaW5saW5lIHVuc2lnbmVkJiBPcHRpb246OnVuc2lnbmVkVmFsKCkK
LXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZDsKLX0KK3ByaXZhdGU6CisgICAgT3B0
aW9uKCkgeyB9CiAKLWlubGluZSBkb3VibGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKLXsKLSAgICBy
ZXR1cm4gbV9lbnRyeS52YWxEb3VibGU7Ci19CisgICAgc2l6ZV90IGlkSW5kZXgoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1faWQpOyB9CiAKLWlubGluZSBpbnQzMl90JiBP
cHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMjsKLX0KKyAg
ICBPcHRpb25JRCBtX2lkOworICAgIHVuaW9uIHsKIAotaW5saW5lIE9wdGlvblJhbmdlIE9wdGlv
bjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdl
OwotfQorI2RlZmluZSBERUNMQVJFX01FTUJFUihPcHRpb25UeXBlXywgdHlwZV8pIFwKKyAgICAg
ICAgdHlwZV8gbV92YWwjI09wdGlvblR5cGVfOworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQ
RShERUNMQVJFX01FTUJFUikKKyN1bmRlZiBERUNMQVJFX01FTUJFUgogCi1pbmxpbmUgY29uc3Qg
Y2hhciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZh
bE9wdGlvblN0cmluZzsKLX0KLQotaW5saW5lIEdDTG9nZ2luZzo6TGV2ZWwmIE9wdGlvbjo6Z2NM
b2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZlbDsKLX0KKyAg
ICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1MTE3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDE1ICsyNSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogLy8gSG93
IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qg
b2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKIC8vIGFsb25nIHdpdGggdGhlaXIgdHlwZXMgYW5k
IGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucyB2YWx1ZXMgYXJlIGFjdHVhbGx5Ci0vLyByZWFs
aXplZCBhcyBhbiBhcnJheSBvZiBPcHRpb25FbnRyeSBlbGVtZW50cyBpbiBKU0M6OkNvbmZpZy4K
Ky8vIHJlYWxpemVkIGFzIGFycmF5cyBvZiBlYWNoIG9mIHRoZSBPcHRpb25UeXBlcyBpbiBKU0M6
OkNvbmZpZy4KIC8vCi0vLyAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpIHdpbGwgaW5pdGlhbGl6
ZSB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAorLy8gICAgIE9wdGlvbnM6OmluaXRp
YWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5cyBvZiBvcHRpb25zIHZhbHVlcyB3aXRo
CiAvLyB0aGUgZGVmYXVsdHMgc3BlY2lmaWVkIGluIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBiZWxv
dy4gQWZ0ZXIgdGhhdCwgdGhlIHZhbHVlcyBjYW4KIC8vIGJlIHByb2dyYW1tYXRpY2FsbHkgcmVh
ZCBhbmQgd3JpdHRlbiB0byB1c2luZyBhbiBhY2Nlc3NvciBtZXRob2Qgd2l0aCB0aGUKIC8vIHNh
bWUgbmFtZSBhcyB0aGUgb3B0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIG9wdGlvbiAidXNlSklUIiBj
YW4gYmUgcmVhZCBhbmQKQEAgLTU0LDYgKzU3LDY4IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gY2hl
Y2tzIGFyZSBkb25lIGFmdGVyIHRoZSBvcHRpb24gdmFsdWVzIGFyZSBzZXQuIElmIHlvdSBhbHRl
ciB0aGUgb3B0aW9uCiAvLyB2YWx1ZXMgYWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgKGZvciB5b3Vy
IG93biB0ZXN0aW5nKSwgdGhlbiB5b3UncmUgbGlhYmxlIHRvCiAvLyBlbnN1cmUgdGhhdCB0aGUg
bmV3IHZhbHVlcyBzZXQgYXJlIHNhbmUgYW5kIHJlYXNvbmFibGUgZm9yIHlvdXIgb3duIHJ1bi4K
Ky8vCisvLyBBbnkgbW9kaWZpY2F0aW9ucyB0byBvcHRpb25zIG11c3QgYmUgZG9uZSBiZWZvcmUg
dGhlIGZpcnN0IFZNIGlzIGluc3RhbnRpYXRlLgorLy8gT24gaW5zdGFudGlhdGlvbiBvZiB0aGUg
Zmlyc3QgVk0gaW5zdGFuY2UsIHRoZSBPcHRpb25zIHdpbGwgYmUgd3JpdGUgcHJvdGVjdGVkCisv
LyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIHRoZXJlYWZ0ZXIuCisKK2NsYXNzIE9wdGlvblJhbmdl
IHsKK3ByaXZhdGU6CisgICAgZW51bSBSYW5nZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdEVy
cm9yLCBOb3JtYWwsIEludmVydGVkIH07CitwdWJsaWM6CisgICAgT3B0aW9uUmFuZ2UmIG9wZXJh
dG9yPSAoY29uc3QgaW50JiByaHMpCisgICAgeyAvLyBPbmx5IG5lZWRlZCBmb3IgaW5pdGlhbGl6
YXRpb24KKyAgICAgICAgaWYgKCFyaHMpIHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBVbmluaXRp
YWxpemVkOworICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7CisgICAgICAgICAgICBtX2xv
d0xpbWl0ID0gMDsKKyAgICAgICAgICAgIG1faGlnaExpbWl0ID0gMDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsK
KyAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7CisgICAgY29uc3QgY2hhciogcmFuZ2VTdHJp
bmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5n
IDogc19udWxsUmFuZ2VTdHI7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVs
bFJhbmdlU3RyOworCisgICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOworICAgIGNvbnN0IGNoYXIqIG1f
cmFuZ2VTdHJpbmc7CisgICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKKyAgICB1bnNpZ25lZCBtX2hp
Z2hMaW1pdDsKK307CisKKyNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKHYpIFwKKyAg
ICB2KEJvb2wsIGJvb2wpIFwKKyAgICB2KFVuc2lnbmVkLCB1bnNpZ25lZCkgXAorICAgIHYoRG91
YmxlLCBkb3VibGUpIFwKKyAgICB2KEludDMyLCBpbnQzMl90KSBcCisgICAgdihTaXplLCBzaXpl
X3QpIFwKKyAgICB2KE9wdGlvblJhbmdlLCBPcHRpb25SYW5nZSkgXAorICAgIHYoT3B0aW9uU3Ry
aW5nLCBjb25zdCBjaGFyKikgXAorICAgIHYoR0NMb2dMZXZlbCwgR0NMb2dnaW5nOjpMZXZlbCkg
XAorCituYW1lc3BhY2UgT3B0aW9uVHlwZXMgeworCisjZGVmaW5lIERFQ0xBUkVfVFlQRVMoT3B0
aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdXNpbmcgT3B0aW9uVHlwZV8gPSB0eXBlXzsKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9UWVBFUykKKyN1bmRlZiBERUNMQVJFX1RZ
UEVTCisKK30gLy8gbmFtZXNwYWNlIE9wdGlvblR5cGVzCisKK2VudW0gY2xhc3MgT3B0aW9uVHlw
ZUlEIDogdWludDhfdCB7CisKKyNkZWZpbmUgREVDTEFSRV9UWVBFSUQoT3B0aW9uVHlwZV8sIHR5
cGVfKSBcCisgICAgT3B0aW9uVHlwZV8sCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERF
Q0xBUkVfVFlQRUlEKQorI3VuZGVmIERFQ0xBUkVfVFlQRUlECisKK307CiAKICNkZWZpbmUgRk9S
X0VBQ0hfSlNDX09QVElPTih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB2KEJvb2wsIHVzZUtlcm5UQ1NNLCB0cnVlLCBOb3JtYWwsICJOb3RlOiB0aGlz
IG5lZWRzIHRvIGdvIGJlZm9yZSBvdGhlciBvcHRpb25zIHNpbmNlIHRoZXkgZGVwZW5kIG9uIHRo
aXMgdmFsdWUuIikgXApAQCAtNTEwLDYgKzU3NSwyOSBAQCBlbnVtIE9wdGlvbkVxdWl2YWxlbmNl
IHsKICAgICB2KG1heGltdW1GVExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCBtYXhpbXVtRlRM
Q2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAgICAgdihtYXhpbXVtSW5saW5p
bmdDYWxsZXJTaXplLCBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRlY29kZUNvc3QsIFNhbWVPcHRp
b24pIFwKIAorI2RlZmluZSBERUNMQVJFX09QVElPTl9JRCh0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIG5hbWVfLAorZW51bSBj
bGFzcyBPcHRpb25JRCA6IHVpbnQxNl90IHsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xB
UkVfT1BUSU9OX0lEKQorfTsKKyN1bmRlZiBERUNMQVJFX09QVElPTl9JRAorCitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBJbnZhbGlkT3B0aW9uSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOworCit0ZW1wbGF0ZTxPcHRpb25UeXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+
Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCkKK3sKKyAgICBzaXpl
X3QgaW5kZXggPSAwOworI2RlZmluZSBDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCh0eXBlXywg
bmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAg
IGlmIChpZCA9PSBPcHRpb25JRDo6bmFtZV8pIFwKKyAgICAgICAgcmV0dXJuIGluZGV4OyBcCisg
ICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBlXykgXAorICAgICAgICBpbmRleCsrOwor
CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCk7Cisj
dW5kZWYgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gKKyAgICByZXR1cm4gSW52YWxpZE9wdGlv
bkluZGV4OworfQogCiBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCkK
IHsKQEAgLTUyMiw1ICs2MTAsMjQgQEAgY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlND
T3B0aW9ucwogCiBjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9ucyA9IGNvdW50TnVtYmVy
T2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworY29uc3RleHByIHNpemVfdCBj
b3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQgdHlwZSkKK3sKKyAgICBz
aXplX3QgY291bnQgPSAwOworI2RlZmluZSBDT1VOVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZh
dWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBpZiAodHlwZSA9
PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGNvdW50Kys7CisgICAgRk9SX0VBQ0hf
SlNDX09QVElPTihDT1VOVF9PUFRJT04pOworI3VuZGVmIENPVU5UX09QVElPTgorICAgIHJldHVy
biBjb3VudDsKK30KIAorY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkJvb2xPcHRpb25zID0gY291
bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpCb29sKTsKK2NvbnN0ZXhw
ciBzaXplX3QgTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9u
c09mVHlwZShPcHRpb25UeXBlSUQ6OlVuc2lnbmVkKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVy
T2ZEb3VibGVPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlw
ZUlEOjpEb3VibGUpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkludDMyT3B0aW9ucyA9IGNv
dW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6SW50MzIpOworY29uc3Rl
eHByIHNpemVfdCBOdW1iZXJPZlNpemVPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNP
ZlR5cGUoT3B0aW9uVHlwZUlEOjpTaXplKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRp
b25SYW5nZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBl
SUQ6Ok9wdGlvblJhbmdlKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25TdHJpbmdP
cHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRp
b25TdHJpbmcpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zID0g
Y291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsKTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381108</attachid>
            <date>2019-10-16 14:32:44 -0700</date>
            <delta_ts>2019-10-16 16:45:45 -0700</delta_ts>
            <desc>refactored test patch for checking Windows build.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>98563</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQ0LDYgKzQ0NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCiAgICAg
YXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5oCiAgICAgYXNzZW1ibGVyL0NQVS5oCisgICAgYXNz
ZW1ibGVyL0NQVUlubGluZXMuaAogICAgIGFzc2VtYmxlci9Db2RlTG9jYXRpb24uaAogICAgIGFz
c2VtYmxlci9MaW5rQnVmZmVyLmgKICAgICBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC01
MTksNiArNTIwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQog
ICAgIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKICAgICBieXRlY29kZS9VbmxpbmtlZEV2
YWxDb2RlQmxvY2suaAogICAgIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
KyAgICBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAogICAgIGJ5
dGVjb2RlL1VubGlua2VkR2xvYmFsQ29kZUJsb2NrLmgKICAgICBieXRlY29kZS9VbmxpbmtlZE1l
dGFkYXRhVGFibGUuaAogICAgIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCkBAIC02ODQsNiArNjg2
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGppdC9B
c3NlbWJseUhlbHBlcnMuaAogICAgIGppdC9DQ2FsbEhlbHBlcnMuaAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKKyAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvcklubGluZXMuaAogICAg
IGppdC9GUFJJbmZvLmgKICAgICBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKICAgICBqaXQv
R1BSSW5mby5oCkBAIC05MjAsOCArOTIzLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCiAg
ICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAogICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5oCi0g
ICAgcnVudGltZS9PcHRpb25FbnRyeS5oCiAgICAgcnVudGltZS9PcHRpb25zLmgKKyAgICBydW50
aW1lL09wdGlvbnNJbmxpbmVzLmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50
aW1lL1BhcnNlSW50LmgKICAgICBydW50aW1lL1ByaXZhdGVOYW1lLmgKQEAgLTEwMTEsNiArMTAx
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICB3YXNt
L1dhc21Db2RlQmxvY2suaAogICAgIHdhc20vV2FzbUNvbXBpbGF0aW9uTW9kZS5oCiAgICAgd2Fz
bS9XYXNtQ29udGV4dC5oCisgICAgd2FzbS9XYXNtQ29udGV4dElubGluZXMuaAogICAgIHdhc20v
V2FzbUVtYmVkZGVyLmgKICAgICB3YXNtL1dhc21FeGNlcHRpb25UeXBlLmgKICAgICB3YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW1wb3J0ICJKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkpTVmlydHVhbE1hY2hpbmVQcml2YXRlLmgiCiAjaW1wb3J0ICJKU1dyYXBwZXJNYXAuaCIKKyNp
bXBvcnQgIk9wdGlvbnNJbmxpbmVzLmgiCiAjaW1wb3J0ICJTaWdpbGxDcmFzaEFuYWx5emVyLmgi
CiAjaW1wb3J0ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbXBvcnQgPG11dGV4PgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2aXNp
b24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFuIGpz
Y09wdGlvbnNTZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5cGVf
LCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAg
ICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0
eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIGlmICghdmFsdWVGcm9tR1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVfKCkg
PSB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYs
NyArMTg2LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAogewog
I2RlZmluZSBHRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZh
aWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBv
cHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9w
dGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAg
ICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6
bmFtZV8oKTsgICAgICAgICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVUb0dl
dCwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVy
biBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfQpAQCAtNjE2LDggKzYxNiw4IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFjaChK
U0NPcHRpb25zRnVuYyAKIAogI2RlZmluZSBWSVNJVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZh
dWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoT3B0aW9u
czo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6
Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6bmFtZV8j
I0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKLSAgICAgICAg
T3B0aW9uRW50cnk6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVf
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKKyAgICAgICAgT3B0
aW9uVHlwZXM6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgYXV0byBvcHRpb25UeXBlID0ganNjT3B0aW9uc1R5cGUoZGVmYXVsdFZh
bHVlKTsgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKGZ1bmN0aW9uICgjbmFtZV8sIG9w
dGlvblR5cGUsIGRlc2NyaXB0aW9uXywgdXNlckRhdGEpKSAgICAgIFwKICAgICAgICAgICAgIHJl
dHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKQEAgLTY2Niw3ICs2NjYsNyBAQCBHT3B0aW9uR3JvdXAqIGpzY19vcHRpb25zX2dldF9vcHRp
b25fZ3JvCiAgICAgR0FycmF5KiBlbnRyaWVzID0gZ19hcnJheV9uZXcoVFJVRSwgVFJVRSwgc2l6
ZW9mKEdPcHRpb25FbnRyeSkpOwogI2RlZmluZSBSRUdJU1RFUl9PUFRJT04odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAo
T3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWlsYWJp
bGl0eTo6Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6
bmFtZV8jI0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKKyAg
ICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBPcHRpb25zOjpB
dmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBuYW1lKGdfc3RyZHVwX3ByaW50ZigianNjLSVzIiwgI25hbWVfKSk7ICAgICAgIFwKICAgICAg
ICAgZW50cmllcyA9IGdfYXJyYXlfc2V0X3NpemUoZW50cmllcywgZW50cmllcy0+bGVuICsgMSk7
IFwKICAgICAgICAgR09wdGlvbkVudHJ5KiBlbnRyeSA9ICZnX2FycmF5X2luZGV4KGVudHJpZXMs
IEdPcHRpb25FbnRyeSwgZW50cmllcy0+bGVuIC0gMSk7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5j
cHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0NvbnRleHRS
ZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdC5oIgotI2luY2x1ZGUgIk9wdGlvbnMu
aCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgPHN0cmluZz4KIAogdXNp
bmcgSlNDOjpPcHRpb25zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9K
U09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9KU09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5jcHAJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNPYmplY3RH
ZXRQcm94eVRhcmdldFRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiSlNPYmplY3RSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2lu
Y2x1ZGUgIkphdmFTY3JpcHQuaCIKLSNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUHJv
eHlPYmplY3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvTXVsdGl0aHJlYWRlZE11bHRpVk1FeGVjdXRpb25UZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL011bHRpdGhyZWFk
ZWRNdWx0aVZNRXhlY3V0aW9uVGVzdC5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTXVsdGl0aHJlYWRlZE11bHRpVk1FeGVjdXRpb25UZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkluaXRpYWxp
emVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0NvbnRleHRSZWZQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiSmF2YVNjcmlwdC5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDxtdXRleD4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dGhyZWFkPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVy
Zmxvd1Rlc3QuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1
ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0LmgiCi0jaW5j
bHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIk9wdGlvbnNJbmxpbmVzLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBKU0M6Ok9wdGlvbnM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE4NjQsNiArMTg2NCwxMSBAQAogCQlGRTFCRDAyMTFFNzIwMjc5MDAx
MzRCQzkgLyogQ2VsbFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMUJEMDIwMUU3MjAyNzAwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oICov
OyB9OwogCQlGRTFCRDAyNTFFNzIwNTM4MDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMzFFNzIwNTJG
MDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmggKi87IH07CiAJCUZFMUMwRkZEMUIxOTNFOTgwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTFENkQzNzIzNTdB
MEIzMDA3QTVDMjYgLyogT3B0aW9uc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDM2MjM1N0EwQjMwMDdBNUMyNiAvKiBPcHRpb25z
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFMUQ2RDM5MjM1N0ExRTIwMDdBNUMyNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9ySW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxRDZE
MzgyMzU3QTFFMjAwN0E1QzI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JJbmxpbmVzLmggKi87IH07
CisJCUZFMUQ2RDNCMjM1N0EyRDEwMDdBNUMyNiAvKiBDUFVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFENkQzQTIzNTdBMkQxMDA3QTVD
MjYgLyogQ1BVSW5saW5lcy5oICovOyB9OworCQlGRTFENkQzRDIzNTdBN0Y1MDA3QTVDMjYgLyog
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFENkQzQzIzNTdBN0Y0MDA3QTVDMjYgLyogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmggKi87IH07CisJCUZFMUQ2RDQxMjM1N0Iy
M0UwMDdBNUMyNiAvKiBXYXNtVGllclVwQ291bnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFENkQ0MDIzNTdCMjNEMDA3QTVDMjYgLyog
V2FzbVRpZXJVcENvdW50SW5saW5lcy5oICovOyB9OwogCQlGRTFFMkMzRjIyNDBERDU4MDBGNkI3
MjkgLyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNFMjI0MEQzMEIwMEY2QjcyOSAvKiBNYWNyb0Fzc2Vt
YmxlckFSTTY0RS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNEMjI0MEQy
RjYwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg3Miw3ICsxODc3LDYgQEAKIAkJ
RkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFFNDI4NTY3MDBCQUM0OTMg
LyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2Ny
aXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQyMjEyMUQ2QjgxQzMwMDMy
QkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFMzg0MjMyMjMy
NEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVu
dHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUg
LyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpA
QCAtNTA0Niw2ICs1MDUwLDExIEBACiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFw
VmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxRDZEMzYy
MzU3QTBCMzAwN0E1QzI2IC8qIE9wdGlvbnNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9wdGlvbnNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFMUQ2RDM4MjM1N0ExRTIwMDdBNUMyNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9ySW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9y
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQzQTIzNTdBMkQx
MDA3QTVDMjYgLyogQ1BVSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDUFVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDNDMjM1
N0E3RjQwMDdBNUMyNiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDQwMjM1N0IyM0Qw
MDdBNUMyNiAvKiBXYXNtVGllclVwQ291bnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21UaWVyVXBDb3VudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUxRTJDM0MyMjQwQzFFRjAwRjZCNzI5IC8qIEpTQ1B0clRhZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NQdHJUYWcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkMzRDIyNDBEMkY2MDBGNkI3MjkgLyogQVJNNjRF
QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTTY0RUFzc2Vt
Ymxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkMzRTIyNDBEMzBCMDBG
NkI3MjkgLyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUwNzMsNyArNTA4Miw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBP
cHRpb25zLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAv
KiBPcGNvZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNv
ZGVHcm91cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZD
NzAwMEY0Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0
aCA9IE1ldGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIz
MjRENTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3B0aW9uRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUz
ODQyMzEyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTU2LDYgKzU5NjQsNyBAQAogCQkJCTBGRjA1NEY4MUFD
MzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCAqLywKIAkJCQlBN0I0
OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJ
QTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLywKKwkJ
CQlGRTFENkQzODIzNTdBMUUyMDA3QTVDMjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvcklubGluZXMu
aCAqLywKIAkJCQkwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oICovLAogCQkJ
CTBGNzY2RDJEMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwICov
LAogCQkJCTBGNzY2RDJFMTVBOERDREQwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCAqLywKQEAgLTY4MDgsNiArNjgxNyw3IEBACiAJCQkJNTI1MEQyRDAxRThEQTA1QTAwMjlBOTMy
IC8qIFdhc21UaHVua3MuaCAqLywKIAkJCQlFM0M2OTRCMjIzMDI2ODc0MDA2RkJFNDIgLyogV2Fz
bVRpZXJVcENvdW50LmNwcCAqLywKIAkJCQk1M0U5RTBBRTFFQUVDNDU3MDBGRUUyNTEgLyogV2Fz
bVRpZXJVcENvdW50LmggKi8sCisJCQkJRkUxRDZENDAyMzU3QjIzRDAwN0E1QzI2IC8qIFdhc21U
aWVyVXBDb3VudElubGluZXMuaCAqLywKIAkJCQk1M0ZGN0Y5QTFEQkZEMkI5MDBBMjZDQ0MgLyog
V2FzbVZhbGlkYXRlLmNwcCAqLywKIAkJCQk1M0ZGN0Y5ODFEQkZDRDkwMDBBMjZDQ0MgLyogV2Fz
bVZhbGlkYXRlLmggKi8sCiAJCQkJNTMwRkIzMDMxRTdBMTE0NjAwM0MxOUREIC8qIFdhc21Xb3Jr
bGlzdC5jcHAgKi8sCkBAIC03MzgyLDkgKzczOTIsOSBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMw
MDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICov
LAogCQkJCUY2OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQlGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0
MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovLAorCQkJCUZFMUQ2RDM2MjM1N0EwQjMwMDdBNUMyNiAvKiBP
cHRpb25zSW5saW5lcy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRp
b25zTGlzdC5oICovLAogCQkJCTM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5o
ICovLAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovLApA
QCAtODA0MSw2ICs4MDUxLDcgQEAKIAkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29k
ZUxvY2F0aW9uLmggKi8sCiAJCQkJNTIzMzU2MjgyMjVFQjhFOTAwMjY4QkQyIC8qIENQVS5jcHAg
Ki8sCiAJCQkJMEYzMEQ3QkYxRDk1RDYyRjAwNTMwODlEIC8qIENQVS5oICovLAorCQkJCUZFMUQ2
RDNBMjM1N0EyRDEwMDdBNUMyNiAvKiBDUFVJbmxpbmVzLmggKi8sCiAJCQkJMEYzNzMwOEUxQzBD
RDY4NTAwMDUyQkZBIC8qIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovLAog
CQkJCTBGRjQyNzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCAqLywKIAkJCQk4
NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oICovLApAQCAtODI3Nyw2ICs4
Mjg4LDcgQEAKIAkJCQkxNEFEOTExRDFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jay5oICovLAogCQkJCTE0MTQyRTU0MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQxNDJFNTAxQjc5NkVDRTAwRjRCRjRC
IC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggKi8sCisJCQkJRkUxRDZEM0MyMzU3QTdG
NDAwN0E1QzI2IC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oICovLAogCQkJ
CTE0QUQ5MTFDMURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jay5oICov
LAogCQkJCUUzMDYwMTI4MjI4Rjk3ODEwMEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUu
Y3BwICovLAogCQkJCTE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRh
VGFibGUuaCAqLywKQEAgLTg3OTcsNiArODgwOSw3IEBACiAJCQkJMEZFQzg1OEUxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpclRtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1OEYxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpclRtcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUNGOTgxMUU5
NkYxN0YwMEMxODY5MiAvKiBBaXJUbXBNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2RDM3
MjM1N0EwQjMwMDdBNUMyNiAvKiBPcHRpb25zSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5QzAzRDUxRTk0NzZGMjAwQ0Q5MTI1IC8qIEFpclRtcFNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFMEU0QUUxQzI0Qzk0QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjM3MzA5MzFDMEQ2N0VFMDAwNTJCRkEgLyogQWlyVXNlQ291bnRzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkyMjAsNiArOTIzMyw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFE
MUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RUM5REQwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdDMzlGRjFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTFENkQ0MTIzNTdCMjNFMDA3QTVDMjYgLyogV2FzbVRpZXJVcENvdW50SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgy
RTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTkzMjksNiArOTM0Myw3IEBACiAJCQkJMEY1NkExRDMxNTAw
MEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDRBN0IwMjBCRjY4NjIwMDIyQjE3MSAvKiBFeGl0RmxhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTFENkQzQjIzNTdBMkQxMDA3QTVDMjYgLyogQ1BVSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQUM3NTQxODhFNUVDODAwMzIwMjlGIC8qIEV4aXRpbmdKSVRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtp
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NDMsNiArOTY1OCw3IEBACiAJ
CQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFNzQ5N0U2MjA5MDAxQjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUQ2RDM5MjM1N0ExRTIwMDdBNUMyNiAv
KiBFeGVjdXRhYmxlQWxsb2NhdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJBQUY3
Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmll
d1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTA1LDcgKzk5MjEsNiBAQAogCQkJCTBG
MkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1Njk4NzIyMjg0MTE4NzAwOENEQ0NCIC8qIFBhY2tl
ZENlbGxQdHIuaCBpbiBIZWFkZXJzICovLApAQCAtOTk1NCw2ICs5OTY5LDcgQEAKIAkJCQk4NjE1
OEFCMzE1NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ1NDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkUxRDZEM0QyMzU3QTdGNTAwN0E1QzI2IC8qIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUw
RTE2RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmNwcAkocmV2aXNpb24g
MjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ1BVLmgiCiAKKyNpbmNsdWRlICJDUFVJbmxpbmVzLmgiCisKICNpZiAoQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkpICYmIE9TKERBUldJTikKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxz
eXMvc3lzY3RsLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHJl
dmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0xMTYsMzAgKzExNSwxNSBAQCBjb25zdGV4cHIgYm9vbCBpc01JUFMoKQog
I2VuZGlmCiB9CiAKLWlubGluZSBib29sIG9wdGltaXplRm9yQVJNdjdJRElWU3VwcG9ydGVkKCkK
LXsKLSAgICByZXR1cm4gaXNBUk12N0lESVZTdXBwb3J0ZWQoKSAmJiBPcHRpb25zOjp1c2VBcmNo
aXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKLX0KK2lubGluZSBib29sIG9wdGltaXpl
Rm9yQVJNdjdJRElWU3VwcG9ydGVkKCk7CiAKLWlubGluZSBib29sIG9wdGltaXplRm9yQVJNNjQo
KQotewotICAgIHJldHVybiBpc0FSTTY0KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3Bl
Y2lmaWNPcHRpbWl6YXRpb25zKCk7Ci19CitpbmxpbmUgYm9vbCBvcHRpbWl6ZUZvckFSTTY0KCk7
CiAKLWlubGluZSBib29sIG9wdGltaXplRm9yWDg2KCkKLXsKLSAgICByZXR1cm4gaXNYODYoKSAm
JiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKLX0KK2lu
bGluZSBib29sIG9wdGltaXplRm9yWDg2KCk7CiAKLWlubGluZSBib29sIG9wdGltaXplRm9yWDg2
XzY0KCkKLXsKLSAgICByZXR1cm4gaXNYODZfNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1
cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKLX0KK2lubGluZSBib29sIG9wdGltaXplRm9yWDg2
XzY0KCk7CiAKLWlubGluZSBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKQotewotICAgIHJl
dHVybiBvcHRpbWl6ZUZvclg4NigpOwotfQoraW5saW5lIGJvb2wgaGFzU2Vuc2libGVEb3VibGVU
b0ludCgpOwogCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiBPUyhEQVJXSU4pCiBi
b29sIGlzS2VyblRDU01BdmFpbGFibGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQ1BVSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQ1BVSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQ1BVSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkNQVS5oIgorI2luY2x1ZGUgIk9wdGlvbnNJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBvcHRpbWl6ZUZvckFSTXY3SURJVlN1
cHBvcnRlZCgpCit7CisgICAgcmV0dXJuIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkgJiYgT3B0aW9u
czo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7Cit9CisKK2lubGluZSBi
b29sIG9wdGltaXplRm9yQVJNNjQoKQoreworICAgIHJldHVybiBpc0FSTTY0KCkgJiYgT3B0aW9u
czo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCk7Cit9CisKK2lubGluZSBi
b29sIG9wdGltaXplRm9yWDg2KCkKK3sKKyAgICByZXR1cm4gaXNYODYoKSAmJiBPcHRpb25zOjp1
c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKTsKK30KKworaW5saW5lIGJvb2wg
b3B0aW1pemVGb3JYODZfNjQoKQoreworICAgIHJldHVybiBpc1g4Nl82NCgpICYmIE9wdGlvbnM6
OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1pemF0aW9ucygpOworfQorCitpbmxpbmUgYm9v
bCBoYXNTZW5zaWJsZURvdWJsZVRvSW50KCkKK3sKKyAgICByZXR1cm4gb3B0aW1pemVGb3JYODYo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDkgKzMwLDEwIEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
aXNhc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9ySW5saW5lcy5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
T3B0aW9ucy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21Db21waWxh
dGlvbk1vZGUuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoQVNTRU1CTEVSKQogCi0jaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIk9w
dGlvbnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJGVExTdGF0ZS5o
IgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCShyZXZpc2lvbiAyNTExOTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNQVS5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNp
bmNsdWRlICJKU0V4cG9ydE1hY3Jvcy5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0R1cGxpY2F0ZVRhaWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vw
c2lsb25WYWx1ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiT3B0
aW9uc0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5l
cmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJh
dGUuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJC
M1JlZHVjZVN0cmVuZ3RoLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUg
IkIzVmFsaWRhdGUuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlBD
VG9Db2RlT3JpZ2luTWFwLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18xLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCShyZXZpc2lvbiAyNTExOTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiT3B0aW9u
c0lubGluZXMuaCIKKwogTG9jayBjcmFzaExvY2s7CiAKIGJvb2wgc2hvdWxkUnVuKGNvbnN0IGNo
YXIqIGZpbHRlciwgY29uc3QgY2hhciogdGVzdE5hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfNS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjNfNS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAog
I2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgorCiB2b2lk
IHRlc3RQYXRjaHBvaW50TWFueVdhcm1BbnlJbW1zKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcAkocmV2aXNpb24gMjUxMTky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM182LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIk9w
dGlvbnNJbmxpbmVzLmgiCisKIHZvaWQgdGVzdEJpdEFuZFNFeHQzMihpbnQzMl90IHZhbHVlLCBp
bnQ2NF90IG1hc2spCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFj
a0J5TGluZWFyU2Nhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJBaXJTdGFja0FsbG9jYXRpb24uaCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQWlyVG1wTWFwLmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNs
dWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYvUmFuZ2UuaD4KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3Mu
aCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tBbGxvY2F0
aW9uLmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tVdGlscy5oIgogI2luY2x1ZGUgIkIzUHJv
Y2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNTdGFja1Nsb3QuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJh
dGUuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclVzZUNvdW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyVXNlQ291bnRzLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyVXNlQ291bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJBaXJCbG9ja1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiQWlyQ29k
ZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5o
PgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJbml0aWFsaXplVGhy
ZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5o
IgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKICNpbmNsdWRlIDxjbWF0aD4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCShyZXZpc2lvbiAy
NTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJPcHRpb25zLmgi
CisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTcsMTIgKzIxNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRlY29kZUNhY2hlZENvZGVC
bG9ja3MoVk0mKTsKIAotICAgIGJvb2wgY29kZUJsb2NrRWRnZU1heUJlV2VhaygpIGNvbnN0Ci0g
ICAgewotICAgICAgICAvLyBDdXJyZW50bHksIGJ5dGVjb2RlIGNhY2hlIGFzc3VtZXMgdGhhdCB0
aGUgdHJlZSBvZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBhbmQgVW5saW5rZWRDb2RlQmxv
Y2sgd2lsbCBub3QgYmUgZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgaXMgbGl2ZS4KLSAgICAg
ICAgLy8gQnl0ZWNvZGUgY2FjaGUgdXNlcyB0aGlzIGFzdW1wdGlvbiB0byBhdm9pZCBkdXBsaWNh
dGUgbWF0ZXJpYWxpemF0aW9uIGJ5IGJvb2trZWVwaW5nIHRoZSBoZWFwIGNlbGxzIGluIHRoZSBv
ZmZzdGUtdG8tcG9pbnRlciBtYXAuCi0gICAgICAgIHJldHVybiBWTTo6dXNlVW5saW5rZWRDb2Rl
QmxvY2tKZXR0aXNvbmluZygpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlOwotICAgIH0KKyAg
ICBpbmxpbmUgYm9vbCBjb2RlQmxvY2tFZGdlTWF5QmVXZWFrKCkgY29uc3Q7CiAKICAgICB1bnNp
Z25lZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENv
bnRleHQgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJW
TUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBib29sIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tFZGdlTWF5QmVXZWFrKCkgY29uc3QKK3sKKyAgICAv
LyBDdXJyZW50bHksIGJ5dGVjb2RlIGNhY2hlIGFzc3VtZXMgdGhhdCB0aGUgdHJlZSBvZiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBhbmQgVW5saW5rZWRDb2RlQmxvY2sgd2lsbCBub3QgYmUg
ZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgaXMgbGl2ZS4KKyAgICAvLyBCeXRlY29kZSBjYWNo
ZSB1c2VzIHRoaXMgYXN1bXB0aW9uIHRvIGF2b2lkIGR1cGxpY2F0ZSBtYXRlcmlhbGl6YXRpb24g
YnkgYm9va2tlZXBpbmcgdGhlIGhlYXAgY2VsbHMgaW4gdGhlIG9mZnN0ZS10by1wb2ludGVyIG1h
cC4KKyAgICByZXR1cm4gVk06OnVzZVVubGlua2VkQ29kZUJsb2NrSmV0dGlzb25pbmcoKSAmJiAh
bV9pc0dlbmVyYXRlZEZyb21DYWNoZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJERkdDb21tb24u
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiT3B0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uV2hpdGVs
aXN0LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVk
ZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjUx
MTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJDUFVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJE
RkdQaGFzZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFj
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSnVt
cFJlcGxhY2VtZW50LmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw2IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKLSNpbmNsdWRlICJPcHRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKKyNpbmNs
dWRlICJDUFVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1g4NkRpc2Fzc2VtYmxl
ci5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvWDg2RGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2lmIFVTRShVRElTODYpCiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
LSNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVURpczg2RGlzYXNzZW1ibGVyLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwLmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2
IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVHlwZWRQb2ludGVyLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNsdWRlICJC
M1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiQ1BVSW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiAjaW5jbHVkZSAiVHlwZVByb2Zp
bGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRD
b2RlQmxvY2suaCIKLSNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlZpc2l0Q291bnRlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXZWFrTWFwSW1wbElubGluZXMuaCIKQEAgLTI5OSw2ICsyOTksOCBAQCBIZWFwOjpIZWFwKFZN
JiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkKICAgICAsIG1f
Y29kZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKICAgICAsIG1faml0U3R1YlJv
dXRpbmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCisgICAgLCBtX211dGF0b3JT
aG91bGRCZUZlbmNlZChPcHRpb25zOjpmb3JjZUZlbmNlZEJhcnJpZXIoKSkKKyAgICAsIG1fYmFy
cmllclRocmVzaG9sZChPcHRpb25zOjpmb3JjZUZlbmNlZEJhcnJpZXIoKSA/IHRhdXRvbG9naWNh
bFRocmVzaG9sZCA6IGJsYWNrVGhyZXNob2xkKQogICAgICwgbV92bSh2bSkKICAgICAvLyBXZSBz
ZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUgZG9l
c24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1bGUgdGhlIHRpbWVyIGlmIHdlJ3ZlIG5l
dmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
cmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgotI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVk
ZSAiU3luY2hyb25vdXNuZXNzLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCkBAIC02
MzgsOSArNjM3LDkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fcGFyYWxsZWxTbG90VmlzaXRvckxv
Y2s7CiAgICAgYm9vbCBtX2lzU2FmZVRvQ29sbGVjdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
U2h1dHRpbmdEb3duIHsgZmFsc2UgfTsKLSAgICBib29sIG1fbXV0YXRvclNob3VsZEJlRmVuY2Vk
IHsgT3B0aW9uczo6Zm9yY2VGZW5jZWRCYXJyaWVyKCkgfTsKKyAgICBib29sIG1fbXV0YXRvclNo
b3VsZEJlRmVuY2VkOwogCi0gICAgdW5zaWduZWQgbV9iYXJyaWVyVGhyZXNob2xkIHsgT3B0aW9u
czo6Zm9yY2VGZW5jZWRCYXJyaWVyKCkgPyB0YXV0b2xvZ2ljYWxUaHJlc2hvbGQgOiBibGFja1Ro
cmVzaG9sZCB9OworICAgIHVuc2lnbmVkIG1fYmFycmllclRocmVzaG9sZDsKIAogICAgIFZNJiBt
X3ZtOwogICAgIFNlY29uZHMgbV9sYXN0RnVsbEdDTGVuZ3RoIHsgMTBfbXMgfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBIZWxwZXJQb29sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSGVscGVyUG9vbC5jcHAJKHJldmlzaW9u
IDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBIZWxwZXJQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkhlYXBIZWxwZXJQ
b29sLmgiCiAKICNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVk
ZSAiT3B0aW9uc0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDI1MTE5
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkdDRGVmZXJyYWxDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9ySW5s
aW5lcy5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJNYXJraW5nQ29uc3RyYWludFNvbHZlci5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DTG9vcFN0YWNrLmNwcAkocmV2aXNpb24gMjUxMTkyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NMb29wU3RhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgIlZNSW5saW5lcy5o
IgogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogI2luY2x1ZGUgIldhc21Db250ZXh0SW5saW5l
cy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6LmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6LmgiCiAKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KQEAgLTM4LDYgKzM5LDE0IEBAIHVuc2lnbmVkIG51bWJlck9m
RXhlY3V0YWJsZUFsbG9jYXRpb25GdXoKICAgICByZXR1cm4gc19udW1iZXJPZkV4ZWN1dGFibGVB
bGxvY2F0aW9uRnV6ekNoZWNrcy5sb2FkKCk7CiB9CiAKK2lubGluZSBFeGVjdXRhYmxlQWxsb2Nh
dGlvbkZ1enpSZXN1bHQgZG9FeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enppbmdJZkVuYWJsZWQoKQor
eworICAgIGlmIChMSUtFTFkoIU9wdGlvbnM6OnVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigp
KSkKKyAgICAgICAgcmV0dXJuIEFsbG93Tm9ybWFsRXhlY3V0YWJsZUFsbG9jYXRpb247CisgICAg
CisgICAgcmV0dXJuIGRvRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6aW5nKCk7Cit9CisKIEV4ZWN1
dGFibGVBbGxvY2F0aW9uRnV6elJlc3VsdCBkb0V4ZWN1dGFibGVBbGxvY2F0aW9uRnV6emluZygp
CiB7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdGlvbkZ1enouaAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCAr
MjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk9wdGlvbnMuaCIKLQogbmFtZXNw
YWNlIEpTQyB7CiAKIGVudW0gRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6UmVzdWx0IHsKQEAgLTM2
LDEyICszNCw0IEBAIGVudW0gRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6UmVzdWx0IHsKIAogRXhl
Y3V0YWJsZUFsbG9jYXRpb25GdXp6UmVzdWx0IGRvRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6aW5n
KCk7CiAKLWlubGluZSBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpSZXN1bHQgZG9FeGVjdXRhYmxl
QWxsb2NhdGlvbkZ1enppbmdJZkVuYWJsZWQoKQotewotICAgIGlmIChMSUtFTFkoIU9wdGlvbnM6
OnVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eigpKSkKLSAgICAgICAgcmV0dXJuIEFsbG93Tm9y
bWFsRXhlY3V0YWJsZUFsbG9jYXRpb247Ci0gICAgCi0gICAgcmV0dXJuIGRvRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6aW5nKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9u
IDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNDYgKzExNiw3IEBAIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNKSVRQQyh2b2lkKiBwYykKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wSklU
TWVtb3J5KGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIAotc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCogcGVyZm9ybUpJVE1lbWNweSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNy
Yywgc2l6ZV90IG4pCi17Ci0jaWYgQ1BVKEFSTTY0KQotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGluc3RydWN0aW9uU2l6ZSA9IHNpemVvZih1bnNpZ25lZCk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KGRzdCkgPT0gZHN0KTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4oc3Jj
KSA9PSBzcmMpOwotI2VuZGlmCi0gICAgaWYgKGlzSklUUEMoZHN0KSkgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkc3QpICsgbiA8PSBlbmRPZkZp
eGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSk7Ci0KLSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkpKQotICAgICAgICAgICAgZHVtcEpJVE1lbW9yeShkc3Qs
IHNyYywgbik7Ci0jaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKQotI2lmIEVOQUJMRShT
RVBBUkFURURfV1hfSEVBUCkKLSAgICAgICAgaWYgKGdfanNjQ29uZmlnLnVzZUZhc3RQZXJtaXNp
b25zSklUQ29weSkKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBvc190aHJlYWRfc2Vs
Zl9yZXN0cmljdF9yd3hfdG9fcncoKTsKLSAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgbik7
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRhaW5zKHNyYykpOwot
ICAgICAgICAgICAgb3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J4KCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZHN0OwotICAgICAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfSklUX1BF
Uk1JU1NJT05TKQotCi0jaWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQotICAgICAgICBpZiAo
Z19qc2NDb25maWcuaml0V3JpdGVTZXBhcmF0ZUhlYXBzKSB7Ci0gICAgICAgICAgICAvLyBVc2Ug
ZXhlY3V0ZS1vbmx5IHdyaXRlIHRodW5rIGZvciB3cml0ZXMgaW5zaWRlIHRoZSBKSVQgcmVnaW9u
LiBUaGlzIGlzIGEgdmFyaWFudCBvZgotICAgICAgICAgICAgLy8gbWVtY3B5IHRoYXQgdGFrZXMg
YW4gb2Zmc2V0IGludG8gdGhlIEpJVCByZWdpb24gYXMgaXRzIGRlc3RpbmF0aW9uIChmaXJzdCkg
cGFyYW1ldGVyLgotICAgICAgICAgICAgb2ZmX3Qgb2Zmc2V0ID0gKG9mZl90KSgodWludHB0cl90
KWRzdCAtIHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sPHVpbnRwdHJfdD4oKSk7Ci0g
ICAgICAgICAgICByZXRhZ0NvZGVQdHI8SklUVGh1bmtQdHJUYWcsIENGdW5jdGlvblB0clRhZz4o
Z19qc2NDb25maWcuaml0V3JpdGVTZXBhcmF0ZUhlYXBzKShvZmZzZXQsIHNyYywgbik7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRhaW5zKHNyYykpOwotICAgICAg
ICAgICAgcmV0dXJuIGRzdDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gVXNl
IHJlZ3VsYXIgbWVtY3B5IGZvciB3cml0ZXMgb3V0c2lkZSB0aGUgSklUIHJlZ2lvbi4KLSAgICBy
ZXR1cm4gbWVtY3B5KGRzdCwgc3JjLCBuKTsKLX0KK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQq
IHBlcmZvcm1KSVRNZW1jcHkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKTsK
IAogY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciA6IHByaXZhdGUgRXhlY3V0YWJsZUFsbG9jYXRv
ckJhc2UgewogcHVibGljOgpAQCAtMjA1LDEwICsxNjYsNyBAQCBwcml2YXRlOgogICAgIH5FeGVj
dXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OwogfTsKIAotc3RhdGljIGlubGluZSB2b2lkKiBw
ZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKLXsK
LSAgICByZXR1cm4gbWVtY3B5KGRzdCwgc3JjLCBuKTsKLX0KK3N0YXRpYyBpbmxpbmUgdm9pZCog
cGVyZm9ybUpJVE1lbWNweSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pOwog
CiBpbmxpbmUgYm9vbCBpc0pJVFBDKHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9ySW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9y
LmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNp
ZiBFTkFCTEUoSklUKQorCitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkKiBwZXJmb3JtSklUTWVt
Y3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKK3sKKyNpZiBDUFUoQVJN
NjQpCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaW5zdHJ1Y3Rpb25TaXplID0gc2l6ZW9m
KHVuc2lnbmVkKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3Ry
dWN0aW9uU2l6ZT4oZHN0KSA9PSBkc3QpOworICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihzcmMpID09IHNyYyk7CisjZW5kaWYKKyAgICBpZiAo
aXNKSVRQQyhkc3QpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGRzdCkgKyBuIDw9IGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpKTsK
KworICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEpJVE1lbW9yeVBhdGgoKSkpCisg
ICAgICAgICAgICBkdW1wSklUTWVtb3J5KGRzdCwgc3JjLCBuKTsKKyNpZiBFTkFCTEUoRkFTVF9K
SVRfUEVSTUlTU0lPTlMpCisjaWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQorICAgICAgICBp
ZiAoZ19qc2NDb25maWcudXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5KQorI2VuZGlmCisgICAgICAg
IHsKKyAgICAgICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19ydygpOworICAg
ICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBuKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFHaWdhY2FnZTo6Y29udGFpbnMoc3JjKSk7CisgICAgICAgICAgICBvc190aHJlYWRfc2VsZl9y
ZXN0cmljdF9yd3hfdG9fcngoKTsKKyAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpCisKKyNpZiBFTkFCTEUoU0VQ
QVJBVEVEX1dYX0hFQVApCisgICAgICAgIGlmIChnX2pzY0NvbmZpZy5qaXRXcml0ZVNlcGFyYXRl
SGVhcHMpIHsKKyAgICAgICAgICAgIC8vIFVzZSBleGVjdXRlLW9ubHkgd3JpdGUgdGh1bmsgZm9y
IHdyaXRlcyBpbnNpZGUgdGhlIEpJVCByZWdpb24uIFRoaXMgaXMgYSB2YXJpYW50IG9mCisgICAg
ICAgICAgICAvLyBtZW1jcHkgdGhhdCB0YWtlcyBhbiBvZmZzZXQgaW50byB0aGUgSklUIHJlZ2lv
biBhcyBpdHMgZGVzdGluYXRpb24gKGZpcnN0KSBwYXJhbWV0ZXIuCisgICAgICAgICAgICBvZmZf
dCBvZmZzZXQgPSAob2ZmX3QpKCh1aW50cHRyX3QpZHN0IC0gc3RhcnRPZkZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2w8dWludHB0cl90PigpKTsKKyAgICAgICAgICAgIHJldGFnQ29kZVB0cjxKSVRU
aHVua1B0clRhZywgQ0Z1bmN0aW9uUHRyVGFnPihnX2pzY0NvbmZpZy5qaXRXcml0ZVNlcGFyYXRl
SGVhcHMpKG9mZnNldCwgc3JjLCBuKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFHaWdh
Y2FnZTo6Y29udGFpbnMoc3JjKSk7CisgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAgICB9
CisjZW5kaWYKKyAgICB9CisKKyAgICAvLyBVc2UgcmVndWxhciBtZW1jcHkgZm9yIHdyaXRlcyBv
dXRzaWRlIHRoZSBKSVQgcmVnaW9uLgorICAgIHJldHVybiBtZW1jcHkoZHN0LCBzcmMsIG4pOwor
fQorCisjZWxzZQorCitzdGF0aWMgaW5saW5lIHZvaWQqIHBlcmZvcm1KSVRNZW1jcHkodm9pZCAq
ZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQoreworICAgIHJldHVybiBtZW1jcHkoZHN0
LCBzcmMsIG4pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmNw
cAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
ZmlnRmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb25maWdGaWxlLmgiCiAKLSNpbmNsdWRlICJPcHRpb25zLmgi
CisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNs
dWRlIDxtdXRleD4KICNpbmNsdWRlIDxzdGRpby5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwCShyZXZpc2lvbiAy
NTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckhhbmRsaW5nU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAKLSNpbmNsdWRlICJPcHRpb25z
LmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgotI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVk
ZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiV2FzbUNhcGFi
aWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJp
ZXIuaCIKKyNpbmNsdWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKLSNpbmNsdWRl
ICJPcHRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIk9w
dGlvbnMuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vu
dW1zeXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiT3B0aW9uRW50cnkuaCIK
ICNpbmNsdWRlICJPcHRpb25zTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IApAQCAtMzYsMTIgKzM1LDEyIEBAIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRv
cjsKIAogI2lmIENQVShBUk02NCkgfHwgUExBVEZPUk0oV0FUQ0hPUykKIGNvbnN0ZXhwciBzaXpl
X3QgUGFnZVNpemUgPSAxNiAqIEtCOworY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90
ZWN0ID0gMSAqIFBhZ2VTaXplOwogI2Vsc2UKIGNvbnN0ZXhwciBzaXplX3QgUGFnZVNpemUgPSA0
ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICogUGFnZVNp
emU7CiAjZW5kaWYKIAotY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMzIg
KiBLQjsKLQogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKIHVzaW5nIEpJVFdyaXRlU2Vw
YXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3QsIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OwogI2VuZGlmCkBAIC04Miw4ICs4MSwyOSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgICAg
IGJvb2wgdXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKLSAgICAgICAgICAgIE9w
dGlvbkVudHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKLSAgICAgICAgICAgIE9wdGlvbkVu
dHJ5IGRlZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107CisgICAgICAgICAgICBib29sIHR5
cGVCb29sT3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlw
ZUJvb2xEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRpb25zXTsKKworICAgICAgICAgICAg
R0NMb2dnaW5nOjpMZXZlbCB0eXBlR0NMb2dMZXZlbE9wdGlvbnNbTnVtYmVyT2ZHQ0xvZ0xldmVs
T3B0aW9uc107CisgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVsIHR5cGVHQ0xvZ0xldmVsRGVm
YXVsdE9wdGlvbnNbTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9uc107CisKKyAgICAgICAgICAgIGlu
dDMyX3QgdHlwZUludDMyT3B0aW9uc1tOdW1iZXJPZkludDMyT3B0aW9uc107CisgICAgICAgICAg
ICBpbnQzMl90IHR5cGVJbnQzMkRlZmF1bHRPcHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsK
KworICAgICAgICAgICAgdW5zaWduZWQgdHlwZVVuc2lnbmVkT3B0aW9uc1tOdW1iZXJPZlVuc2ln
bmVkT3B0aW9uc107CisgICAgICAgICAgICB1bnNpZ25lZCB0eXBlVW5zaWduZWREZWZhdWx0T3B0
aW9uc1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisKKyAgICAgICAgICAgIGRvdWJsZSB0eXBl
RG91YmxlT3B0aW9uc1tOdW1iZXJPZkRvdWJsZU9wdGlvbnNdOworICAgICAgICAgICAgZG91Ymxl
IHR5cGVEb3VibGVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkRvdWJsZU9wdGlvbnNdOworCisgICAg
ICAgICAgICBzaXplX3QgdHlwZVNpemVPcHRpb25zW051bWJlck9mU2l6ZU9wdGlvbnNdOworICAg
ICAgICAgICAgc2l6ZV90IHR5cGVTaXplRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9u
c107CisKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25TdHJpbmdPcHRpb25zW051
bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9uc107CisgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBl
T3B0aW9uU3RyaW5nRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zXTsK
KworICAgICAgICAgICAgT3B0aW9uUmFuZ2UgdHlwZU9wdGlvblJhbmdlT3B0aW9uc1tOdW1iZXJP
Zk9wdGlvblJhbmdlT3B0aW9uc107CisgICAgICAgICAgICBPcHRpb25SYW5nZSB0eXBlT3B0aW9u
UmFuZ2VEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblJhbmdlT3B0aW9uc107CiAgICAgICAg
IH07CiAgICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25maWdTaXplVG9Qcm90ZWN0XTsKICAgICB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2
aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNQcm94eS5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1
ZGUgIk9wdGlvbnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkocmV2
aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHQ0xv
Z2dpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIE9wdGlvblJhbmdlIHsKLXByaXZhdGU6Ci0gICAgZW51bSBSYW5nZVN0YXRlIHsg
VW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07Ci1wdWJsaWM6Ci0g
ICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCi0gICAgeyAvLyBPbmx5
IG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24KLSAgICAgICAgaWYgKCFyaHMpIHsKLSAgICAgICAg
ICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOwotICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9
IDA7Ci0gICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsKLSAgICAgICAgICAgIG1faGlnaExpbWl0
ID0gMDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgYm9v
bCBpbml0KGNvbnN0IGNoYXIqKTsKLSAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7Ci0gICAg
Y29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRF
cnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KLSAgICAKLSAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOwotCi0gICAgUmFuZ2VTdGF0ZSBtX3N0YXRl
OwotICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7Ci0gICAgdW5zaWduZWQgbV9sb3dMaW1p
dDsKLSAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsKLX07Ci0KLS8vIEZvciBzdG9yaW5nIGZvciBh
biBvcHRpb24gdmFsdWU6Ci11bmlvbiBPcHRpb25FbnRyeSB7Ci0gICAgdXNpbmcgQm9vbCA9IGJv
b2w7Ci0gICAgdXNpbmcgVW5zaWduZWQgPSB1bnNpZ25lZDsKLSAgICB1c2luZyBEb3VibGUgPSBk
b3VibGU7Ci0gICAgdXNpbmcgSW50MzIgPSBpbnQzMl90OwotICAgIHVzaW5nIFNpemUgPSBzaXpl
X3Q7Ci0gICAgdXNpbmcgT3B0aW9uUmFuZ2UgPSBKU0M6Ok9wdGlvblJhbmdlOwotICAgIHVzaW5n
IE9wdGlvblN0cmluZyA9IGNvbnN0IGNoYXIqOwotICAgIHVzaW5nIEdDTG9nTGV2ZWwgPSBHQ0xv
Z2dpbmc6OkxldmVsOwotCi0gICAgYm9vbCB2YWxCb29sOwotICAgIHVuc2lnbmVkIHZhbFVuc2ln
bmVkOwotICAgIGRvdWJsZSB2YWxEb3VibGU7Ci0gICAgaW50MzJfdCB2YWxJbnQzMjsKLSAgICBz
aXplX3QgdmFsU2l6ZTsKLSAgICBPcHRpb25SYW5nZSB2YWxPcHRpb25SYW5nZTsKLSAgICBjb25z
dCBjaGFyKiB2YWxPcHRpb25TdHJpbmc7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCB2YWxHQ0xvZ0xl
dmVsOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJDUFUuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1
ZGUgIk1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMu
aCIKICNpbmNsdWRlICJTaWdpbGxDcmFzaEFuYWx5emVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTEzMiw3ICsxMzMsNyBAQCBzdGF0aWMgYm9vbCBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcsIEdDCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE9w
dGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkg
YXZhaWxhYmlsaXR5KQorYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRCBpZCwgT3B0
aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKIHsKICAgICBpZiAoYXZhaWxhYmlsaXR5
ID09IEF2YWlsYWJpbGl0eTo6UmVzdHJpY3RlZCkKICAgICAgICAgcmV0dXJuIGdfanNjQ29uZmln
LnJlc3RyaWN0ZWRPcHRpb25zRW5hYmxlZDsKQEAgLTE0MCwyNiArMTQxLDI2IEBAIGJvb2wgT3B0
aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQKICAgICAKICAgICBVTlVTRURfUEFSQU0o
aWQpOwogI2lmICFkZWZpbmVkKE5ERUJVRykKLSAgICBpZiAoaWQgPT0gbWF4U2luZ2xlQWxsb2Nh
dGlvblNpemVJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om1heFNpbmdsZUFsbG9jYXRpb25T
aXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogI2lmIE9TKERBUldJTikKLSAgICBp
ZiAoaWQgPT0gdXNlU2lnaWxsQ3Jhc2hBbmFseXplcklEKQorICAgIGlmIChpZCA9PSBPcHRpb25J
RDo6dXNlU2lnaWxsQ3Jhc2hBbmFseXplcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBPUyhMSU5VWCkKLSAgICBpZiAoaWQgPT0gbG9nSklU
Q29kZUZvclBlcmZJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OmxvZ0pJVENvZGVGb3JQZXJm
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGlmIChpZCA9PSB0cmFjZUxMSW50
RXhlY3V0aW9uSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50RXhlY3V0aW9u
KQogICAgICAgICByZXR1cm4gISFMTElOVF9UUkFDSU5HOwotICAgIGlmIChpZCA9PSB0cmFjZUxM
SW50U2xvd1BhdGhJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnRyYWNlTExJbnRTbG93UGF0
aCkKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3Rp
YyhUJiB2YXJpYWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCitib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJp
c3RpYyhUJiB2YXJpYWJsZSwgT3B0aW9uSUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgYm9vbCBhdmFpbGFibGUgPSAoYXZh
aWxhYmlsaXR5ID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsKQogICAgICAgICB8fCBP
cHRpb25zOjppc0F2YWlsYWJsZShpZCwgYXZhaWxhYmlsaXR5KTsKQEAgLTI4Myw5ICsyODQsOSBA
QCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiB9CiAKIC8vIFJlYWxp
emUgdGhlIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgotY29uc3QgT3B0aW9uczo6RW50
cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bT3B0aW9uczo6bnVtYmVyT2ZPcHRpb25zXSA9
IHsKK2NvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW051bWJl
ck9mT3B0aW9uc10gPSB7CiAjZGVmaW5lIEZJTExfT1BUSU9OX0lORk8odHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICB7ICNuYW1l
XywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBlXywgQXZhaWxhYmlsaXR5OjphdmFp
bGFiaWxpdHlfIH0sCisgICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uVHlwZUlEOjp0
eXBlXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfLCBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCkgfSwKICAgICBGT1JfRUFD
SF9KU0NfT1BUSU9OKEZJTExfT1BUSU9OX0lORk8pCiAjdW5kZWYgRklMTF9PUFRJT05fSU5GTwog
fTsKQEAgLTI5OSwyNiArMzAwLDI1IEBAIHN0YXRpYyB2b2lkIHNjYWxlSklUUG9saWN5KCkKICAg
ICAgICAgc2NhbGVGYWN0b3IgPSAwLjA7CiAKICAgICBzdHJ1Y3QgT3B0aW9uVG9TY2FsZSB7Ci0g
ICAgICAgIE9wdGlvbnM6OklEIGlkOworICAgICAgICBzaXplX3QgaW5kZXg7CiAgICAgICAgIGlu
dDMyX3QgbWluVmFsOwogICAgIH07CiAKICAgICBzdGF0aWMgY29uc3QgT3B0aW9uVG9TY2FsZSBv
cHRpb25zVG9TY2FsZVtdID0gewotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVEFm
dGVyV2FybVVwSUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29u
SUQsIDAgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1p
emVTb29uSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6
ZVNvb25JRCwgMiB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGltaXpl
QWZ0ZXJXYXJtVXBJRCwgMiB9CisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0
aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPigp
LCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJ
bnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckpJVFNvb24+KCksIDAgfSwKKyAgICAgICAgeyBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhy
ZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMSB9LAorICAgICAgICB7IG9wdGlvblR5
cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD4oKSwgMSB9LAorICAgICAgICB7IG9wdGlvblR5cGVT
cGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb24+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxP
cHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29u
PigpLCAyIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
OjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA+KCks
IDIgfSwKICAgICB9OwogCi0gICAgY29uc3QgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBz
aXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOworICAgIGNvbnN0
ZXhwciBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVvZihvcHRpb25zVG9TY2FsZSkg
LyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJP
Zk9wdGlvbnNUb1NjYWxlOyBpKyspIHsKLSAgICAgICAgT3B0aW9uIG9wdGlvbihvcHRpb25zVG9T
Y2FsZVtpXS5pZCk7Ci0gICAgICAgIEFTU0VSVChvcHRpb24udHlwZSgpID09IE9wdGlvbnM6OlR5
cGU6OkludDMyKTsKLSAgICAgICAgb3B0aW9uLmludDMyVmFsKCkgKj0gc2NhbGVGYWN0b3I7Ci0g
ICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpID0gc3RkOjptYXgob3B0aW9uLmludDMyVmFsKCksIG9w
dGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7CisgICAgICAgIGludDMyX3QmIG9wdGlvblZhbHVlID0g
Z19qc2NDb25maWcudHlwZUludDMyT3B0aW9uc1tvcHRpb25zVG9TY2FsZVtpXS5pbmRleF07Cisg
ICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9yOworICAgICAgICBvcHRpb25WYWx1ZSA9
IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOwogICAgIH0K
IH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9w
dGlvbnMoKQogICAgIGlmICghT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpCiAgICAgICAgIE9w
dGlvbnM6OmNvbGxlY3RDb250aW51b3VzbHkoKSA9IGZhbHNlOwogCi0gICAgaWYgKE9wdGlvbihP
cHRpb25zOjpqaXRQb2xpY3lTY2FsZUlEKS5pc092ZXJyaWRkZW4oKSkKKyAgICBpZiAoT3B0aW9u
KE9wdGlvbklEOjpqaXRQb2xpY3lTY2FsZSkuaXNPdmVycmlkZGVuKCkpCiAgICAgICAgIHNjYWxl
SklUUG9saWN5KCk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRWFnZXJDb21waWxhdGlv
bigpKSB7CkBAIC01MjIsOSArNTIyLDExIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAg
ICAgICAgICAgICBDb25maWc6OmVuYWJsZVJlc3RyaWN0ZWRPcHRpb25zKCk7CiAjZW5kaWYKICAg
ICAgICAgICAgIC8vIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRl
ZmF1bHQgdmFsdWVzOgotI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgbmFtZV8o
KSA9IGRlZmF1bHRWYWx1ZV87IFwKLSAgICAgICAgICAgIG5hbWVfIyNEZWZhdWx0KCkgPSBkZWZh
dWx0VmFsdWVfOworI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgeyBcCisgICAgICAgICAgICAgICAgYXV0
byB2YWx1ZSA9IGRlZmF1bHRWYWx1ZV87IFwKKyAgICAgICAgICAgICAgICBuYW1lXygpID0gdmFs
dWU7IFwKKyAgICAgICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gdmFsdWU7IFwKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oSU5JVF9PUFRJT04pCiAj
dW5kZWYgSU5JVF9PUFRJT04KIApAQCAtNTQ4LDcgKzU1MCw3IEBAIHZvaWQgT3B0aW9uczo6aW5p
dGlhbGl6ZSgpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKICNlbHNlIC8vIFBMQVRGT1JNKENP
Q09BKQogI2RlZmluZSBPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgICAg
ICAgICBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgbmFtZV8jI0lELCAiSlND
XyIgI25hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOworICAgICAgICAgICAgb3Zl
cnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIE9wdGlvbklEOjpuYW1lXywgIkpTQ18i
ICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKICAgICAgICAgICAgIEZPUl9F
QUNIX0pTQ19PUFRJT04oT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUykKICN1bmRlZiBP
VkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CkBAIC03MjcsMTYgKzcyOSwxNSBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlh
cyhjb25zCiAKICAgICBjb25zdCBjaGFyKiB2YWx1ZVN0ciA9IGVxdWFsU3RyICsgMTsKIAotICAg
IC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNpZnkgYXJnIGlzIGEgbWF0Y2gu
IElmIHNvLCBzZXQgdGhlIGFyZworICAgIC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhl
IHNwZWNpZmllZCBhcmcgaXMgYSBtYXRjaC4gSWYgc28sIHNldCB0aGUgYXJnCiAgICAgLy8gaWYg
dGhlIHZhbHVlIG1ha2VzIHNlbnNlLiBPdGhlcndpc2UsIG1vdmUgb24gdG8gY2hlY2tpbmcgdGhl
IG5leHQgb3B0aW9uLgogI2RlZmluZSBTRVRfT1BUSU9OX0lGX01BVENIKHR5cGVfLCBuYW1lXywg
ZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKHN0
cmxlbigjbmFtZV8pID09IHN0YXRpY19jYXN0PHNpemVfdD4oZXF1YWxTdHIgLSBhcmcpICAgICAg
XAogICAgICAgICAmJiAhc3RybmNtcChhcmcsICNuYW1lXywgZXF1YWxTdHIgLSBhcmcpKSB7ICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAh
PSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICAgXAotICAgICAgICAgICAgJiYgIWlzQXZhaWxhYmxl
KG5hbWVfIyNJRCwgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgXAorICAgICAgICBpZiAo
QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2YWlsYWJpbGl0eTo6Tm9ybWFsICAgIFwK
KyAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIEF2YWlsYWJpbGl0
eTo6YXZhaWxhYmlsaXR5XykpIFwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0
eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2
YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3RyLCB2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc3VjY2VzcykgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIG5h
bWVfKCkgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBA
IC04MTYsMTAgKzgxNywxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKFN0cmluZ0J1
aWxkCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0KIAotICAgIGZvciAoaW50
IGlkID0gMDsgaWQgPCBudW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKKyAgICBmb3IgKHNpemVfdCBp
ZCA9IDA7IGlkIDwgTnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CiAgICAgICAgIGlmIChzZXBhcmF0
b3IgJiYgaWQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOwotICAgICAg
ICBkdW1wT3B0aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxJRD4oaWQpLCBvcHRpb25I
ZWFkZXIsIG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsKKyAgICAgICAgZHVtcE9w
dGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8T3B0aW9uSUQ+KGlkKSwgb3B0aW9uSGVh
ZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CiAgICAgfQogfQogCkBAIC04
MzUsMTAgKzgzNiwxMCBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKEZJTEUqIHN0cmVh
CiAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotdm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uczo6SUQgaWQsCit2b2lkIE9wdGlvbnM6OmR1bXBP
cHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVsIGxldmVsLCBPcHRpb25JRCBp
ZCwKICAgICBjb25zdCBjaGFyKiBoZWFkZXIsIGNvbnN0IGNoYXIqIGZvb3RlciwgRHVtcERlZmF1
bHRzT3B0aW9uIGR1bXBEZWZhdWx0c09wdGlvbikKIHsKLSAgICBpZiAoaWQgPj0gbnVtYmVyT2ZP
cHRpb25zKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGlkKSA+PSBOdW1iZXJPZk9wdGlv
bnMpCiAgICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCiAKICAgICBPcHRpb24gb3B0
aW9uKGlkKTsKQEAgLTg4MCwyOSArODgxLDcxIEBAIHZvaWQgT3B0aW9uczo6ZW5zdXJlT3B0aW9u
c0FyZUNvaGVyZW50KCkKICAgICAgICAgQ1JBU0goKTsKIH0KIAorT3B0aW9uOjpPcHRpb24oT3B0
aW9uSUQgaWQpCisgICAgOiBtX2lkKGlkKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4ID0g
T3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmljSW5kZXg7CisgICAgT3B0
aW9uVHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlOworCisg
ICAgc3dpdGNoICh0eXBlKSB7CisKKyNkZWZpbmUgSEFORExFX0NBU0UoT3B0aW9uVHlwZV8sIHR5
cGVfKSBcCisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblR5cGVfOiBcCisgICAgICAgIEFT
U0VSVCh0eXBlU3BlY2lmaWNJbmRleCA8IE51bWJlck9mIyNPcHRpb25UeXBlXyMjT3B0aW9ucyk7
IFwKKyAgICAgICAgbV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0aW9u
VHlwZV8jI09wdGlvbnNbdHlwZVNwZWNpZmljSW5kZXhdOyBcCisgICAgICAgIGJyZWFrOworCisg
ICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKEhBTkRMRV9DQVNFKQorI3VuZGVmIEhBTkRMRV9D
QVNFCisgICAgfQorfQorCitjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkgY29u
c3QKK3sKKyAgICBPcHRpb24gcmVzdWx0OworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1faWQpOworICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4ID0gT3B0
aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZVNwZWNpZmljSW5kZXg7CisgICAgT3B0aW9u
VHlwZUlEIHR5cGUgPSBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlOworCisgICAg
cmVzdWx0Lm1faWQgPSBtX2lkOworICAgIHN3aXRjaCAodHlwZSkgeworCisjZGVmaW5lIEhBTkRM
RV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRp
b25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJPZiMj
T3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAgIHJlc3VsdC5tX3ZhbCMjT3B0aW9uVHlw
ZV8gPSBnX2pzY0NvbmZpZy50eXBlIyNPcHRpb25UeXBlXyMjRGVmYXVsdE9wdGlvbnNbdHlwZVNw
ZWNpZmljSW5kZXhdOyBcCisgICAgICAgIGJyZWFrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElP
Tl9UWVBFKEhBTkRMRV9DQVNFKQorI3VuZGVmIEhBTkRMRV9DQVNFCisgICAgfQorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIp
IGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkJvb2w6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFsQm9vbCA/ICJ0cnVlIiA6
ICJmYWxzZSIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgorICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3ZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIobV9lbnRyeS52YWxVbnNpZ25lZCk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlVuc2ln
bmVkOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFVuc2lnbmVkKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbFNpemUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpT
aXplOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3ZhbFNpemUpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2VudHJ5LnZhbERvdWJsZSk7CisgICAgY2FzZSBP
cHRpb25UeXBlSUQ6OkRvdWJsZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lv
bk51bWJlcihtX3ZhbERvdWJsZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6
VHlwZTo6SW50MzI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsSW50
MzIpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIobV92YWxJbnQzMik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6
VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFsT3B0
aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblJh
bmdlOgorICAgICAgICBidWlsZGVyLmFwcGVuZChtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5n
KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0cmlu
ZzogewotICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX2VudHJ5LnZhbE9wdGlvblN0cmlu
ZzsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uU3RyaW5nOiB7CisgICAgICAgIGNvbnN0
IGNoYXIqIG9wdGlvbiA9IG1fdmFsT3B0aW9uU3RyaW5nOwogICAgICAgICBpZiAoIW9wdGlvbikK
ICAgICAgICAgICAgIG9wdGlvbiA9ICIiOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwpA
QCAtOTEwLDggKzk1Myw4IEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDogewotICAgICAgICBidWlsZGVyLmFw
cGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV9lbnRyeS52YWxHQ0xvZ0xldmVsKSk7Cisg
ICAgY2FzZSBPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWw6IHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fdmFsR0NMb2dMZXZlbCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgfQpAQCAtOTIwLDIzICs5NjMsMjMgQEAgdm9pZCBPcHRpb246OmR1
bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcgogYm9vbCBPcHRpb246Om9wZXJhdG9yPT0oY29uc3Qg
T3B0aW9uJiBvdGhlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2Ug
T3B0aW9uczo6VHlwZTo6Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbCA9PSBv
dGhlci5tX2VudHJ5LnZhbEJvb2w7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoK
LSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQgPT0gb3RoZXIubV9lbnRyeS52YWxV
bnNpZ25lZDsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6Ci0gICAgICAgIHJldHVybiBt
X2VudHJ5LnZhbFNpemUgPT0gb3RoZXIubV9lbnRyeS52YWxTaXplOwotICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6RG91YmxlOgotICAgICAgICByZXR1cm4gKG1fZW50cnkudmFsRG91YmxlID09IG90
aGVyLm1fZW50cnkudmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX2VudHJ5LnZhbERvdWJsZSkg
JiYgc3RkOjppc25hbihvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkpOwotICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6SW50MzI6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEludDMyID09IG90aGVy
Lm1fZW50cnkudmFsSW50MzI7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25SYW5nZToK
LSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSA9PSBv
dGhlci5tX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7Ci0gICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpPcHRpb25TdHJpbmc6Ci0gICAgICAgIHJldHVybiAobV9lbnRyeS52YWxPcHRp
b25TdHJpbmcgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25TdHJpbmcpCi0gICAgICAgICAgICB8
fCAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV9lbnRyeS52YWxPcHRpb25TdHJp
bmcgJiYgIXN0cmNtcChtX2VudHJ5LnZhbE9wdGlvblN0cmluZywgb3RoZXIubV9lbnRyeS52YWxP
cHRpb25TdHJpbmcpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6Ci0gICAg
ICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9nTGV2ZWwgPT0gb3RoZXIubV9lbnRyeS52YWxHQ0xv
Z0xldmVsOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpCb29sOgorICAgICAgICByZXR1cm4gbV92
YWxCb29sID09IG90aGVyLm1fdmFsQm9vbDsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6VW5zaWdu
ZWQ6CisgICAgICAgIHJldHVybiBtX3ZhbFVuc2lnbmVkID09IG90aGVyLm1fdmFsVW5zaWduZWQ7
CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlNpemU6CisgICAgICAgIHJldHVybiBtX3ZhbFNpemUg
PT0gb3RoZXIubV92YWxTaXplOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpEb3VibGU6CisgICAg
ICAgIHJldHVybiAobV92YWxEb3VibGUgPT0gb3RoZXIubV92YWxEb3VibGUpIHx8IChzdGQ6Omlz
bmFuKG1fdmFsRG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fdmFsRG91YmxlKSk7CisgICAg
Y2FzZSBPcHRpb25UeXBlSUQ6OkludDMyOgorICAgICAgICByZXR1cm4gbV92YWxJbnQzMiA9PSBv
dGhlci5tX3ZhbEludDMyOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZToKKyAg
ICAgICAgcmV0dXJuIG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSA9PSBvdGhlci5tX3Zh
bE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlv
blN0cmluZzoKKyAgICAgICAgcmV0dXJuIChtX3ZhbE9wdGlvblN0cmluZyA9PSBvdGhlci5tX3Zh
bE9wdGlvblN0cmluZykKKyAgICAgICAgICAgIHx8IChtX3ZhbE9wdGlvblN0cmluZyAmJiBvdGhl
ci5tX3ZhbE9wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fdmFsT3B0aW9uU3RyaW5nLCBvdGhlci5t
X3ZhbE9wdGlvblN0cmluZykpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsOgor
ICAgICAgICByZXR1cm4gbV92YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fdmFsR0NMb2dMZXZlbDsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTAgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNsdWRlICJKU0V4
cG9ydE1hY3Jvcy5oIgorI2luY2x1ZGUgIk9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8c3RkaW50
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTMsMzkg
KzUyLDE5IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KIAogY2xh
c3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwgeworICAgIGVu
dW0gY2xhc3MgRHVtcExldmVsIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAg
ICBPdmVycmlkZGVuLAogICAgICAgICBBbGwsCiAgICAgICAgIFZlcmJvc2UKICAgICB9OwogCi0g
ICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgeworICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5
IDogdWludDhfdCB7CiAgICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0ZWQsCiAg
ICAgICAgIENvbmZpZ3VyYWJsZQogICAgIH07CiAKLSNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQo
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IFwKLSAgICBuYW1lXyMjSUQsCi0KLSAgICBlbnVtIElEIHsKLSAgICAgICAgRk9SX0VBQ0hfSlND
X09QVElPTihERUNMQVJFX09QVElPTl9JRCkKLSAgICAgICAgbnVtYmVyT2ZPcHRpb25zCi0gICAg
fTsKLSN1bmRlZiBERUNMQVJFX09QVElPTl9JRAotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAg
ICAgICAgQm9vbCwKLSAgICAgICAgVW5zaWduZWQsCi0gICAgICAgIERvdWJsZSwKLSAgICAgICAg
SW50MzIsCi0gICAgICAgIFNpemUsCi0gICAgICAgIE9wdGlvblJhbmdlLAotICAgICAgICBPcHRp
b25TdHJpbmcsCi0gICAgICAgIEdDTG9nTGV2ZWwsCi0gICAgfTsKLQogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIFBhcnNlcyBhIHN0cmlu
ZyBvZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0tPG9wdGlv
bk5hbWU+PTx2YWx1ZT4iCkBAIC0xMDIsMTMgKzgxLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKIAogI2Rl
ZmluZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVf
LCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcHRpb25FbnRyeTo6dHlwZV8mIG5hbWVfKCkgeyByZXR1cm4gZ19qc2NDb25maWcub3B0aW9u
c1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0gIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBP
cHRpb25FbnRyeTo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCkgeyByZXR1cm4gZ19qc2NDb25maWcu
ZGVmYXVsdE9wdGlvbnNbbmFtZV8jI0lEXS52YWwjI3R5cGVfOyB9Ci0KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBPcHRpb25UeXBlczo6dHlwZV8mIG5hbWVfKCk7IFwKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBPcHRpb25UeXBlczo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCk7CiAgICAgRk9S
X0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMpCiAjdW5kZWYgREVDTEFS
RV9PUFRJT05fQUNDRVNTT1JTCiAKLSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZShJRCwgQXZh
aWxhYmlsaXR5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZShPcHRpb25JRCwgQXZhaWxh
YmlsaXR5KTsKIAogcHJpdmF0ZToKIApAQCAtMTE2LDggKzk0LDkgQEAgcHJpdmF0ZToKICAgICBz
dHJ1Y3QgRW50cnlJbmZvIHsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29u
c3QgY2hhciogZGVzY3JpcHRpb247Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgT3B0aW9u
VHlwZUlEIHR5cGU7CiAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAg
IHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBA
IC0xMjksMTIyICsxMDgsNTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9u
c0lmTmVlZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRl
ciYsIER1bXBMZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0IGNoYXIqIHNl
cGFyYXRvciwgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290
ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJp
bmdCdWlsZGVyJiwgRHVtcExldmVsLCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0
cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAogICAgICAgICBjb25zdCBjaGFyKiBv
cHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9u
KTsKIAogICAgIHN0YXRpYyBib29sIHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBh
cmcpOwogICAgIHN0YXRpYyBib29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKTsK
ICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGljKGNvbnN0
IGNoYXIqIG5hbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZv
W251bWJlck9mT3B0aW9uc107CisgICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJ
bmZvW051bWJlck9mT3B0aW9uc107CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwogfTsKIAog
Y2xhc3MgT3B0aW9uIHsKIHB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQpCi0gICAg
ICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9wdGlvbnNbbV9p
ZF0pCi0gICAgewotICAgIH0KLSAgICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOworCiAgICAgdm9p
ZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9u
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICBP
cHRpb25zOjpJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFyKiBu
YW1lKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBP
cHRpb25zOjpUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZh
aWxhYmlsaXR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKKyAgICBP
cHRpb25JRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBjaGFyKiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLm5hbWU7
IH0KKyAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6
OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9wdGlvblR5cGVJ
RCB0eXBlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCld
LnR5cGU7IH0KKyAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3Qg
eyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWlsYWJpbGl0eTsg
fQorICAgIGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gZGVmYXVs
dE9wdGlvbigpOyB9CiAgICAgY29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsKLSAg
ICAKLSAgICBib29sJiBib29sVmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7Ci0g
ICAgZG91YmxlJiBkb3VibGVWYWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAgIE9w
dGlvblJhbmdlIG9wdGlvblJhbmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5n
VmFsKCk7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAotcHJp
dmF0ZToKLSAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMu
Ci0gICAgT3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAgICAg
IDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgT3B0aW9uczo6SUQgbV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKLX07Ci0K
LWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBP
cHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19Ci0KLWlubGluZSBjb25zdCBjaGFy
KiBPcHRpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uczo6c19v
cHRpb25zSW5mb1ttX2lkXS5kZXNjcmlwdGlvbjsKLX0KLQotaW5saW5lIE9wdGlvbnM6OlR5cGUg
T3B0aW9uOjp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5m
b1ttX2lkXS50eXBlOwotfQotCi1pbmxpbmUgT3B0aW9uczo6QXZhaWxhYmlsaXR5IE9wdGlvbjo6
YXZhaWxhYmlsaXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5m
b1ttX2lkXS5hdmFpbGFiaWxpdHk7Ci19Ci0KLWlubGluZSBib29sIE9wdGlvbjo6aXNPdmVycmlk
ZGVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKnRoaXMgIT0gZGVmYXVsdE9wdGlvbigpOwotfQot
Ci1pbmxpbmUgY29uc3QgT3B0aW9uIE9wdGlvbjo6ZGVmYXVsdE9wdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIE9wdGlvbihtX2lkLCBnX2pzY0NvbmZpZy5kZWZhdWx0T3B0aW9uc1ttX2lkXSk7
Ci19Ci0KLWlubGluZSBib29sJiBPcHRpb246OmJvb2xWYWwoKQotewotICAgIHJldHVybiBtX2Vu
dHJ5LnZhbEJvb2w7Ci19CiAKLWlubGluZSB1bnNpZ25lZCYgT3B0aW9uOjp1bnNpZ25lZFZhbCgp
Ci17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQ7Ci19CisjZGVmaW5lIERFQ0xBUkVf
QUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBl
XygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pT
Q19PUFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IK
IAotaW5saW5lIGRvdWJsZSYgT3B0aW9uOjpkb3VibGVWYWwoKQotewotICAgIHJldHVybiBtX2Vu
dHJ5LnZhbERvdWJsZTsKLX0KK3ByaXZhdGU6CisgICAgT3B0aW9uKCkgeyB9CiAKLWlubGluZSBp
bnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQz
MjsKLX0KKyAgICBzaXplX3QgaWRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4obV9pZCk7IH0KIAotaW5saW5lIE9wdGlvblJhbmdlIE9wdGlvbjo6b3B0aW9uUmFuZ2VW
YWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlOwotfQorICAgIE9wdGlv
bklEIG1faWQ7CisgICAgdW5pb24gewogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRp
b25TdHJpbmdWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0K
KyNkZWZpbmUgREVDTEFSRV9NRU1CRVIoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgICAgIHR5
cGVfIG1fdmFsIyNPcHRpb25UeXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVD
TEFSRV9NRU1CRVIpCisjdW5kZWYgREVDTEFSRV9NRU1CRVIKIAotaW5saW5lIEdDTG9nZ2luZzo6
TGV2ZWwmIE9wdGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFs
R0NMb2dMZXZlbDsKLX0KKyAgICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNJbmxpbmVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NDb25m
aWcuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0
ZTxPcHRpb25UeXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlv
blR5cGVTcGVjaWZpY0luZGV4KCkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworI2RlZmluZSBD
T1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bmFt
ZV8pIFwKKyAgICAgICAgcmV0dXJuIGluZGV4OyBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlw
ZUlEOjp0eXBlXykgXAorICAgICAgICBpbmRleCsrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElP
TihDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCk7CisjdW5kZWYgQ09VTlRfSU5ERVhfQU5EX0ZJ
TkRfTUFUQ0gKKyAgICByZXR1cm4gSW52YWxpZE9wdGlvbkluZGV4OworfQorCisjZGVmaW5lIERF
RklORV9PUFRJT05fQUNDRVNTT1JTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxh
YmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgQUxXQVlTX0lOTElORSBPcHRpb25UeXBlczo6
dHlwZV8mIE9wdGlvbnM6Om5hbWVfKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gZ19qc2ND
b25maWcudHlwZSMjdHlwZV8jI09wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9u
VHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0gIFwKKyAgICBBTFdB
WVNfSU5MSU5FIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBc
CisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVs
dE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0
aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklO
RV9PUFRJT05fQUNDRVNTT1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIEhvdyBkbyBKU0MgVk0gb3B0
aW9ucyB3b3JrPwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VB
Q0hfSlNDX09QVElPTigpIG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0
aW9ucyBpbiB1c2UsCiAvLyBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzIGFuZCBkZWZhdWx0IHZhbHVl
cy4gVGhlIG9wdGlvbnMgdmFsdWVzIGFyZSBhY3R1YWxseQotLy8gcmVhbGl6ZWQgYXMgYW4gYXJy
YXkgb2YgT3B0aW9uRW50cnkgZWxlbWVudHMgaW4gSlNDOjpDb25maWcuCisvLyByZWFsaXplZCBh
cyBhcnJheXMgb2YgZWFjaCBvZiB0aGUgT3B0aW9uVHlwZXMgaW4gSlNDOjpDb25maWcuCiAvLwot
Ly8gICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5IG9m
IG9wdGlvbnMgdmFsdWVzIHdpdGgKKy8vICAgICBPcHRpb25zOjppbml0aWFsaXplKCkgd2lsbCBp
bml0aWFsaXplIHRoZSBhcnJheXMgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAogLy8gdGhlIGRlZmF1
bHRzIHNwZWNpZmllZCBpbiBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cuIEFmdGVyIHRoYXQs
IHRoZSB2YWx1ZXMgY2FuCiAvLyBiZSBwcm9ncmFtbWF0aWNhbGx5IHJlYWQgYW5kIHdyaXR0ZW4g
dG8gdXNpbmcgYW4gYWNjZXNzb3IgbWV0aG9kIHdpdGggdGhlCiAvLyBzYW1lIG5hbWUgYXMgdGhl
IG9wdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2FuIGJlIHJlYWQgYW5k
CkBAIC01NCw2ICs1Nyw2OCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNoZWNrcyBhcmUgZG9uZSBh
ZnRlciB0aGUgb3B0aW9uIHZhbHVlcyBhcmUgc2V0LiBJZiB5b3UgYWx0ZXIgdGhlIG9wdGlvbgog
Ly8gdmFsdWVzIGFmdGVyIHRoZSBzYW5pdHkgY2hlY2tzIChmb3IgeW91ciBvd24gdGVzdGluZyks
IHRoZW4geW91J3JlIGxpYWJsZSB0bwogLy8gZW5zdXJlIHRoYXQgdGhlIG5ldyB2YWx1ZXMgc2V0
IGFyZSBzYW5lIGFuZCByZWFzb25hYmxlIGZvciB5b3VyIG93biBydW4uCisvLworLy8gQW55IG1v
ZGlmaWNhdGlvbnMgdG8gb3B0aW9ucyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSBmaXJzdCBWTSBp
cyBpbnN0YW50aWF0ZS4KKy8vIE9uIGluc3RhbnRpYXRpb24gb2YgdGhlIGZpcnN0IFZNIGluc3Rh
bmNlLCB0aGUgT3B0aW9ucyB3aWxsIGJlIHdyaXRlIHByb3RlY3RlZAorLy8gYW5kIGNhbm5vdCBi
ZSBtb2RpZmllZCB0aGVyZWFmdGVyLgorCitjbGFzcyBPcHRpb25SYW5nZSB7Citwcml2YXRlOgor
ICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJ
bnZlcnRlZCB9OworcHVibGljOgorICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGlu
dCYgcmhzKQorICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCisgICAgICAg
IGlmICghcmhzKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKKyAgICAg
ICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOworICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7Cisg
ICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7CisgICAgYm9vbCBpc0lu
UmFuZ2UodW5zaWduZWQpOworICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdl
U3RyOyB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCitw
cml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKwor
ICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwor
ICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7CisgICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Cit9Owor
CisjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRSh2KSBcCisgICAgdihCb29sLCBib29s
KSBcCisgICAgdihVbnNpZ25lZCwgdW5zaWduZWQpIFwKKyAgICB2KERvdWJsZSwgZG91YmxlKSBc
CisgICAgdihJbnQzMiwgaW50MzJfdCkgXAorICAgIHYoU2l6ZSwgc2l6ZV90KSBcCisgICAgdihP
cHRpb25SYW5nZSwgT3B0aW9uUmFuZ2UpIFwKKyAgICB2KE9wdGlvblN0cmluZywgY29uc3QgY2hh
ciopIFwKKyAgICB2KEdDTG9nTGV2ZWwsIEdDTG9nZ2luZzo6TGV2ZWwpIFwKKworbmFtZXNwYWNl
IE9wdGlvblR5cGVzIHsKKworI2RlZmluZSBERUNMQVJFX1RZUEVTKE9wdGlvblR5cGVfLCB0eXBl
XykgXAorICAgIHVzaW5nIE9wdGlvblR5cGVfID0gdHlwZV87CisgICAgRk9SX0VBQ0hfSlNDX09Q
VElPTl9UWVBFKERFQ0xBUkVfVFlQRVMpCisjdW5kZWYgREVDTEFSRV9UWVBFUworCit9IC8vIG5h
bWVzcGFjZSBPcHRpb25UeXBlcworCitlbnVtIGNsYXNzIE9wdGlvblR5cGVJRCA6IHVpbnQ4X3Qg
eworCisjZGVmaW5lIERFQ0xBUkVfVFlQRUlEKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIE9w
dGlvblR5cGVfLAorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX1RZUEVJRCkK
KyN1bmRlZiBERUNMQVJFX1RZUEVJRAorCit9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJ
T04odikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdihC
b29sLCB1c2VLZXJuVENTTSwgdHJ1ZSwgTm9ybWFsLCAiTm90ZTogdGhpcyBuZWVkcyB0byBnbyBi
ZWZvcmUgb3RoZXIgb3B0aW9ucyBzaW5jZSB0aGV5IGRlcGVuZCBvbiB0aGlzIHZhbHVlLiIpIFwK
QEAgLTUxMCw2ICs1NzUsMTcgQEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgdihtYXhp
bXVtRlRMQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVj
b2RlQ29zdCwgU2FtZU9wdGlvbikgXAogICAgIHYobWF4aW11bUlubGluaW5nQ2FsbGVyU2l6ZSwg
bWF4aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAKKyNkZWZp
bmUgREVDTEFSRV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBuYW1lXywKK2VudW0gY2xhc3MgT3B0aW9uSUQg
OiB1aW50MTZfdCB7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkK
K307CisjdW5kZWYgREVDTEFSRV9PUFRJT05fSUQKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
SW52YWxpZE9wdGlvbkluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsK
KwordGVtcGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9wdGlvbklEIGlkPgorY29uc3RleHByIHNp
emVfdCBvcHRpb25UeXBlU3BlY2lmaWNJbmRleCgpOwogCiBjb25zdGV4cHIgc2l6ZV90IGNvdW50
TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKQEAgLTUyMiw1ICs1OTgsMjQgQEAgY29uc3RleHByIHNp
emVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucwogCiBjb25zdGV4cHIgc2l6ZV90IE51bWJlck9m
T3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8gbmFtZXNwYWNlIEpT
QworY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25U
eXBlSUQgdHlwZSkKK3sKKyAgICBzaXplX3QgY291bnQgPSAwOworI2RlZmluZSBDT1VOVF9PUFRJ
T04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlv
bl8pIFwKKyAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGNv
dW50Kys7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9PUFRJT04pOworI3VuZGVmIENP
VU5UX09QVElPTgorICAgIHJldHVybiBjb3VudDsKK30KIAorY29uc3RleHByIHNpemVfdCBOdW1i
ZXJPZkJvb2xPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlw
ZUlEOjpCb29sKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnMgPSBj
b3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OlVuc2lnbmVkKTsKK2Nv
bnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZEb3VibGVPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09w
dGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpEb3VibGUpOworY29uc3RleHByIHNpemVfdCBOdW1i
ZXJPZkludDMyT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5
cGVJRDo6SW50MzIpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZlNpemVPcHRpb25zID0gY291
bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpTaXplKTsKK2NvbnN0ZXhw
ciBzaXplX3QgTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0
aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlKTsKK2NvbnN0ZXhwciBzaXplX3Qg
TnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5
cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmcpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJP
ZkdDTG9nTGV2ZWxPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9u
VHlwZUlEOjpHQ0xvZ0xldmVsKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NywxNSArNjQ3LDggQEAg
cHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5V
c2VBc3NlbWJsZXIoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0luTWluaU1vZGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuICFjYW5Vc2VKSVQoKSB8fCBPcHRpb25zOjpmb3JjZU1pbmlWTU1vZGUoKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCB1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5n
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VVbmxpbmtlZENvZGVCbG9ja0pl
dHRpc29uaW5nKCkgfHwgaXNJbk1pbmlNb2RlKCk7Ci0gICAgfQorICAgIGlubGluZSBzdGF0aWMg
Ym9vbCBpc0luTWluaU1vZGUoKTsKKyAgICBpbmxpbmUgc3RhdGljIGJvb2wgdXNlVW5saW5rZWRD
b2RlQmxvY2tKZXR0aXNvbmluZygpOwogCiAgICAgc3RhdGljIHZvaWQgY29tcHV0ZUNhblVzZUpJ
VCgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgY2FuVXNlSklUKCkKQEAgLTgwMCwx
MyArNzkzLDcgQEAgcHVibGljOgogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXJGb3JT
aXplKHNpemVfdCBzaXplKTsKICAgICB2b2lkIGNsZWFyU2NyYXRjaEJ1ZmZlcnMoKTsKIAotICAg
IEVuY29kZWRKU1ZhbHVlKiBleGNlcHRpb25GdXp6aW5nQnVmZmVyKHNpemVfdCBzaXplKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSk7Ci0gICAgICAg
IGlmICghbV9leGNlcHRpb25GdXp6QnVmZmVyKQotICAgICAgICAgICAgbV9leGNlcHRpb25GdXp6
QnVmZmVyID0gTWFsbG9jUHRyPEVuY29kZWRKU1ZhbHVlPjo6bWFsbG9jKHNpemUpOwotICAgICAg
ICByZXR1cm4gbV9leGNlcHRpb25GdXp6QnVmZmVyLmdldCgpOwotICAgIH0KKyAgICBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUqIGV4Y2VwdGlvbkZ1enppbmdCdWZmZXIoc2l6ZV90KTsKIAogICAgIHZv
aWQgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAkocmV2
aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlz
YWxsb3dWTVJlZW50cnkuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlNhbXBs
aW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkocmV2aXNpb24g
MjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1JbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE2IEBAIGJvb2wgVk06OmVuc3VyZVN0YWNrQ2FwYWNp
dHlGb3IoUmVnaXN0ZXIKICAgICAKIH0KIAoraW5saW5lIGJvb2wgVk06OmlzSW5NaW5pTW9kZSgp
Cit7CisgICAgcmV0dXJuICFjYW5Vc2VKSVQoKSB8fCBPcHRpb25zOjpmb3JjZU1pbmlWTU1vZGUo
KTsKK30KKworaW5saW5lIGJvb2wgVk06OnVzZVVubGlua2VkQ29kZUJsb2NrSmV0dGlzb25pbmco
KQoreworICAgIHJldHVybiBPcHRpb25zOjp1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5n
KCkgfHwgaXNJbk1pbmlNb2RlKCk7Cit9CisKIGJvb2wgVk06OmlzU2FmZVRvUmVjdXJzZVNvZnQo
KSBjb25zdAogewogICAgIGJvb2wgc2FmZSA9IGlzU2FmZVRvUmVjdXJzZShtX3NvZnRTdGFja0xp
bWl0KTsKQEAgLTc3LDQgKzg3LDEyIEBAIGlubGluZSBDYWxsRnJhbWUqIFZNOjp0b3BKU0NhbGxG
cmFtZSgpIGMKICAgICByZXR1cm4gZnJhbWU7CiB9CiAKK2lubGluZSBFbmNvZGVkSlNWYWx1ZSog
Vk06OmV4Y2VwdGlvbkZ1enppbmdCdWZmZXIoc2l6ZV90IHNpemUpCit7CisgICAgQVNTRVJUKE9w
dGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSk7CisgICAgaWYgKCFtX2V4Y2VwdGlvbkZ1enpCdWZm
ZXIpCisgICAgICAgIG1fZXhjZXB0aW9uRnV6ekJ1ZmZlciA9IE1hbGxvY1B0cjxFbmNvZGVkSlNW
YWx1ZT46Om1hbGxvYyhzaXplKTsKKyAgICByZXR1cm4gbV9leGNlcHRpb25GdXp6QnVmZmVyLmdl
dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI1MTE5
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyLmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db21waWxl
clRpbWluZ1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db21waWxlclRpbWluZ1Njb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBp
bGVyVGltaW5nU2NvcGUuaCIKIAotI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRp
b25zSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCShyZXZpc2lvbiAyNTExOTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25PdmVycmlkZXMuaCIKIAotI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbldoaXRlbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAkocmV2aXNpb24gMjUxMTky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0ludGVncml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0ludGVncml0eS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9JbnRlZ3JpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogCi0j
aW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIk9wdGlvbnNJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVk1JbnNwZWN0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjUxMTkyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUg
IkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVk
ZSAiU25pcHBldC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRl
eHRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNvbnRleHRJbmxpbmVzLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db250ZXh0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJPcHRpb25zLmgi
CisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21JbnN0YW5jZS5oIgogI2luY2x1ZGUgPG11dGV4PgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRl
ICJPcHRpb25zLmgiCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2VjdGlvblBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21NZW1v
cnlJbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIldhc21OYW1lU2VjdGlvblBhcnNlci5oIgogI2lu
Y2x1ZGUgIldhc21PcHMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
dHJlYW1pbmdQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVk
ZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSAiV2Fz
bVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJKHJldmlzaW9uIDI1
MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSGVhcENlbGxJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlv
blR5cGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaWVyVXBDb3Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRpZXJV
cENvdW50LmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRpZXJVcENvdW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiT3B0aW9uc0lubGluZXMuaCIK
ICNpbmNsdWRlICJXYXNtT1NSRW50cnlEYXRhLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0
ZS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIk9wdGlvbnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAj
aW5jbHVkZSAiV2FzbVNpZ25hdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAkocmV2
aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKIAogI2luY2x1ZGUgIkNQVS5oIgorI2luY2x1ZGUgIk9wdGlvbnNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiV2FzbVBsYW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHku
Y3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1
bGUuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIk9wdGlvbnMu
aCIKICNpbmNsdWRlICJQcm9taXNlRGVmZXJyZWRUaW1lci5oIgogI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJZ
YXJySW50ZXJwcmV0ZXIuaCIKIAotI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRp
b25zSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIllhcnIu
aCIKICNpbmNsdWRlICJZYXJyQ2Fub25pY2FsaXplLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgot
I2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJPcHRpb25zSW5saW5lcy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJDYW5vbmljYWxpemUu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHJl
dmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAKLSNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5j
bHVkZSAiT3B0aW9uc0lubGluZXMuaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFy
ckNhbm9uaWNhbGl6ZS5oIgogI2luY2x1ZGUgIllhcnJQYXJzZXIuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkocmV2aXNpb24gMjUx
MTkyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09wdGlvbnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
Y3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVySW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVS
ZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjUxMTkyKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBACiAjaW1wb3J0ICJXb3JrUXVldWVJdGVtLmgiCiAjaW1wb3J0
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNDQ29uZmlnLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zSW5saW5lcy5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvVGVzdFJ1bm5lclV0aWxzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0
aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCiAjaW5jbHVkZSAi
U3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L09wdGlvbnNJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2VQ
cml2YXRlLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381133</attachid>
            <date>2019-10-16 16:45:45 -0700</date>
            <delta_ts>2019-10-16 17:05:39 -0700</delta_ts>
            <desc>another test patch for MSVC.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>40401</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTIwLDcgKzkyMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAogICAgIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKICAgICBydW50aW1lL09wZXJhdGlvbnMuaAotICAgIHJ1bnRpbWUv
T3B0aW9uRW50cnkuaAogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9uc1NldFZhbHVlKGNv
bnN0CiB7CiAjZGVmaW5lIFNFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgj
bmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9TZXQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCF2YWx1ZUZyb21H
VmFsdWUodmFsdWUsIHZhbHVlVG9TZXQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgICAgIHJldHVybiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgT3B0aW9uczo6bmFtZV8oKSA9IHZhbHVlVG9TZXQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4ganNjT3B0aW9uc0dldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5lIEdFVF9PUFRJT05f
VkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZh
bHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0
aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAg
ICAgIFwKICAgICAgICAgdmFsdWVUb0dWYWx1ZSh2YWx1ZVRvR2V0LCB2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC02MTYs
OCArNjE2LDggQEAgdm9pZCBqc2Nfb3B0aW9uc19mb3JlYWNoKEpTQ09wdGlvbnNGdW5jIAogCiAj
ZGVmaW5lIFZJU0lUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJp
bGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2
YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6OkF2YWls
YWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8g
ZGVmYXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gZGVm
YXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBhdXRv
IG9wdGlvblR5cGUgPSBqc2NPcHRpb25zVHlwZShkZWZhdWx0VmFsdWUpOyAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBpZiAoZnVuY3Rpb24gKCNuYW1lXywgb3B0aW9uVHlwZSwgZGVzY3JpcHRp
b25fLCB1c2VyRGF0YSkpICAgICAgXAogICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNjY2LDcgKzY2Niw3
IEBAIEdPcHRpb25Hcm91cCoganNjX29wdGlvbnNfZ2V0X29wdGlvbl9ncm8KICAgICBHQXJyYXkq
IGVudHJpZXMgPSBnX2FycmF5X25ldyhUUlVFLCBUUlVFLCBzaXplb2YoR09wdGlvbkVudHJ5KSk7
CiAjZGVmaW5lIFJFR0lTVEVSX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxp
dHk6OmF2YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAg
ICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICB8fCBPcHRpb25zOjpp
c0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxh
YmlsaXR5XykpIHsgXAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUoZ19zdHJkdXBfcHJp
bnRmKCJqc2MtJXMiLCAjbmFtZV8pKTsgICAgICAgXAogICAgICAgICBlbnRyaWVzID0gZ19hcnJh
eV9zZXRfc2l6ZShlbnRyaWVzLCBlbnRyaWVzLT5sZW4gKyAxKTsgXAogICAgICAgICBHT3B0aW9u
RW50cnkqIGVudHJ5ID0gJmdfYXJyYXlfaW5kZXgoZW50cmllcywgR09wdGlvbkVudHJ5LCBlbnRy
aWVzLT5sZW4gLSAxKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBA
QAogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJB
QzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkUzODQy
MzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0
aW9uRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlE
RDQ0NSAvKiBPcHRpb25zTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRC
aXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi87
IH07CkBAIC01MDczLDcgKzUwNzIsNiBAQAogCQlGRTM1QzJGQTIxQjFFNkM3MDAwRjRDQTggLyog
T3B0aW9ucy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcHRpb25zLnJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGQjIxQjFFNkM3MDAwRjRDQTgg
LyogT3Bjb2RlR3JvdXAucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3Bj
b2RlR3JvdXAucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZDMjFCMUU2
QzcwMDBGNENBOCAvKiBNZXRhZGF0YS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBh
dGggPSBNZXRhZGF0YS5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzODQyMzAy
MzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcHRpb25zTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvbGxhclZNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2xsYXJWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM4Miw3ICs3MzgwLDYgQEAKIAkJCQlFMzlFRUFGMjIy
ODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaCAqLywKIAkJCQlGNjkyQTg3NzAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5jcHAg
Ki8sCiAJCQkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLywKLQkJ
CQlGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLywKIAkJCQkwRkUy
MjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2
QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywKIAkJCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCAqLywKQEAgLTk5MDUsNyArOTkwMiw2IEBACiAJCQkJMEYyQkRD
MkMxNTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2Vs
bFB0ci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJPcHRpb25FbnRyeS5oIgogI2luY2x1ZGUgIk9wdGlv
bnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNiwxMiArMzUs
MTIgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yOwogCiAjaWYgQ1BVKEFS
TTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2
ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICogUGFnZVNp
emU7CiAjZWxzZQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDQgKiBLQjsKK2NvbnN0ZXhw
ciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNlbmRpZgogCi1j
b25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAzMiAqIEtCOwotCiAjaWYgRU5B
QkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogdXNpbmcgSklUV3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rp
b24gPSB2b2lkICgqKShvZmZfdCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAjZW5kaWYKQEAgLTgy
LDggKzgxLDI5IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICAgICAgYm9vbCB1c2VGYXN0UGVy
bWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAotICAgICAgICAgICAgT3B0aW9uRW50cnkgb3B0aW9u
c1tOdW1iZXJPZk9wdGlvbnNdOwotICAgICAgICAgICAgT3B0aW9uRW50cnkgZGVmYXVsdE9wdGlv
bnNbTnVtYmVyT2ZPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xPcHRpb25zW051
bWJlck9mQm9vbE9wdGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbERlZmF1bHRPcHRp
b25zW051bWJlck9mQm9vbE9wdGlvbnNdOworCisgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVs
IHR5cGVHQ0xvZ0xldmVsT3B0aW9uc1tOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKyAgICAg
ICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2ZWxEZWZhdWx0T3B0aW9uc1tOdW1i
ZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKworICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJP
cHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsKKyAgICAgICAgICAgIGludDMyX3QgdHlwZUlu
dDMyRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZJbnQzMk9wdGlvbnNdOworCisgICAgICAgICAgICB1
bnNpZ25lZCB0eXBlVW5zaWduZWRPcHRpb25zW051bWJlck9mVW5zaWduZWRPcHRpb25zXTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHR5cGVVbnNpZ25lZERlZmF1bHRPcHRpb25zW051bWJlck9mVW5z
aWduZWRPcHRpb25zXTsKKworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVPcHRpb25zW051
bWJlck9mRG91YmxlT3B0aW9uc107CisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJsZURlZmF1
bHRPcHRpb25zW051bWJlck9mRG91YmxlT3B0aW9uc107CisKKyAgICAgICAgICAgIHNpemVfdCB0
eXBlU2l6ZU9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisgICAgICAgICAgICBzaXplX3Qg
dHlwZVNpemVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKworICAgICAgICAg
ICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ09wdGlvbnNbTnVtYmVyT2ZPcHRpb25TdHJp
bmdPcHRpb25zXTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25TdHJpbmdEZWZh
dWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOworCisgICAgICAgICAgICBP
cHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VPcHRpb25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRp
b25zXTsKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5cGVPcHRpb25SYW5nZURlZmF1bHRPcHRp
b25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zXTsKICAgICAgICAgfTsKICAgICAgICAgY2hh
ciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRp
b25SYW5nZSB7Ci1wcml2YXRlOgotICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQs
IEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdl
JiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhzKQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGlu
aXRpYWxpemF0aW9uCi0gICAgICAgIGlmICghcmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0g
VW5pbml0aWFsaXplZDsKLSAgICAgICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAg
ICAgbV9sb3dMaW1pdCA9IDA7Ci0gICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBj
aGFyKik7Ci0gICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJh
bmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5n
ZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBzX251bGxSYW5nZVN0cjsKLQotICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBj
aGFyKiBtX3JhbmdlU3RyaW5nOwotICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWdu
ZWQgbV9oaWdoTGltaXQ7Ci19OwotCi0vLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVl
OgotdW5pb24gT3B0aW9uRW50cnkgewotICAgIHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5n
IFVuc2lnbmVkID0gdW5zaWduZWQ7Ci0gICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVz
aW5nIEludDMyID0gaW50MzJfdDsKLSAgICB1c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5n
IE9wdGlvblJhbmdlID0gSlNDOjpPcHRpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcg
PSBjb25zdCBjaGFyKjsKLSAgICB1c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsK
LQotICAgIGJvb2wgdmFsQm9vbDsKLSAgICB1bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3Vi
bGUgdmFsRG91YmxlOwotICAgIGludDMyX3QgdmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7
Ci0gICAgT3B0aW9uUmFuZ2UgdmFsT3B0aW9uUmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0
aW9uU3RyaW5nOwotICAgIEdDTG9nZ2luZzo6TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK2Jvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9u
SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2
YWlsYWJpbGl0eSA9PSBBdmFpbGFiaWxpdHk6OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBn
X2pzY0NvbmZpZy5yZXN0cmljdGVkT3B0aW9uc0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBA
QCBib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5V
U0VEX1BBUkFNKGlkKTsKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNp
bmdsZUFsbG9jYXRpb25TaXplSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVB
bGxvY2F0aW9uU2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJX
SU4pCi0gICAgaWYgKGlkID09IHVzZVNpZ2lsbENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQg
PT0gT3B0aW9uSUQ6OnVzZVNpZ2lsbENyYXNoQW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlk
ID09IGxvZ0pJVENvZGVGb3JQZXJmSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRD
b2RlRm9yUGVyZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0g
dHJhY2VMTEludEV4ZWN1dGlvbklEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTElu
dEV4ZWN1dGlvbikKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQg
PT0gdHJhY2VMTEludFNsb3dQYXRoSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxM
SW50U2xvd1BhdGgpCiAgICAgICAgIHJldHVybiAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldp
dGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlv
bldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxh
YmxlID0gKGF2YWlsYWJpbGl0eSA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAg
ICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIs
MTAgKzI4Miw0NSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgb3V0LnByaW50KG1fcmFuZ2VTdHJpbmcpOwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHdv
cmthcm91bmQgZm9yIE1TVkMncyBpbmFiaWxpdHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCisv
LyBPbmNlIHRoZSBNU1ZDIGJ1ZyBoYXMgYmVlbiBmaXhlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIHNu
aXBwZXQgb2YgY29kZSBhbmQKKy8vIG1ha2UgaXRzIGNvdW50ZXJwYXJ0IGluIE9wdGlvbnMuaCB1
bmNvbmRpdGlvbmFsLgorLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0
dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxl
ci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5odG1sCisjaWYgQ09NUElMRVIoTVNWQykKKwordGVt
cGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9wdGlvbklEIGlkPgorY29uc3RleHByIHNpemVfdCBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleCgpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyNkZWZp
bmUgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVf
LCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6
Om5hbWVfKSBcCisgICAgICAgIHJldHVybiBpbmRleDsgXAorICAgIGlmICh0eXBlID09IE9wdGlv
blR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAgaW5kZXgrKzsKKworICAgIEZPUl9FQUNIX0pTQ19P
UFRJT04oQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gpOworI3VuZGVmIENPVU5UX0lOREVYX0FO
RF9GSU5EX01BVENICisgICAgcmV0dXJuIEludmFsaWRPcHRpb25JbmRleDsKK30KKworI2RlZmlu
ZSBERUZJTkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0
aW9uczo6bmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBl
IyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5
cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAgIE9wdGlvblR5cGVzOjp0
eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNp
ZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAg
IH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNTT1JTKQorI3Vu
ZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCisKKyNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQor
CiAvLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoKLWNvbnN0IE9w
dGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW09wdGlvbnM6Om51bWJlck9m
T3B0aW9uc10gPSB7Citjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpb25z
SW5mb1tOdW1iZXJPZk9wdGlvbnNdID0gewogI2RlZmluZSBGSUxMX09QVElPTl9JTkZPKHR5cGVf
LCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0g
ICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8sIEF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XyB9LAorICAgIHsgI25hbWVfLCBkZXNjcmlwdGlvbl8sIE9wdGlv
blR5cGVJRDo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xywgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpIH0sCiAg
ICAgRk9SX0VBQ0hfSlNDX09QVElPTihGSUxMX09QVElPTl9JTkZPKQogI3VuZGVmIEZJTExfT1BU
SU9OX0lORk8KIH07CkBAIC0yOTksMjYgKzMzNCwyNSBAQCBzdGF0aWMgdm9pZCBzY2FsZUpJVFBv
bGljeSgpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMC4wOwogCiAgICAgc3RydWN0IE9wdGlvblRv
U2NhbGUgewotICAgICAgICBPcHRpb25zOjpJRCBpZDsKKyAgICAgICAgc2l6ZV90IGluZGV4Owog
ICAgICAgICBpbnQzMl90IG1pblZhbDsKICAgICB9OwogCiAgICAgc3RhdGljIGNvbnN0IE9wdGlv
blRvU2NhbGUgb3B0aW9uc1RvU2NhbGVbXSA9IHsKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hv
bGRGb3JKSVRBZnRlcldhcm1VcElELCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xk
Rm9ySklUU29vbklELCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1p
emVBZnRlcldhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXBJRCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9s
ZEZvck9wdGltaXplU29vbklELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9y
RlRMT3B0aW1pemVTb29uSUQsIDIgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JG
VExPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIDIgfQorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZp
Y0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRBZnRl
cldhcm1VcD4oKSwgMCB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlv
blR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRTb29uPigpLCAwIH0sCisg
ICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0
aW9uSUQ6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA+KCksIDEgfSwKKyAgICAgICAg
eyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA+KCksIDEgfSwKKyAgICAgICAgeyBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhy
ZXNob2xkRm9yT3B0aW1pemVTb29uPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNp
ZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9w
dGltaXplU29vbj4oKSwgMiB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9w
dGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVy
V2FybVVwPigpLCAyIH0sCiAgICAgfTsKIAotICAgIGNvbnN0IGludCBudW1iZXJPZk9wdGlvbnNU
b1NjYWxlID0gc2l6ZW9mKG9wdGlvbnNUb1NjYWxlKSAvIHNpemVvZihPcHRpb25Ub1NjYWxlKTsK
KyAgICBjb25zdGV4cHIgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBzaXplb2Yob3B0aW9u
c1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZTsgaSsrKSB7Ci0gICAgICAgIE9wdGlvbiBvcHRpb24o
b3B0aW9uc1RvU2NhbGVbaV0uaWQpOwotICAgICAgICBBU1NFUlQob3B0aW9uLnR5cGUoKSA9PSBP
cHRpb25zOjpUeXBlOjpJbnQzMik7Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpICo9IHNjYWxl
RmFjdG9yOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSA9IHN0ZDo6bWF4KG9wdGlvbi5pbnQz
MlZhbCgpLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOworICAgICAgICBpbnQzMl90JiBvcHRp
b25WYWx1ZSA9IGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbb3B0aW9uc1RvU2NhbGVbaV0u
aW5kZXhdOworICAgICAgICBvcHRpb25WYWx1ZSAqPSBzY2FsZUZhY3RvcjsKKyAgICAgICAgb3B0
aW9uVmFsdWUgPSBzdGQ6Om1heChvcHRpb25WYWx1ZSwgb3B0aW9uc1RvU2NhbGVbaV0ubWluVmFs
KTsKICAgICB9CiB9CiAKQEAgLTQ0MSw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVE
ZXBlbmRlbnRPcHRpb25zKCkKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKQog
ICAgICAgICBPcHRpb25zOjpjb2xsZWN0Q29udGludW91c2x5KCkgPSBmYWxzZTsKIAotICAgIGlm
IChPcHRpb24oT3B0aW9uczo6aml0UG9saWN5U2NhbGVJRCkuaXNPdmVycmlkZGVuKCkpCisgICAg
aWYgKE9wdGlvbihPcHRpb25JRDo6aml0UG9saWN5U2NhbGUpLmlzT3ZlcnJpZGRlbigpKQogICAg
ICAgICBzY2FsZUpJVFBvbGljeSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpmb3JjZUVhZ2Vy
Q29tcGlsYXRpb24oKSkgewpAQCAtNTIyLDkgKzU1NiwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRp
YWxpemUoKQogICAgICAgICAgICAgQ29uZmlnOjplbmFibGVSZXN0cmljdGVkT3B0aW9ucygpOwog
I2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0
aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICAgICAg
ICAgIG5hbWVfKCkgPSBkZWZhdWx0VmFsdWVfOyBcCi0gICAgICAgICAgICBuYW1lXyMjRGVmYXVs
dCgpID0gZGVmYXVsdFZhbHVlXzsKKyNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIHsgXAorICAgICAgICAg
ICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVfOyBcCisgICAgICAgICAgICAgICAgbmFt
ZV8oKSA9IHZhbHVlOyBcCisgICAgICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IHZhbHVl
OyBcCisgICAgICAgICAgICB9CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKElOSVRf
T1BUSU9OKQogI3VuZGVmIElOSVRfT1BUSU9OCiAKQEAgLTU0OCw3ICs1ODQsNyBAQCB2b2lkIE9w
dGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAjZWxzZSAvLyBQ
TEFURk9STShDT0NPQSkKICNkZWZpbmUgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUyh0
eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykg
XAotICAgICAgICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIG5hbWVf
IyNJRCwgIkpTQ18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKKyAgICAg
ICAgICAgIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1lXygpLCBPcHRpb25JRDo6bmFt
ZV8sICJKU0NfIiAjbmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7CiAgICAgICAg
ICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKE9WRVJSSURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1Mp
CiAjdW5kZWYgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUwogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpAQCAtNzI3LDE2ICs3NjMsMTUgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25X
aXRob3V0QWxpYXMoY29ucwogCiAgICAgY29uc3QgY2hhciogdmFsdWVTdHIgPSBlcXVhbFN0ciAr
IDE7CiAKLSAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZ5IGFyZyBp
cyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKKyAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNo
ZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZwog
ICAgIC8vIGlmIHRoZSB2YWx1ZSBtYWtlcyBzZW5zZS4gT3RoZXJ3aXNlLCBtb3ZlIG9uIHRvIGNo
ZWNraW5nIHRoZSBuZXh0IG9wdGlvbi4KICNkZWZpbmUgU0VUX09QVElPTl9JRl9NQVRDSCh0eXBl
XywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAog
ICAgIGlmIChzdHJsZW4oI25hbWVfKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVxdWFsU3RyIC0g
YXJnKSAgICAgIFwKICAgICAgICAgJiYgIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFsU3RyIC0g
YXJnKSkgeyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChBdmFpbGFiaWxpdHk6OmF2YWls
YWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgIFwKLSAgICAgICAgICAgICYmICFp
c0F2YWlsYWJsZShuYW1lXyMjSUQsIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKKyAg
ICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6Ok5v
cm1hbCAgICBcCisgICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBB
dmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRp
b25FbnRyeTo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2
YWx1ZVN0ciwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHN1Y2Nl
c3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBuYW1lXygpID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXApAQCAtODE2LDEwICs4NTEsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9u
cyhTdHJpbmdCdWlsZAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAKLSAg
ICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgZm9y
IChzaXplX3QgaWQgPSAwOyBpZCA8IE51bWJlck9mT3B0aW9uczsgaWQrKykgewogICAgICAgICBp
ZiAoc2VwYXJhdG9yICYmIGlkKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VwYXJhdG9y
KTsKLSAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8SUQ+KGlk
KSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CisgICAg
ICAgIGR1bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PE9wdGlvbklEPihpZCks
IG9wdGlvbkhlYWRlciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOwogICAgIH0K
IH0KIApAQCAtODM1LDEwICs4NzAsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhG
SUxFKiBzdHJlYQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBidWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkLAordm9pZCBPcHRp
b25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwg
T3B0aW9uSUQgaWQsCiAgICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIs
IER1bXBEZWZhdWx0c09wdGlvbiBkdW1wRGVmYXVsdHNPcHRpb24pCiB7Ci0gICAgaWYgKGlkID49
IG51bWJlck9mT3B0aW9ucykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpZCkgPj0gTnVt
YmVyT2ZPcHRpb25zKQogICAgICAgICByZXR1cm47IC8vIElsbGVnYWwgb3B0aW9uLgogCiAgICAg
T3B0aW9uIG9wdGlvbihpZCk7CkBAIC04ODAsMjkgKzkxNSw3MSBAQCB2b2lkIE9wdGlvbnM6OmVu
c3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAKK09wdGlvbjo6
T3B0aW9uKE9wdGlvbklEIGlkKQorICAgIDogbV9pZChpZCkKK3sKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lm
aWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4
OworICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0u
dHlwZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworCisjZGVmaW5lIEhBTkRMRV9DQVNFKE9wdGlv
blR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25UeXBlXzogXAor
ICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJPZiMjT3B0aW9uVHlwZV8j
I09wdGlvbnMpOyBcCisgICAgICAgIG1fdmFsIyNPcHRpb25UeXBlXyA9IGdfanNjQ29uZmlnLnR5
cGUjI09wdGlvblR5cGVfIyNPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBi
cmVhazsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRl
ZiBIQU5ETEVfQ0FTRQorICAgIH0KK30KKworY29uc3QgT3B0aW9uIE9wdGlvbjo6ZGVmYXVsdE9w
dGlvbigpIGNvbnN0Cit7CisgICAgT3B0aW9uIHJlc3VsdDsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lmaWNJ
bmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4Owor
ICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlw
ZTsKKworICAgIHJlc3VsdC5tX2lkID0gbV9pZDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKworI2Rl
ZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8pIFwKKyAgICBjYXNlIE9wdGlvblR5
cGVJRDo6T3B0aW9uVHlwZV86IFwKKyAgICAgICAgQVNTRVJUKHR5cGVTcGVjaWZpY0luZGV4IDwg
TnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAorICAgICAgICByZXN1bHQubV92YWwj
I09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0aW9uVHlwZV8jI0RlZmF1bHRPcHRp
b25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNI
X0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVy
JiBidWlsZGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpCb29sOgotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbEJvb2wg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV92YWxCb29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsVW5zaWduZWQpOworICAgIGNhc2UgT3B0aW9uVHlw
ZUlEOjpVbnNpZ25lZDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxVbnNpZ25l
ZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxTaXplKTsKKyAgICBjYXNlIE9wdGlv
blR5cGVJRDo6U2l6ZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxTaXplKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9lbnRyeS52YWxEb3VibGUpOwor
ICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpEb3VibGU6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobV92YWxEb3VibGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Vu
dHJ5LnZhbEludDMyKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6SW50MzI6CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsSW50MzIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2Vu
dHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpPcHRpb25SYW5nZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92YWxPcHRpb25SYW5nZS5y
YW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpP
cHRpb25TdHJpbmc6IHsKLSAgICAgICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9lbnRyeS52YWxP
cHRpb25TdHJpbmc7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmluZzogeworICAg
ICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX3ZhbE9wdGlvblN0cmluZzsKICAgICAgICAgaWYg
KCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24gPSAiIjsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyInKTsKQEAgLTkxMCw4ICs5ODcsOCBAQCB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWls
ZGVyJiBidWlsZGVyCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkudmFsR0NMb2dM
ZXZlbCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsOiB7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX3ZhbEdDTG9nTGV2ZWwpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTkyMCwyMyArOTk3LDIzIEBAIHZvaWQg
T3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIKIGJvb2wgT3B0aW9uOjpvcGVyYXRv
cj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsK
LSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZh
bEJvb2wgPT0gb3RoZXIubV9lbnRyeS52YWxCb29sOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6
VW5zaWduZWQ6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkID09IG90aGVyLm1f
ZW50cnkudmFsVW5zaWduZWQ7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAg
ICByZXR1cm4gbV9lbnRyeS52YWxTaXplID09IG90aGVyLm1fZW50cnkudmFsU2l6ZTsKLSAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5LnZhbERv
dWJsZSA9PSBvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4obV9lbnRyeS52
YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV9lbnRyeS52YWxEb3VibGUpKTsKLSAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQz
MiA9PSBvdGhlci5tX2VudHJ5LnZhbEludDMyOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0
aW9uUmFuZ2U6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3Ry
aW5nKCkgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOwotICAg
IGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOgotICAgICAgICByZXR1cm4gKG1fZW50
cnkudmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKQotICAg
ICAgICAgICAgfHwgKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1fZW50cnkudmFs
T3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcsIG90aGVyLm1f
ZW50cnkudmFsT3B0aW9uU3RyaW5nKSk7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xl
dmVsOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fZW50
cnkudmFsR0NMb2dMZXZlbDsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAgICAg
cmV0dXJuIG1fdmFsQm9vbCA9PSBvdGhlci5tX3ZhbEJvb2w7CisgICAgY2FzZSBPcHRpb25UeXBl
SUQ6OlVuc2lnbmVkOgorICAgICAgICByZXR1cm4gbV92YWxVbnNpZ25lZCA9PSBvdGhlci5tX3Zh
bFVuc2lnbmVkOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpTaXplOgorICAgICAgICByZXR1cm4g
bV92YWxTaXplID09IG90aGVyLm1fdmFsU2l6ZTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6RG91
YmxlOgorICAgICAgICByZXR1cm4gKG1fdmFsRG91YmxlID09IG90aGVyLm1fdmFsRG91YmxlKSB8
fCAoc3RkOjppc25hbihtX3ZhbERvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX3ZhbERvdWJs
ZSkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIG1fdmFs
SW50MzIgPT0gb3RoZXIubV92YWxJbnQzMjsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9u
UmFuZ2U6CisgICAgICAgIHJldHVybiBtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0g
b3RoZXIubV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOworICAgIGNhc2UgT3B0aW9uVHlw
ZUlEOjpPcHRpb25TdHJpbmc6CisgICAgICAgIHJldHVybiAobV92YWxPcHRpb25TdHJpbmcgPT0g
b3RoZXIubV92YWxPcHRpb25TdHJpbmcpCisgICAgICAgICAgICB8fCAobV92YWxPcHRpb25TdHJp
bmcgJiYgb3RoZXIubV92YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX3ZhbE9wdGlvblN0cmlu
Zywgb3RoZXIubV92YWxPcHRpb25TdHJpbmcpKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6R0NM
b2dMZXZlbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX3ZhbEdD
TG9nTGV2ZWw7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNiBAQAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTMsMzkgKzUy
LDE5IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KIAogY2xhc3Mg
T3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwgeworICAgIGVudW0g
Y2xhc3MgRHVtcExldmVsIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBP
dmVycmlkZGVuLAogICAgICAgICBBbGwsCiAgICAgICAgIFZlcmJvc2UKICAgICB9OwogCi0gICAg
ZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgeworICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IDog
dWludDhfdCB7CiAgICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0ZWQsCiAgICAg
ICAgIENvbmZpZ3VyYWJsZQogICAgIH07CiAKLSNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQodHlw
ZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwK
LSAgICBuYW1lXyMjSUQsCi0KLSAgICBlbnVtIElEIHsKLSAgICAgICAgRk9SX0VBQ0hfSlNDX09Q
VElPTihERUNMQVJFX09QVElPTl9JRCkKLSAgICAgICAgbnVtYmVyT2ZPcHRpb25zCi0gICAgfTsK
LSN1bmRlZiBERUNMQVJFX09QVElPTl9JRAotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAg
ICAgQm9vbCwKLSAgICAgICAgVW5zaWduZWQsCi0gICAgICAgIERvdWJsZSwKLSAgICAgICAgSW50
MzIsCi0gICAgICAgIFNpemUsCi0gICAgICAgIE9wdGlvblJhbmdlLAotICAgICAgICBPcHRpb25T
dHJpbmcsCi0gICAgICAgIEdDTG9nTGV2ZWwsCi0gICAgfTsKLQogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIFBhcnNlcyBhIHN0cmluZyBv
ZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0tPG9wdGlvbk5h
bWU+PTx2YWx1ZT4iCkBAIC0xMDIsMTMgKzgxLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCBlbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKIAogI2RlZmlu
ZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBh
dmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBP
cHRpb25FbnRyeTo6dHlwZV8mIG5hbWVfKCkgeyByZXR1cm4gZ19qc2NDb25maWcub3B0aW9uc1tu
YW1lXyMjSURdLnZhbCMjdHlwZV87IH0gIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRp
b25FbnRyeTo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCkgeyByZXR1cm4gZ19qc2NDb25maWcuZGVm
YXVsdE9wdGlvbnNbbmFtZV8jI0lEXS52YWwjI3R5cGVfOyB9Ci0KKyAgICBzdGF0aWMgT3B0aW9u
VHlwZXM6OnR5cGVfJiBuYW1lXygpOyBcCisgICAgc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYg
bmFtZV8jI0RlZmF1bHQoKTsKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9O
X0FDQ0VTU09SUykKICN1bmRlZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKIAotICAgIHN0YXRp
YyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOworICAgIHN0YXRpYyBib29sIGlz
QXZhaWxhYmxlKE9wdGlvbklELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRlOgogCkBAIC0xMTYs
OCArOTQsOSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBFbnRyeUluZm8gewogICAgICAgICBjb25z
dCBjaGFyKiBuYW1lOwogICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsKLSAgICAgICAg
VHlwZSB0eXBlOworICAgICAgICBPcHRpb25UeXBlSUQgdHlwZTsKICAgICAgICAgQXZhaWxhYmls
aXR5IGF2YWlsYWJpbGl0eTsKKyAgICAgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXg7CiAg
ICAgfTsKIAogICAgIE9wdGlvbnMoKTsKQEAgLTEyOSwxMjIgKzEwOCw4OSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKICAgICBzdGF0aWMgdm9pZCBk
dW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBjb25zdCBjaGFyKiB0aXRs
ZSwKICAgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFk
ZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKLSAgICBz
dGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIElELAorICAg
IHN0YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgT3B0aW9u
SUQsCiAgICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRlciwgY29uc3QgY2hhciogb3B0aW9u
Rm9vdGVyLCBEdW1wRGVmYXVsdHNPcHRpb24pOwogCiAgICAgc3RhdGljIGJvb2wgc2V0T3B0aW9u
V2l0aG91dEFsaWFzKGNvbnN0IGNoYXIqIGFyZyk7CiAgICAgc3RhdGljIGJvb2wgc2V0QWxpYXNl
ZE9wdGlvbihjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29sIG92ZXJyaWRlQWxpYXNl
ZE9wdGlvbldpdGhIZXVyaXN0aWMoY29uc3QgY2hhciogbmFtZSk7CiAKLSAgICBzdGF0aWMgY29u
c3QgRW50cnlJbmZvIHNfb3B0aW9uc0luZm9bbnVtYmVyT2ZPcHRpb25zXTsKKyAgICBzdGF0aWMg
Y29uc3QgRW50cnlJbmZvIHNfb3B0aW9uc0luZm9bTnVtYmVyT2ZPcHRpb25zXTsKIAogICAgIGZy
aWVuZCBjbGFzcyBPcHRpb247CiB9OwogCiBjbGFzcyBPcHRpb24gewogcHVibGljOgotICAgIE9w
dGlvbihPcHRpb25zOjpJRCBpZCkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50
cnkoZ19qc2NDb25maWcub3B0aW9uc1ttX2lkXSkKLSAgICB7Ci0gICAgfQotICAgIAorICAgIE9w
dGlvbihPcHRpb25JRCk7CisKICAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0Owog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogICAgIAotICAgIE9wdGlvbnM6OklEIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQotICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBk
ZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIE9wdGlvbnM6OlR5cGUgdHlwZSgpIGNvbnN0OwotICAg
IE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdDsKLSAgICBib29sIGlz
T3ZlcnJpZGRlbigpIGNvbnN0OworICAgIE9wdGlvbklEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQorICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29w
dGlvbnNJbmZvW2lkSW5kZXgoKV0ubmFtZTsgfQorICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmRlc2Ny
aXB0aW9uOyB9CisgICAgT3B0aW9uVHlwZUlEIHR5cGUoKSBjb25zdCB7IHJldHVybiBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW2lkSW5kZXgoKV0udHlwZTsgfQorICAgIE9wdGlvbnM6OkF2YWlsYWJp
bGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZv
W2lkSW5kZXgoKV0uYXZhaWxhYmlsaXR5OyB9CisgICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25z
dCB7IHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7IH0KICAgICBjb25zdCBPcHRpb24g
ZGVmYXVsdE9wdGlvbigpIGNvbnN0OwotICAgIAotICAgIGJvb2wmIGJvb2xWYWwoKTsKLSAgICB1
bnNpZ25lZCYgdW5zaWduZWRWYWwoKTsKLSAgICBkb3VibGUmIGRvdWJsZVZhbCgpOwotICAgIGlu
dDMyX3QmIGludDMyVmFsKCk7Ci0gICAgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2VWYWwoKTsKLSAg
ICBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmdWYWwoKTsKLSAgICBHQ0xvZ2dpbmc6OkxldmVsJiBn
Y0xvZ0xldmVsVmFsKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIC8vIE9ubHkgdXNlZCBmb3IgY29u
c3RydWN0aW5nIGRlZmF1bHQgT3B0aW9ucy4KLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQsIE9w
dGlvbkVudHJ5JiBlbnRyeSkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50cnko
ZW50cnkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBPcHRpb25zOjpJRCBtX2lkOwotICAgIE9w
dGlvbkVudHJ5JiBtX2VudHJ5OwotfTsKLQotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6bmFt
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0ubmFt
ZTsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwot
fQotCi1pbmxpbmUgT3B0aW9uczo6VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJl
dHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRp
b25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJl
dHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KIAotaW5s
aW5lIGJvb2wgT3B0aW9uOjppc092ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhp
cyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19CisjZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1IoT3B0aW9u
VHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBlXygpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShE
RUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IKIAotaW5saW5lIGNvbnN0
IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRp
b24obV9pZCwgZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbV9pZF0pOwotfQorcHJpdmF0ZToK
KyAgICBPcHRpb24oKSB7IH0KIAotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0g
ICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbDsKLX0KKyAgICBzaXplX3QgaWRJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4obV9pZCk7IH0KIAotaW5saW5lIHVuc2lnbmVk
JiBPcHRpb246OnVuc2lnbmVkVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25l
ZDsKLX0KKyAgICBPcHRpb25JRCBtX2lkOworICAgIHVuaW9uIHsKIAotaW5saW5lIGRvdWJsZSYg
T3B0aW9uOjpkb3VibGVWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbERvdWJsZTsKLX0K
KyNkZWZpbmUgREVDTEFSRV9NRU1CRVIoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgICAgIHR5
cGVfIG1fdmFsIyNPcHRpb25UeXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVD
TEFSRV9NRU1CRVIpCisjdW5kZWYgREVDTEFSRV9NRU1CRVIKIAotaW5saW5lIGludDMyX3QmIE9w
dGlvbjo6aW50MzJWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbEludDMyOwotfQotCi1p
bmxpbmUgT3B0aW9uUmFuZ2UgT3B0aW9uOjpvcHRpb25SYW5nZVZhbCgpCi17Ci0gICAgcmV0dXJu
IG1fZW50cnkudmFsT3B0aW9uUmFuZ2U7Ci19CisgICAgfTsKK307CiAKLWlubGluZSBjb25zdCBj
aGFyKiBPcHRpb246Om9wdGlvblN0cmluZ1ZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFs
T3B0aW9uU3RyaW5nOwotfQorLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBNU1ZD
J3MgaW5hYmlsaXR5IHRvIGhhbmRsZSBsYXJnZSBzb3VyY2VzLgorLy8gT25jZSB0aGUgTVNWQyBi
dWcgaGFzIGJlZW4gZml4ZWQsIHdlIGNhbiBtYWtlIHRoZSBmb2xsb3dpbmcgdW5jb25kaXRpb25h
bCBhbmQKKy8vIHJlbW92ZSBpdHMgY291bnRlcnBhcnQgTVNWQyB2ZXJzaW9uIGluIE9wdGlvbnMu
Y3BwLgorLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20v
Y29udGVudC9wcm9ibGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxlci1pcy1vdXQt
b2YtaGVhcC1zcGFjZS1pbi5odG1sCisjaWYgIUNPTVBJTEVSKE1TVkMpCisKK3RlbXBsYXRlPE9w
dGlvblR5cGVJRCB0eXBlLCBPcHRpb25JRCBpZD4KK2NvbnN0ZXhwciBzaXplX3Qgb3B0aW9uVHlw
ZVNwZWNpZmljSW5kZXgoKQoreworICAgIHNpemVfdCBpbmRleCA9IDA7CisjZGVmaW5lIENPVU5U
X0lOREVYX0FORF9GSU5EX01BVENIKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxh
YmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpuYW1lXykg
XAorICAgICAgICByZXR1cm4gaW5kZXg7IFwKKyAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6
OnR5cGVfKSBcCisgICAgICAgIGluZGV4Kys7CisKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKENP
VU5UX0lOREVYX0FORF9GSU5EX01BVENIKTsKKyN1bmRlZiBDT1VOVF9JTkRFWF9BTkRfRklORF9N
QVRDSAorICAgIHJldHVybiBJbnZhbGlkT3B0aW9uSW5kZXg7Cit9CisKKyNkZWZpbmUgREVGSU5F
X09QVElPTl9BQ0NFU1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxp
dHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvblR5cGVzOjp0eXBl
XyYgT3B0aW9uczo6bmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZp
Zy50eXBlIyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBl
SUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uVHlwZXM6OnR5cGVfJiBPcHRpb25zOjpuYW1lXyMjRGVmYXVsdCgpIFwKKyAg
ICB7IFwKKyAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLnR5cGUjI3R5cGVfIyNEZWZhdWx0T3B0
aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25J
RDo6bmFtZV8+KCldOyBcCisgICAgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVGSU5FX09Q
VElPTl9BQ0NFU1NPUlMpCisjdW5kZWYgREVGSU5FX09QVElPTl9BQ0NFU1NPUlMKIAotaW5saW5l
IEdDTG9nZ2luZzo6TGV2ZWwmIE9wdGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJu
IG1fZW50cnkudmFsR0NMb2dMZXZlbDsKLX0KKyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQykKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogLy8gSG93IGRvIEpTQyBWTSBv
cHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1Jf
RUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBv
cHRpb25zIGluIHVzZSwKIC8vIGFsb25nIHdpdGggdGhlaXIgdHlwZXMgYW5kIGRlZmF1bHQgdmFs
dWVzLiBUaGUgb3B0aW9ucyB2YWx1ZXMgYXJlIGFjdHVhbGx5Ci0vLyByZWFsaXplZCBhcyBhbiBh
cnJheSBvZiBPcHRpb25FbnRyeSBlbGVtZW50cyBpbiBKU0M6OkNvbmZpZy4KKy8vIHJlYWxpemVk
IGFzIGFycmF5cyBvZiBlYWNoIG9mIHRoZSBPcHRpb25UeXBlcyBpbiBKU0M6OkNvbmZpZy4KIC8v
Ci0vLyAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpIHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXkg
b2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAorLy8gICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKSB3aWxs
IGluaXRpYWxpemUgdGhlIGFycmF5cyBvZiBvcHRpb25zIHZhbHVlcyB3aXRoCiAvLyB0aGUgZGVm
YXVsdHMgc3BlY2lmaWVkIGluIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBiZWxvdy4gQWZ0ZXIgdGhh
dCwgdGhlIHZhbHVlcyBjYW4KIC8vIGJlIHByb2dyYW1tYXRpY2FsbHkgcmVhZCBhbmQgd3JpdHRl
biB0byB1c2luZyBhbiBhY2Nlc3NvciBtZXRob2Qgd2l0aCB0aGUKIC8vIHNhbWUgbmFtZSBhcyB0
aGUgb3B0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIG9wdGlvbiAidXNlSklUIiBjYW4gYmUgcmVhZCBh
bmQKQEAgLTU0LDYgKzU3LDY4IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gY2hlY2tzIGFyZSBkb25l
IGFmdGVyIHRoZSBvcHRpb24gdmFsdWVzIGFyZSBzZXQuIElmIHlvdSBhbHRlciB0aGUgb3B0aW9u
CiAvLyB2YWx1ZXMgYWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgKGZvciB5b3VyIG93biB0ZXN0aW5n
KSwgdGhlbiB5b3UncmUgbGlhYmxlIHRvCiAvLyBlbnN1cmUgdGhhdCB0aGUgbmV3IHZhbHVlcyBz
ZXQgYXJlIHNhbmUgYW5kIHJlYXNvbmFibGUgZm9yIHlvdXIgb3duIHJ1bi4KKy8vCisvLyBBbnkg
bW9kaWZpY2F0aW9ucyB0byBvcHRpb25zIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIGZpcnN0IFZN
IGlzIGluc3RhbnRpYXRlLgorLy8gT24gaW5zdGFudGlhdGlvbiBvZiB0aGUgZmlyc3QgVk0gaW5z
dGFuY2UsIHRoZSBPcHRpb25zIHdpbGwgYmUgd3JpdGUgcHJvdGVjdGVkCisvLyBhbmQgY2Fubm90
IGJlIG1vZGlmaWVkIHRoZXJlYWZ0ZXIuCisKK2NsYXNzIE9wdGlvblJhbmdlIHsKK3ByaXZhdGU6
CisgICAgZW51bSBSYW5nZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWws
IEludmVydGVkIH07CitwdWJsaWM6CisgICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPSAoY29uc3Qg
aW50JiByaHMpCisgICAgeyAvLyBPbmx5IG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24KKyAgICAg
ICAgaWYgKCFyaHMpIHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAg
ICAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7CisgICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsK
KyAgICAgICAgICAgIG1faGlnaExpbWl0ID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsKKyAgICBib29sIGlz
SW5SYW5nZSh1bnNpZ25lZCk7CisgICAgY29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7
IHJldHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFu
Z2VTdHI7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOwor
CisgICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOworICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7
CisgICAgdW5zaWduZWQgbV9sb3dMaW1pdDsKKyAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsKK307
CisKKyNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKHYpIFwKKyAgICB2KEJvb2wsIGJv
b2wpIFwKKyAgICB2KFVuc2lnbmVkLCB1bnNpZ25lZCkgXAorICAgIHYoRG91YmxlLCBkb3VibGUp
IFwKKyAgICB2KEludDMyLCBpbnQzMl90KSBcCisgICAgdihTaXplLCBzaXplX3QpIFwKKyAgICB2
KE9wdGlvblJhbmdlLCBPcHRpb25SYW5nZSkgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBjb25zdCBj
aGFyKikgXAorICAgIHYoR0NMb2dMZXZlbCwgR0NMb2dnaW5nOjpMZXZlbCkgXAorCituYW1lc3Bh
Y2UgT3B0aW9uVHlwZXMgeworCisjZGVmaW5lIERFQ0xBUkVfVFlQRVMoT3B0aW9uVHlwZV8sIHR5
cGVfKSBcCisgICAgdXNpbmcgT3B0aW9uVHlwZV8gPSB0eXBlXzsKKyAgICBGT1JfRUFDSF9KU0Nf
T1BUSU9OX1RZUEUoREVDTEFSRV9UWVBFUykKKyN1bmRlZiBERUNMQVJFX1RZUEVTCisKK30gLy8g
bmFtZXNwYWNlIE9wdGlvblR5cGVzCisKK2VudW0gY2xhc3MgT3B0aW9uVHlwZUlEIDogdWludDhf
dCB7CisKKyNkZWZpbmUgREVDTEFSRV9UWVBFSUQoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAg
T3B0aW9uVHlwZV8sCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfVFlQRUlE
KQorI3VuZGVmIERFQ0xBUkVfVFlQRUlECisKK307CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX09Q
VElPTih2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2
KEJvb2wsIHVzZUtlcm5UQ1NNLCB0cnVlLCBOb3JtYWwsICJOb3RlOiB0aGlzIG5lZWRzIHRvIGdv
IGJlZm9yZSBvdGhlciBvcHRpb25zIHNpbmNlIHRoZXkgZGVwZW5kIG9uIHRoaXMgdmFsdWUuIikg
XApAQCAtNTEwLDYgKzU3NSwxNyBAQCBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICB2KG1h
eGltdW1GVExDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0
ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAgICAgdihtYXhpbXVtSW5saW5pbmdDYWxsZXJTaXpl
LCBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKIAorI2Rl
ZmluZSBERUNMQVJFX09QVElPTl9JRCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWls
YWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIG5hbWVfLAorZW51bSBjbGFzcyBPcHRpb25J
RCA6IHVpbnQxNl90IHsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lE
KQorfTsKKyN1bmRlZiBERUNMQVJFX09QVElPTl9JRAorCitzdGF0aWMgY29uc3RleHByIHNpemVf
dCBJbnZhbGlkT3B0aW9uSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
OworCit0ZW1wbGF0ZTxPcHRpb25UeXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIg
c2l6ZV90IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCk7CiAKIGNvbnN0ZXhwciBzaXplX3QgY291
bnROdW1iZXJPZkpTQ09wdGlvbnMoKQogewpAQCAtNTIyLDUgKzU5OCwyNCBAQCBjb25zdGV4cHIg
c2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zCiAKIGNvbnN0ZXhwciBzaXplX3QgTnVtYmVy
T2ZPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnMoKTsKIAotfSAvLyBuYW1lc3BhY2Ug
SlNDCitjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlv
blR5cGVJRCB0eXBlKQoreworICAgIHNpemVfdCBjb3VudCA9IDA7CisjZGVmaW5lIENPVU5UX09Q
VElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAorICAgIGlmICh0eXBlID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAg
Y291bnQrKzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKENPVU5UX09QVElPTik7CisjdW5kZWYg
Q09VTlRfT1BUSU9OCisgICAgcmV0dXJuIGNvdW50OworfQogCitjb25zdGV4cHIgc2l6ZV90IE51
bWJlck9mQm9vbE9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25U
eXBlSUQ6OkJvb2wpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZlVuc2lnbmVkT3B0aW9ucyA9
IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6VW5zaWduZWQpOwor
Y29uc3RleHByIHNpemVfdCBOdW1iZXJPZkRvdWJsZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlND
T3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkRvdWJsZSk7Citjb25zdGV4cHIgc2l6ZV90IE51
bWJlck9mSW50MzJPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9u
VHlwZUlEOjpJbnQzMik7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mU2l6ZU9wdGlvbnMgPSBj
b3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OlNpemUpOworY29uc3Rl
eHByIHNpemVfdCBOdW1iZXJPZk9wdGlvblJhbmdlT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NP
cHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2UpOworY29uc3RleHByIHNpemVf
dCBOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09m
VHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmluZyk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJl
ck9mR0NMb2dMZXZlbE9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRp
b25UeXBlSUQ6OkdDTG9nTGV2ZWwpOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381134</attachid>
            <date>2019-10-16 17:05:39 -0700</date>
            <delta_ts>2019-10-16 17:15:43 -0700</delta_ts>
            <desc>test patch for MSVC.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>40437</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTIwLDcgKzkyMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAogICAgIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKICAgICBydW50aW1lL09wZXJhdGlvbnMuaAotICAgIHJ1bnRpbWUv
T3B0aW9uRW50cnkuaAogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9uc1NldFZhbHVlKGNv
bnN0CiB7CiAjZGVmaW5lIFNFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgj
bmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9TZXQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCF2YWx1ZUZyb21H
VmFsdWUodmFsdWUsIHZhbHVlVG9TZXQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgICAgIHJldHVybiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgT3B0aW9uczo6bmFtZV8oKSA9IHZhbHVlVG9TZXQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4ganNjT3B0aW9uc0dldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5lIEdFVF9PUFRJT05f
VkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZh
bHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0
aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAg
ICAgIFwKICAgICAgICAgdmFsdWVUb0dWYWx1ZSh2YWx1ZVRvR2V0LCB2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC02MTYs
OCArNjE2LDggQEAgdm9pZCBqc2Nfb3B0aW9uc19mb3JlYWNoKEpTQ09wdGlvbnNGdW5jIAogCiAj
ZGVmaW5lIFZJU0lUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJp
bGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2
YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6OkF2YWls
YWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8g
ZGVmYXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gZGVm
YXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBhdXRv
IG9wdGlvblR5cGUgPSBqc2NPcHRpb25zVHlwZShkZWZhdWx0VmFsdWUpOyAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBpZiAoZnVuY3Rpb24gKCNuYW1lXywgb3B0aW9uVHlwZSwgZGVzY3JpcHRp
b25fLCB1c2VyRGF0YSkpICAgICAgXAogICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNjY2LDcgKzY2Niw3
IEBAIEdPcHRpb25Hcm91cCoganNjX29wdGlvbnNfZ2V0X29wdGlvbl9ncm8KICAgICBHQXJyYXkq
IGVudHJpZXMgPSBnX2FycmF5X25ldyhUUlVFLCBUUlVFLCBzaXplb2YoR09wdGlvbkVudHJ5KSk7
CiAjZGVmaW5lIFJFR0lTVEVSX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxp
dHk6OmF2YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAg
ICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICB8fCBPcHRpb25zOjpp
c0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxh
YmlsaXR5XykpIHsgXAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUoZ19zdHJkdXBfcHJp
bnRmKCJqc2MtJXMiLCAjbmFtZV8pKTsgICAgICAgXAogICAgICAgICBlbnRyaWVzID0gZ19hcnJh
eV9zZXRfc2l6ZShlbnRyaWVzLCBlbnRyaWVzLT5sZW4gKyAxKTsgXAogICAgICAgICBHT3B0aW9u
RW50cnkqIGVudHJ5ID0gJmdfYXJyYXlfaW5kZXgoZW50cmllcywgR09wdGlvbkVudHJ5LCBlbnRy
aWVzLT5sZW4gLSAxKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBA
QAogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJB
QzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkUzODQy
MzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0
aW9uRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlE
RDQ0NSAvKiBPcHRpb25zTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRC
aXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi87
IH07CkBAIC01MDczLDcgKzUwNzIsNiBAQAogCQlGRTM1QzJGQTIxQjFFNkM3MDAwRjRDQTggLyog
T3B0aW9ucy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcHRpb25zLnJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGQjIxQjFFNkM3MDAwRjRDQTgg
LyogT3Bjb2RlR3JvdXAucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3Bj
b2RlR3JvdXAucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZDMjFCMUU2
QzcwMDBGNENBOCAvKiBNZXRhZGF0YS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBh
dGggPSBNZXRhZGF0YS5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzODQyMzAy
MzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcHRpb25zTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvbGxhclZNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2xsYXJWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM4Miw3ICs3MzgwLDYgQEAKIAkJCQlFMzlFRUFGMjIy
ODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaCAqLywKIAkJCQlGNjkyQTg3NzAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5jcHAg
Ki8sCiAJCQkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLywKLQkJ
CQlGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLywKIAkJCQkwRkUy
MjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2
QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywKIAkJCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCAqLywKQEAgLTk5MDUsNyArOTkwMiw2IEBACiAJCQkJMEYyQkRD
MkMxNTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2Vs
bFB0ci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJPcHRpb25FbnRyeS5oIgogI2luY2x1ZGUgIk9wdGlv
bnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNiwxMiArMzUs
MTIgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yOwogCiAjaWYgQ1BVKEFS
TTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2
ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICogUGFnZVNp
emU7CiAjZWxzZQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDQgKiBLQjsKK2NvbnN0ZXhw
ciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNlbmRpZgogCi1j
b25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAzMiAqIEtCOwotCiAjaWYgRU5B
QkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogdXNpbmcgSklUV3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rp
b24gPSB2b2lkICgqKShvZmZfdCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAjZW5kaWYKQEAgLTgy
LDggKzgxLDI5IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICAgICAgYm9vbCB1c2VGYXN0UGVy
bWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAotICAgICAgICAgICAgT3B0aW9uRW50cnkgb3B0aW9u
c1tOdW1iZXJPZk9wdGlvbnNdOwotICAgICAgICAgICAgT3B0aW9uRW50cnkgZGVmYXVsdE9wdGlv
bnNbTnVtYmVyT2ZPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xPcHRpb25zW051
bWJlck9mQm9vbE9wdGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbERlZmF1bHRPcHRp
b25zW051bWJlck9mQm9vbE9wdGlvbnNdOworCisgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVs
IHR5cGVHQ0xvZ0xldmVsT3B0aW9uc1tOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKyAgICAg
ICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2ZWxEZWZhdWx0T3B0aW9uc1tOdW1i
ZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKworICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJP
cHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsKKyAgICAgICAgICAgIGludDMyX3QgdHlwZUlu
dDMyRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZJbnQzMk9wdGlvbnNdOworCisgICAgICAgICAgICB1
bnNpZ25lZCB0eXBlVW5zaWduZWRPcHRpb25zW051bWJlck9mVW5zaWduZWRPcHRpb25zXTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHR5cGVVbnNpZ25lZERlZmF1bHRPcHRpb25zW051bWJlck9mVW5z
aWduZWRPcHRpb25zXTsKKworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVPcHRpb25zW051
bWJlck9mRG91YmxlT3B0aW9uc107CisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJsZURlZmF1
bHRPcHRpb25zW051bWJlck9mRG91YmxlT3B0aW9uc107CisKKyAgICAgICAgICAgIHNpemVfdCB0
eXBlU2l6ZU9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisgICAgICAgICAgICBzaXplX3Qg
dHlwZVNpemVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKworICAgICAgICAg
ICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ09wdGlvbnNbTnVtYmVyT2ZPcHRpb25TdHJp
bmdPcHRpb25zXTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25TdHJpbmdEZWZh
dWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOworCisgICAgICAgICAgICBP
cHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VPcHRpb25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRp
b25zXTsKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5cGVPcHRpb25SYW5nZURlZmF1bHRPcHRp
b25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zXTsKICAgICAgICAgfTsKICAgICAgICAgY2hh
ciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRp
b25SYW5nZSB7Ci1wcml2YXRlOgotICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQs
IEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdl
JiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhzKQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGlu
aXRpYWxpemF0aW9uCi0gICAgICAgIGlmICghcmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0g
VW5pbml0aWFsaXplZDsKLSAgICAgICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAg
ICAgbV9sb3dMaW1pdCA9IDA7Ci0gICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBj
aGFyKik7Ci0gICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJh
bmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5n
ZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBzX251bGxSYW5nZVN0cjsKLQotICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBj
aGFyKiBtX3JhbmdlU3RyaW5nOwotICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWdu
ZWQgbV9oaWdoTGltaXQ7Ci19OwotCi0vLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVl
OgotdW5pb24gT3B0aW9uRW50cnkgewotICAgIHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5n
IFVuc2lnbmVkID0gdW5zaWduZWQ7Ci0gICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVz
aW5nIEludDMyID0gaW50MzJfdDsKLSAgICB1c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5n
IE9wdGlvblJhbmdlID0gSlNDOjpPcHRpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcg
PSBjb25zdCBjaGFyKjsKLSAgICB1c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsK
LQotICAgIGJvb2wgdmFsQm9vbDsKLSAgICB1bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3Vi
bGUgdmFsRG91YmxlOwotICAgIGludDMyX3QgdmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7
Ci0gICAgT3B0aW9uUmFuZ2UgdmFsT3B0aW9uUmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0
aW9uU3RyaW5nOwotICAgIEdDTG9nZ2luZzo6TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK2Jvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9u
SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2
YWlsYWJpbGl0eSA9PSBBdmFpbGFiaWxpdHk6OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBn
X2pzY0NvbmZpZy5yZXN0cmljdGVkT3B0aW9uc0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBA
QCBib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5V
U0VEX1BBUkFNKGlkKTsKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNp
bmdsZUFsbG9jYXRpb25TaXplSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVB
bGxvY2F0aW9uU2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJX
SU4pCi0gICAgaWYgKGlkID09IHVzZVNpZ2lsbENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQg
PT0gT3B0aW9uSUQ6OnVzZVNpZ2lsbENyYXNoQW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlk
ID09IGxvZ0pJVENvZGVGb3JQZXJmSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRD
b2RlRm9yUGVyZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0g
dHJhY2VMTEludEV4ZWN1dGlvbklEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTElu
dEV4ZWN1dGlvbikKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQg
PT0gdHJhY2VMTEludFNsb3dQYXRoSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxM
SW50U2xvd1BhdGgpCiAgICAgICAgIHJldHVybiAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldp
dGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlv
bldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxh
YmxlID0gKGF2YWlsYWJpbGl0eSA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAg
ICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIs
MTAgKzI4Miw0NSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgb3V0LnByaW50KG1fcmFuZ2VTdHJpbmcpOwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHdv
cmthcm91bmQgZm9yIE1TVkMncyBpbmFiaWxpdHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCisv
LyBPbmNlIHRoZSBNU1ZDIGJ1ZyBoYXMgYmVlbiBmaXhlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIHNu
aXBwZXQgb2YgY29kZSBhbmQKKy8vIG1ha2UgaXRzIGNvdW50ZXJwYXJ0IGluIE9wdGlvbnMuaCB1
bmNvbmRpdGlvbmFsLgorLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0
dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxl
ci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5odG1sCisjaWYgQ09NUElMRVIoTVNWQykKKwordGVt
cGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9wdGlvbklEIGlkPgorY29uc3RleHByIHNpemVfdCBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleCgpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyNkZWZp
bmUgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVf
LCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6
Om5hbWVfKSBcCisgICAgICAgIHJldHVybiBpbmRleDsgXAorICAgIGlmICh0eXBlID09IE9wdGlv
blR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAgaW5kZXgrKzsKKworICAgIEZPUl9FQUNIX0pTQ19P
UFRJT04oQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gpOworI3VuZGVmIENPVU5UX0lOREVYX0FO
RF9GSU5EX01BVENICisgICAgcmV0dXJuIEludmFsaWRPcHRpb25JbmRleDsKK30KKworI2RlZmlu
ZSBERUZJTkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlv
blR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8j
I0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0
eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
Ojp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0Nf
T1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNTT1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUND
RVNTT1JTCisKKyNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQorCiAvLyBSZWFsaXplIHRoZSBuYW1l
cyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoKLWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRp
b25zOjpzX29wdGlvbnNJbmZvW09wdGlvbnM6Om51bWJlck9mT3B0aW9uc10gPSB7Citjb25zdCBP
cHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpb25zSW5mb1tOdW1iZXJPZk9wdGlvbnNd
ID0gewogI2RlZmluZSBGSUxMX09QVElPTl9JTkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0
aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyB9
LAorICAgIHsgI25hbWVfLCBkZXNjcmlwdGlvbl8sIE9wdGlvblR5cGVJRDo6dHlwZV8sIEF2YWls
YWJpbGl0eTo6YXZhaWxhYmlsaXR5Xywgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlw
ZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElP
TihGSUxMX09QVElPTl9JTkZPKQogI3VuZGVmIEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0yOTks
MjYgKzMzNCwyNSBAQCBzdGF0aWMgdm9pZCBzY2FsZUpJVFBvbGljeSgpCiAgICAgICAgIHNjYWxl
RmFjdG9yID0gMC4wOwogCiAgICAgc3RydWN0IE9wdGlvblRvU2NhbGUgewotICAgICAgICBPcHRp
b25zOjpJRCBpZDsKKyAgICAgICAgc2l6ZV90IGluZGV4OwogICAgICAgICBpbnQzMl90IG1pblZh
bDsKICAgICB9OwogCiAgICAgc3RhdGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2Nh
bGVbXSA9IHsKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElE
LCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0g
ICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0s
Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJ
RCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAx
IH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIg
fSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
SUQsIDIgfQorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6
SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD4oKSwgMCB9LAorICAg
ICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlv
bklEOjp0aHJlc2hvbGRGb3JKSVRTb29uPigpLCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJXYXJtVXA+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJ
bmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXA+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29u
PigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
OjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj4oKSwgMiB9LAor
ICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9w
dGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPigpLCAyIH0sCiAgICAg
fTsKIAotICAgIGNvbnN0IGludCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlv
bnNUb1NjYWxlKSAvIHNpemVvZihPcHRpb25Ub1NjYWxlKTsKKyAgICBjb25zdGV4cHIgaW50IG51
bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9w
dGlvblRvU2NhbGUpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9T
Y2FsZTsgaSsrKSB7Ci0gICAgICAgIE9wdGlvbiBvcHRpb24ob3B0aW9uc1RvU2NhbGVbaV0uaWQp
OwotICAgICAgICBBU1NFUlQob3B0aW9uLnR5cGUoKSA9PSBPcHRpb25zOjpUeXBlOjpJbnQzMik7
Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpICo9IHNjYWxlRmFjdG9yOwotICAgICAgICBvcHRp
b24uaW50MzJWYWwoKSA9IHN0ZDo6bWF4KG9wdGlvbi5pbnQzMlZhbCgpLCBvcHRpb25zVG9TY2Fs
ZVtpXS5taW5WYWwpOworICAgICAgICBpbnQzMl90JiBvcHRpb25WYWx1ZSA9IGdfanNjQ29uZmln
LnR5cGVJbnQzMk9wdGlvbnNbb3B0aW9uc1RvU2NhbGVbaV0uaW5kZXhdOworICAgICAgICBvcHRp
b25WYWx1ZSAqPSBzY2FsZUZhY3RvcjsKKyAgICAgICAgb3B0aW9uVmFsdWUgPSBzdGQ6Om1heChv
cHRpb25WYWx1ZSwgb3B0aW9uc1RvU2NhbGVbaV0ubWluVmFsKTsKICAgICB9CiB9CiAKQEAgLTQ0
MSw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAg
ICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKQogICAgICAgICBPcHRpb25zOjpjb2xs
ZWN0Q29udGludW91c2x5KCkgPSBmYWxzZTsKIAotICAgIGlmIChPcHRpb24oT3B0aW9uczo6aml0
UG9saWN5U2NhbGVJRCkuaXNPdmVycmlkZGVuKCkpCisgICAgaWYgKE9wdGlvbihPcHRpb25JRDo6
aml0UG9saWN5U2NhbGUpLmlzT3ZlcnJpZGRlbigpKQogICAgICAgICBzY2FsZUpJVFBvbGljeSgp
OwogICAgIAogICAgIGlmIChPcHRpb25zOjpmb3JjZUVhZ2VyQ29tcGlsYXRpb24oKSkgewpAQCAt
NTIyLDkgKzU1NiwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAg
Q29uZmlnOjplbmFibGVSZXN0cmljdGVkT3B0aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAv
LyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVl
czoKLSNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFp
bGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICAgICAgICAgIG5hbWVfKCkgPSBkZWZhdWx0
VmFsdWVfOyBcCi0gICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gZGVmYXVsdFZhbHVlXzsK
KyNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIHsgXAorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBk
ZWZhdWx0VmFsdWVfOyBcCisgICAgICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCisgICAg
ICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IHZhbHVlOyBcCisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRf
T1BUSU9OCiAKQEAgLTU0OCw3ICs1ODQsNyBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQog
ICAgICAgICAgICAgICAgIENSQVNIKCk7CiAjZWxzZSAvLyBQTEFURk9STShDT0NPQSkKICNkZWZp
bmUgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgb3ZlcnJp
ZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIG5hbWVfIyNJRCwgIkpTQ18iICNuYW1lXywg
QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKKyAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9u
V2l0aEhldXJpc3RpYyhuYW1lXygpLCBPcHRpb25JRDo6bmFtZV8sICJKU0NfIiAjbmFtZV8sIEF2
YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BU
SU9OKE9WRVJSSURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1MpCiAjdW5kZWYgT1ZFUlJJREVfT1BU
SU9OX1dJVEhfSEVVUklTVElDUwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtNzI3LDE2
ICs3NjMsMTUgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogCiAg
ICAgY29uc3QgY2hhciogdmFsdWVTdHIgPSBlcXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3IgZWFj
aCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZ5IGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0
IHRoZSBhcmcKKyAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQg
YXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1ZSBt
YWtlcyBzZW5zZS4gT3RoZXJ3aXNlLCBtb3ZlIG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9wdGlv
bi4KICNkZWZpbmUgU0VUX09QVElPTl9JRl9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25hbWVf
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVxdWFsU3RyIC0gYXJnKSAgICAgIFwKICAgICAgICAg
JiYgIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFsU3RyIC0gYXJnKSkgeyAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGlmIChBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmls
aXR5OjpOb3JtYWwgICAgIFwKLSAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShuYW1lXyMjSUQs
IEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKKyAgICAgICAgaWYgKEF2YWlsYWJpbGl0
eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCisgICAgICAgICAg
ICAmJiAhaXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJp
bGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8gdmFsdWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFsdWUgPSAoZGVm
YXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBuYW1lXygpID0gdmFs
dWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODE2LDEwICs4
NTEsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZAogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAKLSAgICBmb3IgKGludCBpZCA9IDA7IGlk
IDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgZm9yIChzaXplX3QgaWQgPSAwOyBpZCA8
IE51bWJlck9mT3B0aW9uczsgaWQrKykgewogICAgICAgICBpZiAoc2VwYXJhdG9yICYmIGlkKQog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgZHVtcE9wdGlv
bihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8SUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRp
b25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CisgICAgICAgIGR1bXBPcHRpb24oYnVpbGRl
ciwgbGV2ZWwsIHN0YXRpY19jYXN0PE9wdGlvbklEPihpZCksIG9wdGlvbkhlYWRlciwgb3B0aW9u
Rm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOwogICAgIH0KIH0KIApAQCAtODM1LDEwICs4NzAs
MTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYQogICAgIGZwcmlu
dGYoc3RyZWFtLCAiJXMiLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2
ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkLAordm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uSUQgaWQsCiAgICAgY29u
c3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbiBk
dW1wRGVmYXVsdHNPcHRpb24pCiB7Ci0gICAgaWYgKGlkID49IG51bWJlck9mT3B0aW9ucykKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpZCkgPj0gTnVtYmVyT2ZPcHRpb25zKQogICAgICAg
ICByZXR1cm47IC8vIElsbGVnYWwgb3B0aW9uLgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7CkBA
IC04ODAsMjkgKzkxNSw3MSBAQCB2b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVu
dCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAKK09wdGlvbjo6T3B0aW9uKE9wdGlvbklEIGlkKQor
ICAgIDogbV9pZChpZCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNf
b3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0
eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZTsKKworICAgIHN3aXRjaCAo
dHlwZSkgeworCisjZGVmaW5lIEhBTkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAg
IGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNw
ZWNpZmljSW5kZXggPCBOdW1iZXJPZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAg
IG1fdmFsIyNPcHRpb25UeXBlXyA9IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNPcHRp
b25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNI
X0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0K
K30KKworY29uc3QgT3B0aW9uIE9wdGlvbjo6ZGVmYXVsdE9wdGlvbigpIGNvbnN0Cit7CisgICAg
T3B0aW9uIHJlc3VsdDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0
aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBl
ID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZTsKKworICAgIHJlc3VsdC5tX2lk
ID0gbV9pZDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRp
b25UeXBlXywgdHlwZV8pIFwKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwK
KyAgICAgICAgQVNTRVJUKHR5cGVTcGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVf
IyNPcHRpb25zKTsgXAorICAgICAgICByZXN1bHQubV92YWwjI09wdGlvblR5cGVfID0gZ19qc2ND
b25maWcudHlwZSMjT3B0aW9uVHlwZV8jI0RlZmF1bHRPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4
XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5E
TEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewog
ICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAg
ICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92
YWxCb29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50
cnkudmFsVW5zaWduZWQpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxVbnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9lbnRyeS52YWxTaXplKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxTaXplKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobV9lbnRyeS52YWxEb3VibGUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpEb3VibGU6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92
YWxEb3VibGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMy
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbEludDMyKTsKKyAgICBj
YXNlIE9wdGlvblR5cGVJRDo6SW50MzI6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
dmFsSW50MzIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlv
blJhbmdlOgotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJh
bmdlU3RyaW5nKCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZToKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6IHsKLSAgICAg
ICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9lbnRyeS52YWxPcHRpb25TdHJpbmc7CisgICAgY2Fz
ZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmluZzogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRp
b24gPSBtX3ZhbE9wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAg
ICBvcHRpb24gPSAiIjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKQEAgLTkxMCw4ICs5
ODcsOCBAQCB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIE9w
dGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dn
aW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkudmFsR0NMb2dMZXZlbCkpOworICAgIGNhc2UgT3B0
aW9uVHlwZUlEOjpHQ0xvZ0xldmVsOiB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2lu
Zzo6bGV2ZWxBc1N0cmluZyhtX3ZhbEdDTG9nTGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIH0KQEAgLTkyMCwyMyArOTk3LDIzIEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIKIGJvb2wgT3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6OkJvb2w6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEJvb2wgPT0gb3RoZXIubV9lbnRy
eS52YWxCb29sOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkID09IG90aGVyLm1fZW50cnkudmFsVW5zaWduZWQ7Ci0g
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxT
aXplID09IG90aGVyLm1fZW50cnkudmFsU2l6ZTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRv
dWJsZToKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5LnZhbERvdWJsZSA9PSBvdGhlci5tX2VudHJ5
LnZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4obV9lbnRyeS52YWxEb3VibGUpICYmIHN0ZDo6aXNu
YW4ob3RoZXIubV9lbnRyeS52YWxEb3VibGUpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Oklu
dDMyOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMiA9PSBvdGhlci5tX2VudHJ5LnZh
bEludDMyOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9lbnRy
eS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6
T3B0aW9uU3RyaW5nOgotICAgICAgICByZXR1cm4gKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nID09
IG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKQotICAgICAgICAgICAgfHwgKG1fZW50cnku
dmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmICFzdHJj
bXAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcsIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5n
KSk7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOgotICAgICAgICByZXR1cm4g
bV9lbnRyeS52YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fZW50cnkudmFsR0NMb2dMZXZlbDsKKyAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsQm9vbCA9PSBv
dGhlci5tX3ZhbEJvb2w7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlVuc2lnbmVkOgorICAgICAg
ICByZXR1cm4gbV92YWxVbnNpZ25lZCA9PSBvdGhlci5tX3ZhbFVuc2lnbmVkOworICAgIGNhc2Ug
T3B0aW9uVHlwZUlEOjpTaXplOgorICAgICAgICByZXR1cm4gbV92YWxTaXplID09IG90aGVyLm1f
dmFsU2l6ZTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6RG91YmxlOgorICAgICAgICByZXR1cm4g
KG1fdmFsRG91YmxlID09IG90aGVyLm1fdmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX3ZhbERv
dWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX3ZhbERvdWJsZSkpOworICAgIGNhc2UgT3B0aW9u
VHlwZUlEOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIG1fdmFsSW50MzIgPT0gb3RoZXIubV92YWxJ
bnQzMjsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2U6CisgICAgICAgIHJldHVy
biBtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV92YWxPcHRpb25SYW5n
ZS5yYW5nZVN0cmluZygpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6Cisg
ICAgICAgIHJldHVybiAobV92YWxPcHRpb25TdHJpbmcgPT0gb3RoZXIubV92YWxPcHRpb25TdHJp
bmcpCisgICAgICAgICAgICB8fCAobV92YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV92YWxPcHRp
b25TdHJpbmcgJiYgIXN0cmNtcChtX3ZhbE9wdGlvblN0cmluZywgb3RoZXIubV92YWxPcHRpb25T
dHJpbmcpKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbDoKKyAgICAgICAgcmV0
dXJuIG1fdmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX3ZhbEdDTG9nTGV2ZWw7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpT
RXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTMsMzkgKzUyLDE5IEBAIGNvbnN0ZXhwciBib29s
IGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwgeworICAgIGVudW0gY2xhc3MgRHVtcExldmVsIDogdWlu
dDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBB
bGwsCiAgICAgICAgIFZlcmJvc2UKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxp
dHkgeworICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IDogdWludDhfdCB7CiAgICAgICAgIE5v
cm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJsZQogICAg
IH07CiAKLSNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICBuYW1lXyMjSUQsCi0KLSAg
ICBlbnVtIElEIHsKLSAgICAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9J
RCkKLSAgICAgICAgbnVtYmVyT2ZPcHRpb25zCi0gICAgfTsKLSN1bmRlZiBERUNMQVJFX09QVElP
Tl9JRAotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgQm9vbCwKLSAgICAgICAgVW5z
aWduZWQsCi0gICAgICAgIERvdWJsZSwKLSAgICAgICAgSW50MzIsCi0gICAgICAgIFNpemUsCi0g
ICAgICAgIE9wdGlvblJhbmdlLAotICAgICAgICBPcHRpb25TdHJpbmcsCi0gICAgICAgIEdDTG9n
TGV2ZWwsCi0gICAgfTsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRp
YWxpemUoKTsKIAogICAgIC8vIFBhcnNlcyBhIHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2gg
b3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0tPG9wdGlvbk5hbWU+PTx2YWx1ZT4iCkBAIC0xMDIs
MTMgKzgxLDEyIEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBl
bnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKTsKIAogI2RlZmluZSBERUNMQVJFX09QVElPTl9BQ0NF
U1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25FbnRyeTo6dHlwZV8mIG5h
bWVfKCkgeyByZXR1cm4gZ19qc2NDb25maWcub3B0aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87
IH0gIFwKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25FbnRyeTo6dHlwZV8mIG5hbWVf
IyNEZWZhdWx0KCkgeyByZXR1cm4gZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbmFtZV8jI0lE
XS52YWwjI3R5cGVfOyB9Ci0KKyAgICBzdGF0aWMgT3B0aW9uVHlwZXM6OnR5cGVfJiBuYW1lXygp
OyBcCisgICAgc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKTsKICAg
ICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRlZiBE
RUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKIAotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElE
LCBBdmFpbGFiaWxpdHkpOworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklELCBB
dmFpbGFiaWxpdHkpOwogCiBwcml2YXRlOgogCkBAIC0xMTYsOCArOTQsOSBAQCBwcml2YXRlOgog
ICAgIHN0cnVjdCBFbnRyeUluZm8gewogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgICAg
ICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsKLSAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBP
cHRpb25UeXBlSUQgdHlwZTsKICAgICAgICAgQXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eTsKKyAg
ICAgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXg7CiAgICAgfTsKIAogICAgIE9wdGlvbnMo
KTsKQEAgLTEyOSwxMjIgKzEwOCw4OSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGR1bXBP
cHRpb25zSWZOZWVkZWQoKTsKICAgICBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhTdHJpbmdC
dWlsZGVyJiwgRHVtcExldmVsLCBjb25zdCBjaGFyKiB0aXRsZSwKICAgICAgICAgY29uc3QgY2hh
ciogc2VwYXJhdG9yLCBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlv
bkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKLSAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9u
KFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIElELAorICAgIHN0YXRpYyB2b2lkIGR1bXBPcHRp
b24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgT3B0aW9uSUQsCiAgICAgICAgIGNvbnN0IGNo
YXIqIG9wdGlvbkhlYWRlciwgY29uc3QgY2hhciogb3B0aW9uRm9vdGVyLCBEdW1wRGVmYXVsdHNP
cHRpb24pOwogCiAgICAgc3RhdGljIGJvb2wgc2V0T3B0aW9uV2l0aG91dEFsaWFzKGNvbnN0IGNo
YXIqIGFyZyk7CiAgICAgc3RhdGljIGJvb2wgc2V0QWxpYXNlZE9wdGlvbihjb25zdCBjaGFyKiBh
cmcpOwogICAgIHN0YXRpYyBib29sIG92ZXJyaWRlQWxpYXNlZE9wdGlvbldpdGhIZXVyaXN0aWMo
Y29uc3QgY2hhciogbmFtZSk7CiAKLSAgICBzdGF0aWMgY29uc3QgRW50cnlJbmZvIHNfb3B0aW9u
c0luZm9bbnVtYmVyT2ZPcHRpb25zXTsKKyAgICBzdGF0aWMgY29uc3QgRW50cnlJbmZvIHNfb3B0
aW9uc0luZm9bTnVtYmVyT2ZPcHRpb25zXTsKIAogICAgIGZyaWVuZCBjbGFzcyBPcHRpb247CiB9
OwogCiBjbGFzcyBPcHRpb24gewogcHVibGljOgotICAgIE9wdGlvbihPcHRpb25zOjpJRCBpZCkK
LSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50cnkoZ19qc2NDb25maWcub3B0aW9u
c1ttX2lkXSkKLSAgICB7Ci0gICAgfQotICAgIAorICAgIE9wdGlvbihPcHRpb25JRCk7CisKICAg
ICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBP
cHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAot
ICAgIE9wdGlvbnM6OklEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIGNvbnN0IGNo
YXIqIG5hbWUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0Owot
ICAgIE9wdGlvbnM6OlR5cGUgdHlwZSgpIGNvbnN0OwotICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0
eSBhdmFpbGFiaWxpdHkoKSBjb25zdDsKLSAgICBib29sIGlzT3ZlcnJpZGRlbigpIGNvbnN0Owor
ICAgIE9wdGlvbklEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5kZXgoKV0u
bmFtZTsgfQorICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gT3B0
aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmRlc2NyaXB0aW9uOyB9CisgICAgT3B0aW9u
VHlwZUlEIHR5cGUoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5k
ZXgoKV0udHlwZTsgfQorICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBj
b25zdCB7IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5kZXgoKV0uYXZhaWxhYmls
aXR5OyB9CisgICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBk
ZWZhdWx0T3B0aW9uKCk7IH0KICAgICBjb25zdCBPcHRpb24gZGVmYXVsdE9wdGlvbigpIGNvbnN0
OwotICAgIAotICAgIGJvb2wmIGJvb2xWYWwoKTsKLSAgICB1bnNpZ25lZCYgdW5zaWduZWRWYWwo
KTsKLSAgICBkb3VibGUmIGRvdWJsZVZhbCgpOwotICAgIGludDMyX3QmIGludDMyVmFsKCk7Ci0g
ICAgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2VWYWwoKTsKLSAgICBjb25zdCBjaGFyKiBvcHRpb25T
dHJpbmdWYWwoKTsKLSAgICBHQ0xvZ2dpbmc6OkxldmVsJiBnY0xvZ0xldmVsVmFsKCk7Ci0gICAg
Ci1wcml2YXRlOgotICAgIC8vIE9ubHkgdXNlZCBmb3IgY29uc3RydWN0aW5nIGRlZmF1bHQgT3B0
aW9ucy4KLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQsIE9wdGlvbkVudHJ5JiBlbnRyeSkKLSAg
ICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50cnkoZW50cnkpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBPcHRpb25zOjpJRCBtX2lkOwotICAgIE9wdGlvbkVudHJ5JiBtX2VudHJ5Owot
fTsKLQotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0ubmFtZTsKLX0KLQotaW5saW5lIGNvbnN0
IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1pbmxpbmUgT3B0aW9uczo6
VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlv
bnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0
aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlv
bnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KIAotaW5saW5lIGJvb2wgT3B0aW9uOjppc092
ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7
Ci19CisjZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAg
dHlwZV8gdmFsIyNPcHRpb25UeXBlXygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBl
XzsgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3Vu
ZGVmIERFQ0xBUkVfQUNDRVNTT1IKIAotaW5saW5lIGNvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1
bHRPcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb24obV9pZCwgZ19qc2NDb25maWcu
ZGVmYXVsdE9wdGlvbnNbbV9pZF0pOwotfQorcHJpdmF0ZToKKyAgICBPcHRpb24oKSB7IH0KIAot
aW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFs
Qm9vbDsKLX0KKyAgICBzaXplX3QgaWRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4obV9pZCk7IH0KIAotaW5saW5lIHVuc2lnbmVkJiBPcHRpb246OnVuc2lnbmVkVmFs
KCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZDsKLX0KKyAgICBPcHRpb25JRCBt
X2lkOworICAgIHVuaW9uIHsKIAotaW5saW5lIGRvdWJsZSYgT3B0aW9uOjpkb3VibGVWYWwoKQot
ewotICAgIHJldHVybiBtX2VudHJ5LnZhbERvdWJsZTsKLX0KKyNkZWZpbmUgREVDTEFSRV9NRU1C
RVIoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgICAgIHR5cGVfIG1fdmFsIyNPcHRpb25UeXBl
XzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9NRU1CRVIpCisjdW5kZWYg
REVDTEFSRV9NRU1CRVIKIAotaW5saW5lIGludDMyX3QmIE9wdGlvbjo6aW50MzJWYWwoKQotewot
ICAgIHJldHVybiBtX2VudHJ5LnZhbEludDMyOwotfQotCi1pbmxpbmUgT3B0aW9uUmFuZ2UgT3B0
aW9uOjpvcHRpb25SYW5nZVZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFu
Z2U7Ci19CisgICAgfTsKK307CiAKLWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om9wdGlvblN0
cmluZ1ZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uU3RyaW5nOwotfQorLy8g
RklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBNU1ZDJ3MgaW5hYmlsaXR5IHRvIGhhbmRs
ZSBsYXJnZSBzb3VyY2VzLgorLy8gT25jZSB0aGUgTVNWQyBidWcgaGFzIGJlZW4gZml4ZWQsIHdl
IGNhbiBtYWtlIHRoZSBmb2xsb3dpbmcgdW5jb25kaXRpb25hbCBhbmQKKy8vIHJlbW92ZSBpdHMg
Y291bnRlcnBhcnQgTVNWQyB2ZXJzaW9uIGluIE9wdGlvbnMuY3BwLgorLy8gU2VlIGh0dHBzOi8v
ZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1MzMw
MS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxlci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5odG1s
CisjaWYgIUNPTVBJTEVSKE1TVkMpCisKK3RlbXBsYXRlPE9wdGlvblR5cGVJRCB0eXBlLCBPcHRp
b25JRCBpZD4KK2NvbnN0ZXhwciBzaXplX3Qgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXgoKQorewor
ICAgIHNpemVfdCBpbmRleCA9IDA7CisjZGVmaW5lIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENI
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSBcCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpuYW1lXykgXAorICAgICAgICByZXR1cm4gaW5k
ZXg7IFwKKyAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGlu
ZGV4Kys7CisKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKENPVU5UX0lOREVYX0FORF9GSU5EX01B
VENIKTsKKyN1bmRlZiBDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSAorICAgIHJldHVybiBJbnZh
bGlkT3B0aW9uSW5kZXg7Cit9CisKKyNkZWZpbmUgREVGSU5FX09QVElPTl9BQ0NFU1NPUlModHlw
ZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwK
KyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8oKSBc
CisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9u
c1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6
bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uVHlwZXM6OnR5
cGVfJiBPcHRpb25zOjpuYW1lXyMjRGVmYXVsdCgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJu
IGdfanNjQ29uZmlnLnR5cGUjI3R5cGVfIyNEZWZhdWx0T3B0aW9uc1tvcHRpb25UeXBlU3BlY2lm
aWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAg
fQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVGSU5FX09QVElPTl9BQ0NFU1NPUlMpCisjdW5k
ZWYgREVGSU5FX09QVElPTl9BQ0NFU1NPUlMKIAotaW5saW5lIEdDTG9nZ2luZzo6TGV2ZWwmIE9w
dGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZl
bDsKLX0KKyNlbmRpZiAvLyAhQ09NUElMRVIoTVNWQykKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkdDTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFj
cm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKIC8vIGFs
b25nIHdpdGggdGhlaXIgdHlwZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucyB2YWx1
ZXMgYXJlIGFjdHVhbGx5Ci0vLyByZWFsaXplZCBhcyBhbiBhcnJheSBvZiBPcHRpb25FbnRyeSBl
bGVtZW50cyBpbiBKU0M6OkNvbmZpZy4KKy8vIHJlYWxpemVkIGFzIGFycmF5cyBvZiBlYWNoIG9m
IHRoZSBPcHRpb25UeXBlcyBpbiBKU0M6OkNvbmZpZy4KIC8vCi0vLyAgICAgT3B0aW9uczo6aW5p
dGlhbGl6ZSgpIHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0
aAorLy8gICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5
cyBvZiBvcHRpb25zIHZhbHVlcyB3aXRoCiAvLyB0aGUgZGVmYXVsdHMgc3BlY2lmaWVkIGluIEZP
Ul9FQUNIX0pTQ19PUFRJT04oKSBiZWxvdy4gQWZ0ZXIgdGhhdCwgdGhlIHZhbHVlcyBjYW4KIC8v
IGJlIHByb2dyYW1tYXRpY2FsbHkgcmVhZCBhbmQgd3JpdHRlbiB0byB1c2luZyBhbiBhY2Nlc3Nv
ciBtZXRob2Qgd2l0aCB0aGUKIC8vIHNhbWUgbmFtZSBhcyB0aGUgb3B0aW9uLiBGb3IgZXhhbXBs
ZSwgdGhlIG9wdGlvbiAidXNlSklUIiBjYW4gYmUgcmVhZCBhbmQKQEAgLTU0LDYgKzU3LDY4IEBA
IG5hbWVzcGFjZSBKU0MgewogLy8gY2hlY2tzIGFyZSBkb25lIGFmdGVyIHRoZSBvcHRpb24gdmFs
dWVzIGFyZSBzZXQuIElmIHlvdSBhbHRlciB0aGUgb3B0aW9uCiAvLyB2YWx1ZXMgYWZ0ZXIgdGhl
IHNhbml0eSBjaGVja3MgKGZvciB5b3VyIG93biB0ZXN0aW5nKSwgdGhlbiB5b3UncmUgbGlhYmxl
IHRvCiAvLyBlbnN1cmUgdGhhdCB0aGUgbmV3IHZhbHVlcyBzZXQgYXJlIHNhbmUgYW5kIHJlYXNv
bmFibGUgZm9yIHlvdXIgb3duIHJ1bi4KKy8vCisvLyBBbnkgbW9kaWZpY2F0aW9ucyB0byBvcHRp
b25zIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIGZpcnN0IFZNIGlzIGluc3RhbnRpYXRlLgorLy8g
T24gaW5zdGFudGlhdGlvbiBvZiB0aGUgZmlyc3QgVk0gaW5zdGFuY2UsIHRoZSBPcHRpb25zIHdp
bGwgYmUgd3JpdGUgcHJvdGVjdGVkCisvLyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIHRoZXJlYWZ0
ZXIuCisKK2NsYXNzIE9wdGlvblJhbmdlIHsKK3ByaXZhdGU6CisgICAgZW51bSBSYW5nZVN0YXRl
IHsgVW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07CitwdWJsaWM6
CisgICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCisgICAgeyAvLyBP
bmx5IG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaWYgKCFyaHMpIHsKKyAgICAg
ICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICAgICAgbV9yYW5nZVN0cmlu
ZyA9IDA7CisgICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsKKyAgICAgICAgICAgIG1faGlnaExp
bWl0ID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
Ym9vbCBpbml0KGNvbnN0IGNoYXIqKTsKKyAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7Cisg
ICAgY29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IElu
aXRFcnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KKyAgICAKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOworCisgICAgUmFuZ2VTdGF0ZSBtX3N0
YXRlOworICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7CisgICAgdW5zaWduZWQgbV9sb3dM
aW1pdDsKKyAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsKK307CisKKyNkZWZpbmUgRk9SX0VBQ0hf
SlNDX09QVElPTl9UWVBFKHYpIFwKKyAgICB2KEJvb2wsIGJvb2wpIFwKKyAgICB2KFVuc2lnbmVk
LCB1bnNpZ25lZCkgXAorICAgIHYoRG91YmxlLCBkb3VibGUpIFwKKyAgICB2KEludDMyLCBpbnQz
Ml90KSBcCisgICAgdihTaXplLCBzaXplX3QpIFwKKyAgICB2KE9wdGlvblJhbmdlLCBPcHRpb25S
YW5nZSkgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBjb25zdCBjaGFyKikgXAorICAgIHYoR0NMb2dM
ZXZlbCwgR0NMb2dnaW5nOjpMZXZlbCkgXAorCituYW1lc3BhY2UgT3B0aW9uVHlwZXMgeworCisj
ZGVmaW5lIERFQ0xBUkVfVFlQRVMoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdXNpbmcgT3B0
aW9uVHlwZV8gPSB0eXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9U
WVBFUykKKyN1bmRlZiBERUNMQVJFX1RZUEVTCisKK30gLy8gbmFtZXNwYWNlIE9wdGlvblR5cGVz
CisKK2VudW0gY2xhc3MgT3B0aW9uVHlwZUlEIDogdWludDhfdCB7CisKKyNkZWZpbmUgREVDTEFS
RV9UWVBFSUQoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgT3B0aW9uVHlwZV8sCisgICAgRk9S
X0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfVFlQRUlEKQorI3VuZGVmIERFQ0xBUkVfVFlQ
RUlECisKK307CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTih2KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2KEJvb2wsIHVzZUtlcm5UQ1NNLCB0
cnVlLCBOb3JtYWwsICJOb3RlOiB0aGlzIG5lZWRzIHRvIGdvIGJlZm9yZSBvdGhlciBvcHRpb25z
IHNpbmNlIHRoZXkgZGVwZW5kIG9uIHRoaXMgdmFsdWUuIikgXApAQCAtNTEwLDYgKzU3NSwxNyBA
QCBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICB2KG1heGltdW1GVExDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50LCBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9u
KSBcCiAgICAgdihtYXhpbXVtSW5saW5pbmdDYWxsZXJTaXplLCBtYXhpbXVtSW5saW5pbmdDYWxs
ZXJCeXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKIAorI2RlZmluZSBERUNMQVJFX09QVElPTl9J
RCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9u
XykgXAorICAgIG5hbWVfLAorZW51bSBjbGFzcyBPcHRpb25JRCA6IHVpbnQxNl90IHsKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lEKQorfTsKKyN1bmRlZiBERUNMQVJF
X09QVElPTl9JRAorCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnZhbGlkT3B0aW9uSW5kZXgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworCit0ZW1wbGF0ZTxPcHRpb25U
eXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVj
aWZpY0luZGV4KCk7CiAKIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMo
KQogewpAQCAtNTIyLDUgKzU5OCwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZK
U0NPcHRpb25zCiAKIGNvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25zID0gY291bnROdW1i
ZXJPZkpTQ09wdGlvbnMoKTsKIAotfSAvLyBuYW1lc3BhY2UgSlNDCitjb25zdGV4cHIgc2l6ZV90
IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRCB0eXBlKQoreworICAg
IHNpemVfdCBjb3VudCA9IDA7CisjZGVmaW5lIENPVU5UX09QVElPTih0eXBlXywgbmFtZV8sIGRl
ZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIGlmICh0eXBl
ID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAgY291bnQrKzsKKyAgICBGT1JfRUFD
SF9KU0NfT1BUSU9OKENPVU5UX09QVElPTik7CisjdW5kZWYgQ09VTlRfT1BUSU9OCisgICAgcmV0
dXJuIGNvdW50OworfQogCitjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mQm9vbE9wdGlvbnMgPSBj
b3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkJvb2wpOworY29uc3Rl
eHByIHNpemVfdCBOdW1iZXJPZlVuc2lnbmVkT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRp
b25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6VW5zaWduZWQpOworY29uc3RleHByIHNpemVfdCBOdW1i
ZXJPZkRvdWJsZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25U
eXBlSUQ6OkRvdWJsZSk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mSW50MzJPcHRpb25zID0g
Y291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpJbnQzMik7Citjb25z
dGV4cHIgc2l6ZV90IE51bWJlck9mU2l6ZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9u
c09mVHlwZShPcHRpb25UeXBlSUQ6OlNpemUpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk9w
dGlvblJhbmdlT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5
cGVJRDo6T3B0aW9uUmFuZ2UpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZk9wdGlvblN0cmlu
Z09wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9w
dGlvblN0cmluZyk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mR0NMb2dMZXZlbE9wdGlvbnMg
PSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWwp
OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381135</attachid>
            <date>2019-10-16 17:15:43 -0700</date>
            <delta_ts>2019-10-16 17:55:37 -0700</delta_ts>
            <desc>test patch for MSVC.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>40924</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTIwLDcgKzkyMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAogICAgIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKICAgICBydW50aW1lL09wZXJhdGlvbnMuaAotICAgIHJ1bnRpbWUv
T3B0aW9uRW50cnkuaAogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9uc1NldFZhbHVlKGNv
bnN0CiB7CiAjZGVmaW5lIFNFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgj
bmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9TZXQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCF2YWx1ZUZyb21H
VmFsdWUodmFsdWUsIHZhbHVlVG9TZXQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgICAgIHJldHVybiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgT3B0aW9uczo6bmFtZV8oKSA9IHZhbHVlVG9TZXQ7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4ganNjT3B0aW9uc0dldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5lIEdFVF9PUFRJT05f
VkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZh
bHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0
aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAg
ICAgIFwKICAgICAgICAgdmFsdWVUb0dWYWx1ZSh2YWx1ZVRvR2V0LCB2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC02MTYs
OCArNjE2LDggQEAgdm9pZCBqc2Nfb3B0aW9uc19mb3JlYWNoKEpTQ09wdGlvbnNGdW5jIAogCiAj
ZGVmaW5lIFZJU0lUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJp
bGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2
YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6OkF2YWls
YWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8g
ZGVmYXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gZGVm
YXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBhdXRv
IG9wdGlvblR5cGUgPSBqc2NPcHRpb25zVHlwZShkZWZhdWx0VmFsdWUpOyAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBpZiAoZnVuY3Rpb24gKCNuYW1lXywgb3B0aW9uVHlwZSwgZGVzY3JpcHRp
b25fLCB1c2VyRGF0YSkpICAgICAgXAogICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNjY2LDcgKzY2Niw3
IEBAIEdPcHRpb25Hcm91cCoganNjX29wdGlvbnNfZ2V0X29wdGlvbl9ncm8KICAgICBHQXJyYXkq
IGVudHJpZXMgPSBnX2FycmF5X25ldyhUUlVFLCBUUlVFLCBzaXplb2YoR09wdGlvbkVudHJ5KSk7
CiAjZGVmaW5lIFJFR0lTVEVSX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFpbGFiaWxp
dHk6OmF2YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwgXAotICAg
ICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9wdGlvbnM6
OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICB8fCBPcHRpb25zOjpp
c0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxh
YmlsaXR5XykpIHsgXAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUoZ19zdHJkdXBfcHJp
bnRmKCJqc2MtJXMiLCAjbmFtZV8pKTsgICAgICAgXAogICAgICAgICBlbnRyaWVzID0gZ19hcnJh
eV9zZXRfc2l6ZShlbnRyaWVzLCBlbnRyaWVzLT5sZW4gKyAxKTsgXAogICAgICAgICBHT3B0aW9u
RW50cnkqIGVudHJ5ID0gJmdfYXJyYXlfaW5kZXgoZW50cmllcywgR09wdGlvbkVudHJ5LCBlbnRy
aWVzLT5sZW4gLSAxKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODcyLDcgKzE4NzIsNiBA
QAogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJB
QzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkUzODQy
MzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0
aW9uRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlE
RDQ0NSAvKiBPcHRpb25zTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFM0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRC
aXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi87
IH07CkBAIC01MDczLDcgKzUwNzIsNiBAQAogCQlGRTM1QzJGQTIxQjFFNkM3MDAwRjRDQTggLyog
T3B0aW9ucy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcHRpb25zLnJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGQjIxQjFFNkM3MDAwRjRDQTgg
LyogT3Bjb2RlR3JvdXAucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3Bj
b2RlR3JvdXAucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZDMjFCMUU2
QzcwMDBGNENBOCAvKiBNZXRhZGF0YS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBh
dGggPSBNZXRhZGF0YS5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzODQyMzAy
MzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcHRpb25zTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvbGxhclZNLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2xsYXJWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM4Miw3ICs3MzgwLDYgQEAKIAkJCQlFMzlFRUFGMjIy
ODEyNDRDMDA4NDc0RjQgLyogT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaCAqLywKIAkJCQlGNjkyQTg3NzAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5jcHAg
Ki8sCiAJCQkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLywKLQkJ
CQlGRTM4NDIzMDIzMjRENTFBMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLywKIAkJCQkwRkUy
MjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2
QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywKIAkJCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCAqLywKQEAgLTk5MDUsNyArOTkwMiw2IEBACiAJCQkJMEYyQkRD
MkMxNTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
NDdFQTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkUzODQyMzIyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzU2OTg3MjIyODQxMTg3MDA4Q0RDQ0IgLyogUGFja2VkQ2Vs
bFB0ci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjUxMTkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJPcHRpb25FbnRyeS5oIgogI2luY2x1ZGUgIk9wdGlv
bnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNiwxMiArMzUs
MTIgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yOwogCiAjaWYgQ1BVKEFS
TTY0KSB8fCBQTEFURk9STShXQVRDSE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2
ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICogUGFnZVNp
emU7CiAjZWxzZQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDQgKiBLQjsKK2NvbnN0ZXhw
ciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDEgKiBQYWdlU2l6ZTsKICNlbmRpZgogCi1j
b25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAzMiAqIEtCOwotCiAjaWYgRU5B
QkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogdXNpbmcgSklUV3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rp
b24gPSB2b2lkICgqKShvZmZfdCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAjZW5kaWYKQEAgLTgy
LDggKzgxLDI5IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICAgICAgYm9vbCB1c2VGYXN0UGVy
bWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAotICAgICAgICAgICAgT3B0aW9uRW50cnkgb3B0aW9u
c1tOdW1iZXJPZk9wdGlvbnNdOwotICAgICAgICAgICAgT3B0aW9uRW50cnkgZGVmYXVsdE9wdGlv
bnNbTnVtYmVyT2ZPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xPcHRpb25zW051
bWJlck9mQm9vbE9wdGlvbnNdOworICAgICAgICAgICAgYm9vbCB0eXBlQm9vbERlZmF1bHRPcHRp
b25zW051bWJlck9mQm9vbE9wdGlvbnNdOworCisgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVs
IHR5cGVHQ0xvZ0xldmVsT3B0aW9uc1tOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKyAgICAg
ICAgICAgIEdDTG9nZ2luZzo6TGV2ZWwgdHlwZUdDTG9nTGV2ZWxEZWZhdWx0T3B0aW9uc1tOdW1i
ZXJPZkdDTG9nTGV2ZWxPcHRpb25zXTsKKworICAgICAgICAgICAgaW50MzJfdCB0eXBlSW50MzJP
cHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsKKyAgICAgICAgICAgIGludDMyX3QgdHlwZUlu
dDMyRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZJbnQzMk9wdGlvbnNdOworCisgICAgICAgICAgICB1
bnNpZ25lZCB0eXBlVW5zaWduZWRPcHRpb25zW051bWJlck9mVW5zaWduZWRPcHRpb25zXTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHR5cGVVbnNpZ25lZERlZmF1bHRPcHRpb25zW051bWJlck9mVW5z
aWduZWRPcHRpb25zXTsKKworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVPcHRpb25zW051
bWJlck9mRG91YmxlT3B0aW9uc107CisgICAgICAgICAgICBkb3VibGUgdHlwZURvdWJsZURlZmF1
bHRPcHRpb25zW051bWJlck9mRG91YmxlT3B0aW9uc107CisKKyAgICAgICAgICAgIHNpemVfdCB0
eXBlU2l6ZU9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisgICAgICAgICAgICBzaXplX3Qg
dHlwZVNpemVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlNpemVPcHRpb25zXTsKKworICAgICAgICAg
ICAgY29uc3QgY2hhciogdHlwZU9wdGlvblN0cmluZ09wdGlvbnNbTnVtYmVyT2ZPcHRpb25TdHJp
bmdPcHRpb25zXTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25TdHJpbmdEZWZh
dWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblN0cmluZ09wdGlvbnNdOworCisgICAgICAgICAgICBP
cHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VPcHRpb25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRp
b25zXTsKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIHR5cGVPcHRpb25SYW5nZURlZmF1bHRPcHRp
b25zW051bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zXTsKICAgICAgICAgfTsKICAgICAgICAgY2hh
ciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHJldmlzaW9uIDI1MTE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbkVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRp
b25SYW5nZSB7Ci1wcml2YXRlOgotICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQs
IEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdl
JiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhzKQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGlu
aXRpYWxpemF0aW9uCi0gICAgICAgIGlmICghcmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0g
VW5pbml0aWFsaXplZDsKLSAgICAgICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAg
ICAgbV9sb3dMaW1pdCA9IDA7Ci0gICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBj
aGFyKik7Ci0gICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJh
bmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5n
ZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBzX251bGxSYW5nZVN0cjsKLQotICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBj
aGFyKiBtX3JhbmdlU3RyaW5nOwotICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWdu
ZWQgbV9oaWdoTGltaXQ7Ci19OwotCi0vLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVl
OgotdW5pb24gT3B0aW9uRW50cnkgewotICAgIHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5n
IFVuc2lnbmVkID0gdW5zaWduZWQ7Ci0gICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVz
aW5nIEludDMyID0gaW50MzJfdDsKLSAgICB1c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5n
IE9wdGlvblJhbmdlID0gSlNDOjpPcHRpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcg
PSBjb25zdCBjaGFyKjsKLSAgICB1c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsK
LQotICAgIGJvb2wgdmFsQm9vbDsKLSAgICB1bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3Vi
bGUgdmFsRG91YmxlOwotICAgIGludDMyX3QgdmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7
Ci0gICAgT3B0aW9uUmFuZ2UgdmFsT3B0aW9uUmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0
aW9uU3RyaW5nOwotICAgIEdDTG9nZ2luZzo6TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK2Jvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9u
SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2
YWlsYWJpbGl0eSA9PSBBdmFpbGFiaWxpdHk6OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBn
X2pzY0NvbmZpZy5yZXN0cmljdGVkT3B0aW9uc0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBA
QCBib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5V
U0VEX1BBUkFNKGlkKTsKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNp
bmdsZUFsbG9jYXRpb25TaXplSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVB
bGxvY2F0aW9uU2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJX
SU4pCi0gICAgaWYgKGlkID09IHVzZVNpZ2lsbENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQg
PT0gT3B0aW9uSUQ6OnVzZVNpZ2lsbENyYXNoQW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlk
ID09IGxvZ0pJVENvZGVGb3JQZXJmSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRD
b2RlRm9yUGVyZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0g
dHJhY2VMTEludEV4ZWN1dGlvbklEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTElu
dEV4ZWN1dGlvbikKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQg
PT0gdHJhY2VMTEludFNsb3dQYXRoSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxM
SW50U2xvd1BhdGgpCiAgICAgICAgIHJldHVybiAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldp
dGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlv
bldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1l
LCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxh
YmxlID0gKGF2YWlsYWJpbGl0eSA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAg
ICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIs
MTAgKzI4Miw0NSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgb3V0LnByaW50KG1fcmFuZ2VTdHJpbmcpOwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHdv
cmthcm91bmQgZm9yIE1TVkMncyBpbmFiaWxpdHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCisv
LyBPbmNlIHRoZSBNU1ZDIGJ1ZyBoYXMgYmVlbiBmaXhlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIHNu
aXBwZXQgb2YgY29kZSBhbmQKKy8vIG1ha2UgaXRzIGNvdW50ZXJwYXJ0IGluIE9wdGlvbnMuaCB1
bmNvbmRpdGlvbmFsLgorLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0
dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxl
ci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5odG1sCisjaWYgQ09NUElMRVIoTVNWQykKKwordGVt
cGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9wdGlvbklEIGlkPgorY29uc3RleHByIHNpemVfdCBv
cHRpb25UeXBlU3BlY2lmaWNJbmRleCgpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyNkZWZp
bmUgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVf
LCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6
Om5hbWVfKSBcCisgICAgICAgIHJldHVybiBpbmRleDsgXAorICAgIGlmICh0eXBlID09IE9wdGlv
blR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAgaW5kZXgrKzsKKworICAgIEZPUl9FQUNIX0pTQ19P
UFRJT04oQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gpOworI3VuZGVmIENPVU5UX0lOREVYX0FO
RF9GSU5EX01BVENICisgICAgcmV0dXJuIEludmFsaWRPcHRpb25JbmRleDsKK30KKworI2RlZmlu
ZSBERUZJTkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2
YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlv
blR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8j
I0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0
eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
Ojp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0Nf
T1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNTT1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUND
RVNTT1JTCisKKyNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQorCiAvLyBSZWFsaXplIHRoZSBuYW1l
cyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoKLWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRp
b25zOjpzX29wdGlvbnNJbmZvW09wdGlvbnM6Om51bWJlck9mT3B0aW9uc10gPSB7Citjb25zdCBP
cHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpb25zSW5mb1tOdW1iZXJPZk9wdGlvbnNd
ID0gewogI2RlZmluZSBGSUxMX09QVElPTl9JTkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0
aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyB9
LAorICAgIHsgI25hbWVfLCBkZXNjcmlwdGlvbl8sIE9wdGlvblR5cGVJRDo6dHlwZV8sIEF2YWls
YWJpbGl0eTo6YXZhaWxhYmlsaXR5Xywgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlw
ZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElP
TihGSUxMX09QVElPTl9JTkZPKQogI3VuZGVmIEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0yOTks
MjYgKzMzNCwyNSBAQCBzdGF0aWMgdm9pZCBzY2FsZUpJVFBvbGljeSgpCiAgICAgICAgIHNjYWxl
RmFjdG9yID0gMC4wOwogCiAgICAgc3RydWN0IE9wdGlvblRvU2NhbGUgewotICAgICAgICBPcHRp
b25zOjpJRCBpZDsKKyAgICAgICAgc2l6ZV90IGluZGV4OwogICAgICAgICBpbnQzMl90IG1pblZh
bDsKICAgICB9OwogCiAgICAgc3RhdGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2Nh
bGVbXSA9IHsKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElE
LCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0g
ICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0s
Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJ
RCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAx
IH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIg
fSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
SUQsIDIgfQorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6
SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD4oKSwgMCB9LAorICAg
ICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlv
bklEOjp0aHJlc2hvbGRGb3JKSVRTb29uPigpLCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJXYXJtVXA+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJ
bmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXA+KCksIDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29u
PigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlE
OjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj4oKSwgMiB9LAor
ICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9w
dGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPigpLCAyIH0sCiAgICAg
fTsKIAotICAgIGNvbnN0IGludCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlv
bnNUb1NjYWxlKSAvIHNpemVvZihPcHRpb25Ub1NjYWxlKTsKKyAgICBjb25zdGV4cHIgaW50IG51
bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9w
dGlvblRvU2NhbGUpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9T
Y2FsZTsgaSsrKSB7Ci0gICAgICAgIE9wdGlvbiBvcHRpb24ob3B0aW9uc1RvU2NhbGVbaV0uaWQp
OwotICAgICAgICBBU1NFUlQob3B0aW9uLnR5cGUoKSA9PSBPcHRpb25zOjpUeXBlOjpJbnQzMik7
Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpICo9IHNjYWxlRmFjdG9yOwotICAgICAgICBvcHRp
b24uaW50MzJWYWwoKSA9IHN0ZDo6bWF4KG9wdGlvbi5pbnQzMlZhbCgpLCBvcHRpb25zVG9TY2Fs
ZVtpXS5taW5WYWwpOworICAgICAgICBpbnQzMl90JiBvcHRpb25WYWx1ZSA9IGdfanNjQ29uZmln
LnR5cGVJbnQzMk9wdGlvbnNbb3B0aW9uc1RvU2NhbGVbaV0uaW5kZXhdOworICAgICAgICBvcHRp
b25WYWx1ZSAqPSBzY2FsZUZhY3RvcjsKKyAgICAgICAgb3B0aW9uVmFsdWUgPSBzdGQ6Om1heChv
cHRpb25WYWx1ZSwgb3B0aW9uc1RvU2NhbGVbaV0ubWluVmFsKTsKICAgICB9CiB9CiAKQEAgLTQ0
MSw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAg
ICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKQogICAgICAgICBPcHRpb25zOjpjb2xs
ZWN0Q29udGludW91c2x5KCkgPSBmYWxzZTsKIAotICAgIGlmIChPcHRpb24oT3B0aW9uczo6aml0
UG9saWN5U2NhbGVJRCkuaXNPdmVycmlkZGVuKCkpCisgICAgaWYgKE9wdGlvbihPcHRpb25JRDo6
aml0UG9saWN5U2NhbGUpLmlzT3ZlcnJpZGRlbigpKQogICAgICAgICBzY2FsZUpJVFBvbGljeSgp
OwogICAgIAogICAgIGlmIChPcHRpb25zOjpmb3JjZUVhZ2VyQ29tcGlsYXRpb24oKSkgewpAQCAt
NTIyLDkgKzU1NiwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAg
Q29uZmlnOjplbmFibGVSZXN0cmljdGVkT3B0aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAv
LyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVl
czoKLSNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFp
bGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICAgICAgICAgIG5hbWVfKCkgPSBkZWZhdWx0
VmFsdWVfOyBcCi0gICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gZGVmYXVsdFZhbHVlXzsK
KyNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIHsgXAorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBk
ZWZhdWx0VmFsdWVfOyBcCisgICAgICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCisgICAg
ICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IHZhbHVlOyBcCisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRf
T1BUSU9OCiAKQEAgLTU0OCw3ICs1ODQsNyBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQog
ICAgICAgICAgICAgICAgIENSQVNIKCk7CiAjZWxzZSAvLyBQTEFURk9STShDT0NPQSkKICNkZWZp
bmUgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgb3ZlcnJp
ZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIG5hbWVfIyNJRCwgIkpTQ18iICNuYW1lXywg
QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKKyAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9u
V2l0aEhldXJpc3RpYyhuYW1lXygpLCBPcHRpb25JRDo6bmFtZV8sICJKU0NfIiAjbmFtZV8sIEF2
YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BU
SU9OKE9WRVJSSURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1MpCiAjdW5kZWYgT1ZFUlJJREVfT1BU
SU9OX1dJVEhfSEVVUklTVElDUwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtNzI3LDE2
ICs3NjMsMTUgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogCiAg
ICAgY29uc3QgY2hhciogdmFsdWVTdHIgPSBlcXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3IgZWFj
aCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZ5IGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0
IHRoZSBhcmcKKyAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQg
YXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1ZSBt
YWtlcyBzZW5zZS4gT3RoZXJ3aXNlLCBtb3ZlIG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9wdGlv
bi4KICNkZWZpbmUgU0VUX09QVElPTl9JRl9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25hbWVf
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVxdWFsU3RyIC0gYXJnKSAgICAgIFwKICAgICAgICAg
JiYgIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFsU3RyIC0gYXJnKSkgeyAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGlmIChBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmls
aXR5OjpOb3JtYWwgICAgIFwKLSAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShuYW1lXyMjSUQs
IEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKKyAgICAgICAgaWYgKEF2YWlsYWJpbGl0
eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCisgICAgICAgICAg
ICAmJiAhaXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJp
bGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8gdmFsdWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFsdWUgPSAoZGVm
YXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBuYW1lXygpID0gdmFs
dWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODE2LDEwICs4
NTEsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZAogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAKLSAgICBmb3IgKGludCBpZCA9IDA7IGlk
IDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAgZm9yIChzaXplX3QgaWQgPSAwOyBpZCA8
IE51bWJlck9mT3B0aW9uczsgaWQrKykgewogICAgICAgICBpZiAoc2VwYXJhdG9yICYmIGlkKQog
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgZHVtcE9wdGlv
bihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8SUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRp
b25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CisgICAgICAgIGR1bXBPcHRpb24oYnVpbGRl
ciwgbGV2ZWwsIHN0YXRpY19jYXN0PE9wdGlvbklEPihpZCksIG9wdGlvbkhlYWRlciwgb3B0aW9u
Rm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOwogICAgIH0KIH0KIApAQCAtODM1LDEwICs4NzAs
MTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYQogICAgIGZwcmlu
dGYoc3RyZWFtLCAiJXMiLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2
ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkLAordm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9uSUQgaWQsCiAgICAgY29u
c3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbiBk
dW1wRGVmYXVsdHNPcHRpb24pCiB7Ci0gICAgaWYgKGlkID49IG51bWJlck9mT3B0aW9ucykKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpZCkgPj0gTnVtYmVyT2ZPcHRpb25zKQogICAgICAg
ICByZXR1cm47IC8vIElsbGVnYWwgb3B0aW9uLgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7CkBA
IC04ODAsMjkgKzkxNSw3MSBAQCB2b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVu
dCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAKK09wdGlvbjo6T3B0aW9uKE9wdGlvbklEIGlkKQor
ICAgIDogbV9pZChpZCkKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNf
b3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0
eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZTsKKworICAgIHN3aXRjaCAo
dHlwZSkgeworCisjZGVmaW5lIEhBTkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAg
IGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNw
ZWNpZmljSW5kZXggPCBOdW1iZXJPZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAg
IG1fdmFsIyNPcHRpb25UeXBlXyA9IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNPcHRp
b25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNI
X0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0K
K30KKworY29uc3QgT3B0aW9uIE9wdGlvbjo6ZGVmYXVsdE9wdGlvbigpIGNvbnN0Cit7CisgICAg
T3B0aW9uIHJlc3VsdDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0
aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBl
ID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpbmRleF0udHlwZTsKKworICAgIHJlc3VsdC5tX2lk
ID0gbV9pZDsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRp
b25UeXBlXywgdHlwZV8pIFwKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwK
KyAgICAgICAgQVNTRVJUKHR5cGVTcGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVf
IyNPcHRpb25zKTsgXAorICAgICAgICByZXN1bHQubV92YWwjI09wdGlvblR5cGVfID0gZ19qc2ND
b25maWcudHlwZSMjT3B0aW9uVHlwZV8jI0RlZmF1bHRPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4
XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5E
TEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewog
ICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAg
ICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92
YWxCb29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50
cnkudmFsVW5zaWduZWQpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxVbnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9lbnRyeS52YWxTaXplKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92YWxTaXplKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQ
cmVjaXNpb25OdW1iZXIobV9lbnRyeS52YWxEb3VibGUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlE
OjpEb3VibGU6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92
YWxEb3VibGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMy
OgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbEludDMyKTsKKyAgICBj
YXNlIE9wdGlvblR5cGVJRDo6SW50MzI6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
dmFsSW50MzIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlv
blJhbmdlOgotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJh
bmdlU3RyaW5nKCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZToKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6IHsKLSAgICAg
ICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9lbnRyeS52YWxPcHRpb25TdHJpbmc7CisgICAgY2Fz
ZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmluZzogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRp
b24gPSBtX3ZhbE9wdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAg
ICBvcHRpb24gPSAiIjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKQEAgLTkxMCw4ICs5
ODcsOCBAQCB2b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIE9w
dGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dn
aW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkudmFsR0NMb2dMZXZlbCkpOworICAgIGNhc2UgT3B0
aW9uVHlwZUlEOjpHQ0xvZ0xldmVsOiB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2lu
Zzo6bGV2ZWxBc1N0cmluZyhtX3ZhbEdDTG9nTGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIH0KQEAgLTkyMCwyMyArOTk3LDIzIEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIKIGJvb2wgT3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5
cGU6OkJvb2w6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEJvb2wgPT0gb3RoZXIubV9lbnRy
eS52YWxCb29sOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkID09IG90aGVyLm1fZW50cnkudmFsVW5zaWduZWQ7Ci0g
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxT
aXplID09IG90aGVyLm1fZW50cnkudmFsU2l6ZTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRv
dWJsZToKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5LnZhbERvdWJsZSA9PSBvdGhlci5tX2VudHJ5
LnZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4obV9lbnRyeS52YWxEb3VibGUpICYmIHN0ZDo6aXNu
YW4ob3RoZXIubV9lbnRyeS52YWxEb3VibGUpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Oklu
dDMyOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMiA9PSBvdGhlci5tX2VudHJ5LnZh
bEludDMyOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9lbnRy
eS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6
T3B0aW9uU3RyaW5nOgotICAgICAgICByZXR1cm4gKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nID09
IG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKQotICAgICAgICAgICAgfHwgKG1fZW50cnku
dmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmICFzdHJj
bXAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcsIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5n
KSk7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOgotICAgICAgICByZXR1cm4g
bV9lbnRyeS52YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fZW50cnkudmFsR0NMb2dMZXZlbDsKKyAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsQm9vbCA9PSBv
dGhlci5tX3ZhbEJvb2w7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlVuc2lnbmVkOgorICAgICAg
ICByZXR1cm4gbV92YWxVbnNpZ25lZCA9PSBvdGhlci5tX3ZhbFVuc2lnbmVkOworICAgIGNhc2Ug
T3B0aW9uVHlwZUlEOjpTaXplOgorICAgICAgICByZXR1cm4gbV92YWxTaXplID09IG90aGVyLm1f
dmFsU2l6ZTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6RG91YmxlOgorICAgICAgICByZXR1cm4g
KG1fdmFsRG91YmxlID09IG90aGVyLm1fdmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX3ZhbERv
dWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX3ZhbERvdWJsZSkpOworICAgIGNhc2UgT3B0aW9u
VHlwZUlEOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIG1fdmFsSW50MzIgPT0gb3RoZXIubV92YWxJ
bnQzMjsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2U6CisgICAgICAgIHJldHVy
biBtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV92YWxPcHRpb25SYW5n
ZS5yYW5nZVN0cmluZygpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6Cisg
ICAgICAgIHJldHVybiAobV92YWxPcHRpb25TdHJpbmcgPT0gb3RoZXIubV92YWxPcHRpb25TdHJp
bmcpCisgICAgICAgICAgICB8fCAobV92YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV92YWxPcHRp
b25TdHJpbmcgJiYgIXN0cmNtcChtX3ZhbE9wdGlvblN0cmluZywgb3RoZXIubV92YWxPcHRpb25T
dHJpbmcpKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbDoKKyAgICAgICAgcmV0
dXJuIG1fdmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX3ZhbEdDTG9nTGV2ZWw7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHJldmlzaW9uIDI1MTE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpT
RXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTMsMzkgKzUyLDE5IEBAIGNvbnN0ZXhwciBib29s
IGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwgeworICAgIGVudW0gY2xhc3MgRHVtcExldmVsIDogdWlu
dDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBB
bGwsCiAgICAgICAgIFZlcmJvc2UKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxp
dHkgeworICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IDogdWludDhfdCB7CiAgICAgICAgIE5v
cm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJsZQogICAg
IH07CiAKLSNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICBuYW1lXyMjSUQsCi0KLSAg
ICBlbnVtIElEIHsKLSAgICAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9J
RCkKLSAgICAgICAgbnVtYmVyT2ZPcHRpb25zCi0gICAgfTsKLSN1bmRlZiBERUNMQVJFX09QVElP
Tl9JRAotCi0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgQm9vbCwKLSAgICAgICAgVW5z
aWduZWQsCi0gICAgICAgIERvdWJsZSwKLSAgICAgICAgSW50MzIsCi0gICAgICAgIFNpemUsCi0g
ICAgICAgIE9wdGlvblJhbmdlLAotICAgICAgICBPcHRpb25TdHJpbmcsCi0gICAgICAgIEdDTG9n
TGV2ZWwsCi0gICAgfTsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRp
YWxpemUoKTsKIAogICAgIC8vIFBhcnNlcyBhIHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2gg
b3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0tPG9wdGlvbk5hbWU+PTx2YWx1ZT4iCkBAIC0xMDEs
MTQgKzgwLDIxIEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0FD
Q0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2Ny
aXB0aW9uXykgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYg
bmFtZV8oKSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zW25hbWVfIyNJRF0udmFsIyN0eXBl
XzsgfSAgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFt
ZV8jI0RlZmF1bHQoKSB7IHJldHVybiBnX2pzY0NvbmZpZy5kZWZhdWx0T3B0aW9uc1tuYW1lXyMj
SURdLnZhbCMjdHlwZV87IH0KKy8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVNW
QydzIGluYWJpbGl0eSB0byBoYW5kbGUgbGFyZ2Ugc291cmNlcy4KKy8vIFNlZSBodHRwczovL2Rl
dmVsb3BlcmNvbW11bml0eS52aXN1YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS82NTMzMDEv
ZmF0YWwtZXJyb3ItYzEwMDItY29tcGlsZXItaXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4uaHRtbAor
I2lmIENPTVBJTEVSKE1TVkMpCisjZGVmaW5lIE9QVElPTl9BQ0NFU1NPUl9MSU5LQUdFIEpTX0VY
UE9SVF9QUklWQVRFCisjZWxzZQorI2RlZmluZSBPUFRJT05fQUNDRVNTT1JfTElOS0FHRSBBTFdB
WVNfSU5MSU5FCisjZW5kaWYKIAorI2RlZmluZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlw
ZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwK
KyAgICBPUFRJT05fQUNDRVNTT1JfTElOS0FHRSBzdGF0aWMgT3B0aW9uVHlwZXM6OnR5cGVfJiBu
YW1lXygpOyBcCisgICAgT1BUSU9OX0FDQ0VTU09SX0xJTktBR0Ugc3RhdGljIE9wdGlvblR5cGVz
Ojp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKTsKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xB
UkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRlZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKIAot
ICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOworICAgIHN0YXRp
YyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRlOgog
CkBAIC0xMTYsOCArMTAyLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgRW50cnlJbmZvIHsKICAg
ICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247
Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgT3B0aW9uVHlwZUlEIHR5cGU7CiAgICAgICAg
IEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZp
Y0luZGV4OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBAIC0xMjksMTIyICsxMTYsODkgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgc3Rh
dGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29uc3Qg
Y2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgY29uc3QgY2hhciog
b3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09wdGlv
bik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVs
LCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2
ZWwsIE9wdGlvbklELAogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNo
YXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKIAogICAgIHN0YXRpYyBib29s
IHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29s
IHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKICAgICBzdGF0aWMgYm9vbCBvdmVy
cmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGljKGNvbnN0IGNoYXIqIG5hbWUpOwogCi0gICAg
c3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW251bWJlck9mT3B0aW9uc107Cisg
ICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW051bWJlck9mT3B0aW9uc107
CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwogfTsKIAogY2xhc3MgT3B0aW9uIHsKIHB1Ymxp
YzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAg
ICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9wdGlvbnNbbV9pZF0pCi0gICAgewotICAgIH0KLSAg
ICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOworCiAgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXIm
KSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICBPcHRpb25zOjpJRCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgY29u
c3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBPcHRpb25zOjpUeXBlIHR5cGUoKSBj
b25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKKyAgICBPcHRpb25JRCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gT3B0
aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLm5hbWU7IH0KKyAgICBjb25zdCBjaGFyKiBk
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baWRJbmRl
eCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9wdGlvblR5cGVJRCB0eXBlKCkgY29uc3QgeyByZXR1
cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLnR5cGU7IH0KKyAgICBPcHRpb25z
OjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19v
cHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWlsYWJpbGl0eTsgfQorICAgIGJvb2wgaXNPdmVycmlk
ZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gZGVmYXVsdE9wdGlvbigpOyB9CiAgICAgY29u
c3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsKLSAgICAKLSAgICBib29sJiBib29sVmFs
KCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7Ci0gICAgZG91YmxlJiBkb3VibGVWYWwo
KTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAgIE9wdGlvblJhbmdlIG9wdGlvblJhbmdl
VmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsKCk7Ci0gICAgR0NMb2dnaW5n
OjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBPbmx5IHVz
ZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMuCi0gICAgT3B0aW9uKE9wdGlvbnM6
OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAg
LCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgT3B0aW9uczo6SUQgbV9p
ZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKLX07CiAKLWlubGluZSBjb25zdCBjaGFyKiBP
cHRpb246Om5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZv
W21faWRdLm5hbWU7Ci19CisjZGVmaW5lIERFQ0xBUkVfQUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5
cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBlXygpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
IyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX0FD
Q0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IKIAotaW5saW5lIGNvbnN0IGNoYXIqIE9w
dGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlv
bnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1pbmxpbmUgT3B0aW9uczo6VHlwZSBPcHRp
b246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21f
aWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjphdmFp
bGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21f
aWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5saW5lIGJvb2wgT3B0aW9uOjppc092ZXJyaWRkZW4o
KSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19Ci0KLWlu
bGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW21faWRdKTsKLX0K
LQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnku
dmFsQm9vbDsKLX0KK3ByaXZhdGU6CisgICAgT3B0aW9uKCkgeyB9CiAKLWlubGluZSB1bnNpZ25l
ZCYgT3B0aW9uOjp1bnNpZ25lZFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWdu
ZWQ7Ci19CisgICAgc2l6ZV90IGlkSW5kZXgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1faWQpOyB9CiAKLWlubGluZSBkb3VibGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKLXsK
LSAgICByZXR1cm4gbV9lbnRyeS52YWxEb3VibGU7Ci19CisgICAgT3B0aW9uSUQgbV9pZDsKKyAg
ICB1bmlvbiB7CiAKLWlubGluZSBpbnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICBy
ZXR1cm4gbV9lbnRyeS52YWxJbnQzMjsKLX0KKyNkZWZpbmUgREVDTEFSRV9NRU1CRVIoT3B0aW9u
VHlwZV8sIHR5cGVfKSBcCisgICAgICAgIHR5cGVfIG1fdmFsIyNPcHRpb25UeXBlXzsKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9NRU1CRVIpCisjdW5kZWYgREVDTEFSRV9N
RU1CRVIKIAotaW5saW5lIE9wdGlvblJhbmdlIE9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewot
ICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlOwotfQorICAgIH07Cit9OwogCi1pbmxp
bmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQotewotICAgIHJldHVybiBt
X2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0KKy8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3Vu
ZCBmb3IgTVNWQydzIGluYWJpbGl0eSB0byBoYW5kbGUgbGFyZ2Ugc291cmNlcy4KKy8vIE9uY2Ug
dGhlIE1TVkMgYnVnIGhhcyBiZWVuIGZpeGVkLCB3ZSBjYW4gbWFrZSB0aGUgZm9sbG93aW5nIHVu
Y29uZGl0aW9uYWwgYW5kCisvLyByZW1vdmUgaXRzIGNvdW50ZXJwYXJ0IE1TVkMgdmVyc2lvbiBp
biBPcHRpb25zLmNwcC4KKy8vIFNlZSBodHRwczovL2RldmVsb3BlcmNvbW11bml0eS52aXN1YWxz
dHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS82NTMzMDEvZmF0YWwtZXJyb3ItYzEwMDItY29tcGls
ZXItaXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4uaHRtbAorI2lmICFDT01QSUxFUihNU1ZDKQorCit0
ZW1wbGF0ZTxPcHRpb25UeXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90
IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworI2Rl
ZmluZSBDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIGlmIChpZCA9PSBPcHRpb25J
RDo6bmFtZV8pIFwKKyAgICAgICAgcmV0dXJuIGluZGV4OyBcCisgICAgaWYgKHR5cGUgPT0gT3B0
aW9uVHlwZUlEOjp0eXBlXykgXAorICAgICAgICBpbmRleCsrOworCisgICAgRk9SX0VBQ0hfSlND
X09QVElPTihDT1VOVF9JTkRFWF9BTkRfRklORF9NQVRDSCk7CisjdW5kZWYgQ09VTlRfSU5ERVhf
QU5EX0ZJTkRfTUFUQ0gKKyAgICByZXR1cm4gSW52YWxpZE9wdGlvbkluZGV4OworfQorCisjZGVm
aW5lIERFRklORV9PUFRJT05fQUNDRVNTT1JTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgQUxXQVlTX0lOTElORSBPcHRpb25U
eXBlczo6dHlwZV8mIE9wdGlvbnM6Om5hbWVfKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4g
Z19qc2NDb25maWcudHlwZSMjdHlwZV8jI09wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8
T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0gIFwKKyAg
ICBBTFdBWVNfSU5MSU5FIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1
bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMj
RGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBl
XywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9O
KERFRklORV9PUFRJT05fQUNDRVNTT1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JT
CiAKLWlubGluZSBHQ0xvZ2dpbmc6OkxldmVsJiBPcHRpb246OmdjTG9nTGV2ZWxWYWwoKQotewot
ICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9nTGV2ZWw7Ci19CisjZW5kaWYgLy8gIUNPTVBJTEVS
KE1TVkMpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZpc2lvbiAyNTExOTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
NSArMjUsMTggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIEhvdyBk
byBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAv
LyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigpIG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9m
IGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCiAvLyBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzIGFuZCBk
ZWZhdWx0IHZhbHVlcy4gVGhlIG9wdGlvbnMgdmFsdWVzIGFyZSBhY3R1YWxseQotLy8gcmVhbGl6
ZWQgYXMgYW4gYXJyYXkgb2YgT3B0aW9uRW50cnkgZWxlbWVudHMgaW4gSlNDOjpDb25maWcuCisv
LyByZWFsaXplZCBhcyBhcnJheXMgb2YgZWFjaCBvZiB0aGUgT3B0aW9uVHlwZXMgaW4gSlNDOjpD
b25maWcuCiAvLwotLy8gICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUg
dGhlIGFycmF5IG9mIG9wdGlvbnMgdmFsdWVzIHdpdGgKKy8vICAgICBPcHRpb25zOjppbml0aWFs
aXplKCkgd2lsbCBpbml0aWFsaXplIHRoZSBhcnJheXMgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAog
Ly8gdGhlIGRlZmF1bHRzIHNwZWNpZmllZCBpbiBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cu
IEFmdGVyIHRoYXQsIHRoZSB2YWx1ZXMgY2FuCiAvLyBiZSBwcm9ncmFtbWF0aWNhbGx5IHJlYWQg
YW5kIHdyaXR0ZW4gdG8gdXNpbmcgYW4gYWNjZXNzb3IgbWV0aG9kIHdpdGggdGhlCiAvLyBzYW1l
IG5hbWUgYXMgdGhlIG9wdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2Fu
IGJlIHJlYWQgYW5kCkBAIC01NCw2ICs1Nyw2OCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNoZWNr
cyBhcmUgZG9uZSBhZnRlciB0aGUgb3B0aW9uIHZhbHVlcyBhcmUgc2V0LiBJZiB5b3UgYWx0ZXIg
dGhlIG9wdGlvbgogLy8gdmFsdWVzIGFmdGVyIHRoZSBzYW5pdHkgY2hlY2tzIChmb3IgeW91ciBv
d24gdGVzdGluZyksIHRoZW4geW91J3JlIGxpYWJsZSB0bwogLy8gZW5zdXJlIHRoYXQgdGhlIG5l
dyB2YWx1ZXMgc2V0IGFyZSBzYW5lIGFuZCByZWFzb25hYmxlIGZvciB5b3VyIG93biBydW4uCisv
LworLy8gQW55IG1vZGlmaWNhdGlvbnMgdG8gb3B0aW9ucyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRo
ZSBmaXJzdCBWTSBpcyBpbnN0YW50aWF0ZS4KKy8vIE9uIGluc3RhbnRpYXRpb24gb2YgdGhlIGZp
cnN0IFZNIGluc3RhbmNlLCB0aGUgT3B0aW9ucyB3aWxsIGJlIHdyaXRlIHByb3RlY3RlZAorLy8g
YW5kIGNhbm5vdCBiZSBtb2RpZmllZCB0aGVyZWFmdGVyLgorCitjbGFzcyBPcHRpb25SYW5nZSB7
Citwcml2YXRlOgorICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJv
ciwgTm9ybWFsLCBJbnZlcnRlZCB9OworcHVibGljOgorICAgIE9wdGlvblJhbmdlJiBvcGVyYXRv
cj0gKGNvbnN0IGludCYgcmhzKQorICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0
aW9uCisgICAgICAgIGlmICghcmhzKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFs
aXplZDsKKyAgICAgICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOworICAgICAgICAgICAgbV9sb3dM
aW1pdCA9IDA7CisgICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7Cisg
ICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQpOworICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6
IHNfbnVsbFJhbmdlU3RyOyB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxS
YW5nZVN0cjsKKworICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBjaGFyKiBtX3Jh
bmdlU3RyaW5nOworICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7CisgICAgdW5zaWduZWQgbV9oaWdo
TGltaXQ7Cit9OworCisjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRSh2KSBcCisgICAg
dihCb29sLCBib29sKSBcCisgICAgdihVbnNpZ25lZCwgdW5zaWduZWQpIFwKKyAgICB2KERvdWJs
ZSwgZG91YmxlKSBcCisgICAgdihJbnQzMiwgaW50MzJfdCkgXAorICAgIHYoU2l6ZSwgc2l6ZV90
KSBcCisgICAgdihPcHRpb25SYW5nZSwgT3B0aW9uUmFuZ2UpIFwKKyAgICB2KE9wdGlvblN0cmlu
ZywgY29uc3QgY2hhciopIFwKKyAgICB2KEdDTG9nTGV2ZWwsIEdDTG9nZ2luZzo6TGV2ZWwpIFwK
KworbmFtZXNwYWNlIE9wdGlvblR5cGVzIHsKKworI2RlZmluZSBERUNMQVJFX1RZUEVTKE9wdGlv
blR5cGVfLCB0eXBlXykgXAorICAgIHVzaW5nIE9wdGlvblR5cGVfID0gdHlwZV87CisgICAgRk9S
X0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfVFlQRVMpCisjdW5kZWYgREVDTEFSRV9UWVBF
UworCit9IC8vIG5hbWVzcGFjZSBPcHRpb25UeXBlcworCitlbnVtIGNsYXNzIE9wdGlvblR5cGVJ
RCA6IHVpbnQ4X3QgeworCisjZGVmaW5lIERFQ0xBUkVfVFlQRUlEKE9wdGlvblR5cGVfLCB0eXBl
XykgXAorICAgIE9wdGlvblR5cGVfLAorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNM
QVJFX1RZUEVJRCkKKyN1bmRlZiBERUNMQVJFX1RZUEVJRAorCit9OwogCiAjZGVmaW5lIEZPUl9F
QUNIX0pTQ19PUFRJT04odikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgdihCb29sLCB1c2VLZXJuVENTTSwgdHJ1ZSwgTm9ybWFsLCAiTm90ZTogdGhpcyBu
ZWVkcyB0byBnbyBiZWZvcmUgb3RoZXIgb3B0aW9ucyBzaW5jZSB0aGV5IGRlcGVuZCBvbiB0aGlz
IHZhbHVlLiIpIFwKQEAgLTUxMCw2ICs1NzUsMTcgQEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7
CiAgICAgdihtYXhpbXVtRlRMQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgbWF4aW11bUZUTENh
bmRpZGF0ZUJ5dGVjb2RlQ29zdCwgU2FtZU9wdGlvbikgXAogICAgIHYobWF4aW11bUlubGluaW5n
Q2FsbGVyU2l6ZSwgbWF4aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9u
KSBcCiAKKyNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBuYW1lXywKK2VudW0gY2xh
c3MgT3B0aW9uSUQgOiB1aW50MTZfdCB7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJF
X09QVElPTl9JRCkKK307CisjdW5kZWYgREVDTEFSRV9PUFRJT05fSUQKKworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgSW52YWxpZE9wdGlvbkluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKTsKKwordGVtcGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9wdGlvbklEIGlkPgor
Y29uc3RleHByIHNpemVfdCBvcHRpb25UeXBlU3BlY2lmaWNJbmRleCgpOwogCiBjb25zdGV4cHIg
c2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKQEAgLTUyMiw1ICs1OTgsMjQgQEAg
Y29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucwogCiBjb25zdGV4cHIgc2l6
ZV90IE51bWJlck9mT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8g
bmFtZXNwYWNlIEpTQworY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9uc09m
VHlwZShPcHRpb25UeXBlSUQgdHlwZSkKK3sKKyAgICBzaXplX3QgY291bnQgPSAwOworI2RlZmlu
ZSBDT1VOVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlf
LCBkZXNjcmlwdGlvbl8pIFwKKyAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBc
CisgICAgICAgIGNvdW50Kys7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9PUFRJT04p
OworI3VuZGVmIENPVU5UX09QVElPTgorICAgIHJldHVybiBjb3VudDsKK30KIAorY29uc3RleHBy
IHNpemVfdCBOdW1iZXJPZkJvb2xPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5
cGUoT3B0aW9uVHlwZUlEOjpCb29sKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZVbnNpZ25l
ZE9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OlVu
c2lnbmVkKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZEb3VibGVPcHRpb25zID0gY291bnRO
dW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpEb3VibGUpOworY29uc3RleHBy
IHNpemVfdCBOdW1iZXJPZkludDMyT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZU
eXBlKE9wdGlvblR5cGVJRDo6SW50MzIpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZlNpemVP
cHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpTaXpl
KTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnMgPSBjb3VudE51
bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlKTsKK2NvbnN0
ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zID0gY291bnROdW1iZXJPZkpT
Q09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmcpOworY29uc3RleHByIHNp
emVfdCBOdW1iZXJPZkdDTG9nTGV2ZWxPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNP
ZlR5cGUoT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381142</attachid>
            <date>2019-10-16 17:55:37 -0700</date>
            <delta_ts>2019-10-16 19:53:12 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-202105.patch</filename>
            <type>text/plain</type>
            <size>47255</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxMjE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMyBA
QAorMjAxOS0xMC0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGUgc2l6ZSBvZiB0
aGUgSlNDOjpDb25maWcgbmVlZGVkIHRvIHN0b3JlIHRoZSBPcHRpb25zIGlzIG5vdyByZWR1Y2Vk
IHRvIDRLCisgICAgICAgIGluc3RlYWQgb2YgMTZLLCBlbmFibGVkIGJ5IGNvbnN0ZXhwciB0ZW1w
bGF0ZSBtYWdpYy4KKworICAgICAgICAxLiBJbnN0ZWFkIG9mIGFsbCBvcHRpb25zIGluIGEgbGFy
Z2UgYXJyYXkgb2YgT3B0aW9uRW50cnkgKHdoaWNoIGlzIGEgdW5pb24gb2YKKyAgICAgICAgICAg
YWxsIHRoZSBvcHRpb24gdHlwZXMpLCB3ZSBub3cgaGF2ZSBzZXBhcmF0ZSBhcnJheXMgZm9yIGVh
Y2ggb2YgdGhlIHR5cGVzIG9mCisgICAgICAgICAgIG9wdGlvbnMuICBGb3IgZXhhbXBsZSwKKwor
ICAgICAgICAgICAgICAgIFJlbW92ZWQgZ19qc2NDb25maWcub3B0aW9uc1tdLgorICAgICAgICAg
ICAgICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVCb29sT3B0aW9uc1tdLgorICAgICAgICAgICAg
ICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbXS4KKyAgICAgICAgICAgICAg
ICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlRG91YmxlT3B0aW9uc1tdLgorICAgICAgICAgICAgICAg
IC4uLgorCisgICAgICAgICAgIFdlIHVzZWQgdG8gZmluZCB0aGUgc3RvcmFnZSBmb3IgdGhlIG9w
dGlvbiB1c2luZyBnX2pzY0NvbmZpZy5vcHRpb25zW09wdGlvbnM6OklEXS4KKyAgICAgICAgICAg
V2Ugbm93IGZpbmQgdGhlIHN0b3JhZ2UgZm9yIGVhY2ggdHlwZSBvZiBvcHRpb24gdXNpbmcKKyAg
ICAgICAgICAgZ19qc2NDb25maWcub3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRp
b25UeXBlSUQsIE9wdGlvbklEPigpXS4gIEZvcgorICAgICAgICAgICBleGFtcGxlLCBPcHRpb25z
Ojp1c2VKSVQoKSB1c2VkIHRvIGJlIGltcGxlbWVudGVkIGFzOgorCisgICAgICAgICAgICAgICBp
bmxpbmUgYm9vbCYgT3B0aW9uczo6dXNlSklUKCkKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbT3B0aW9uczo6dXNlSklUSURd
OworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgIC4uLiB3aGljaCBpcyBub3cgcmVwbGFj
ZWQgd2l0aDoKKworICAgICAgICAgICAgICAgaW5saW5lIGJvb2wmIE9wdGlvbnM6OnVzZUpJVCgp
CisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnX2pzY0NvbmZp
Zy50eXBlQm9vbE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpC
b29sLCBPcHRpb25JRDo6dXNlSklUPigpXTsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICBNU1ZDIGhhcyBhIGJ1ZyB3aGVyZSBpdCBjYW5ub3QgaGFuZGxlIHZlcnkgbGFyZ2Ugc291cmNl
IGZpbGVzOiBzZWUKKyAgICAgICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3Vh
bHN0dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21w
aWxlci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5odG1sLgorICAgICAgICAgICBUaGlzIGJ1ZyBw
cmV2ZW50cyB0aGlzIHBhdGNoIGZyb20gYnVpbGRpbmcgb24gTVNWQy4gIFRvIHdvcmthcm91bmQg
dGhpcyBidWcsCisgICAgICAgICAgIHdlIGRvbid0IGlubGluZSB0aGUgT3B0aW9ucyBhY2Nlc3Nv
cnMgd2hlbiBDT01QSUxFUihNU1ZDKS4gIFRoaXMgcHJldmVudHMgTVNWQworICAgICAgICAgICBm
cm9tIGhhdmluZyB0byBwYXJzZSB0aGUgbGFyZ2UgYm9keSBvZiB0ZW1wbGF0ZSBjb2RlIGNvZGUg
dG8gdXNlZCB0byBpbXBsZW1lbnQKKyAgICAgICAgICAgdGhlIGlubGluZSBhY2Nlc3NvcnMgaW4g
ZXZlcnkgZmlsZSB0aGF0ICNpbmNsdWRlICJPcHRpb25zLmgiLgorCisgICAgICAgIDIuIEludHJv
ZHVjZSB0aGUgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXgoKSBjb25zdGV4cHIgdGVtcGxhdGUgZnVu
Y3Rpb24gZm9yCisgICAgICAgICAgIGNvbXB1dGluZyB0aGUgaW5kZXggb2YgZWFjaCBvcHRpb24g
aW4gdGhlaXIgcmVzcGVjdGl2ZSB0eXBlIHNwZWNpZmljIG9wdGlvbnMKKyAgICAgICAgICAgYXJy
YXkuCisKKyAgICAgICAgMy4gSW50cm9kdWNlIE9wdGlvblR5cGVzLCBPcHRpb25UeXBlSUQsIGFu
ZCBPcHRpb25JRC4KKworICAgICAgICAgICBUaGUgT3B0aW9uVHlwZXMgbmFtZXNwYWNlIHJlcGxh
Y2VzIE9wdGlvbkVudHJ5IGFzIHRoZSBjb250YWluZXIgb2Ygb3B0aW9uIHR5cGVzLgorICAgICAg
ICAgICBUaGUgT3B0aW9uSUQgZW51bSBjbGFzcyByZXBsYWNlcyBPcHRpb25zOjpJRC4KKyAgICAg
ICAgICAgVGhlIE9wdGlvblR5cGVJRCBlbnVtIGNsYXNzIGlzIG5ldyBhbmQgaXMgdXNlZCB0b2dl
dGhlciB3aXRoIE9wdGlvbklEIGluCisgICAgICAgICAgICAgICBjb25zdGV4cHIgdGVtcGxhdGVz
IHRvIGNvbXB1dGUgdGhlIHR5cGVTcGVjaWZpY0luZGV4IG9mIG9wdGlvbnMuCisKKyAgICAgICAg
NC4gUmVtb3ZlZCB0aGUgT3B0aW9uRW50cnkgc3RydWN0IGFuZCBPcHRpb25FbnRyeS5oLiAgQWZ0
ZXIgKDEpLCB0aGlzIHN0cnVjdCBpcworICAgICAgICAgICBvbmx5IHVzZWQgaW4gdGhlIE9wdGlv
biBjbGFzcy4gIFdlIGp1c3QgbW92ZWQgdGhlIHVuaW9uIG9mIG9wdGlvbiB0eXBlcyAodGhhdAor
ICAgICAgICAgICBPcHRpb25FbnRyeSBlbWJlZHMpIGludG8gdGhlIE9wdGlvbiBjbGFzcy4KKwor
ICAgICAgICAgICBNb3ZlZCBjbGFzcyBPcHRpb25SYW5nZSBpbnRvIE9wdGlvbnNMaXN0LmguCisK
KyAgICAgICAgNS4gUmVtb3ZlZCB0aGUgbGFyZ2UgT3B0aW9uRW50cnkgYXJyYXlzIGZyb20gSlND
OjpDb25maWcuCisgICAgICAgICAgIEFkZGVkIHR5cGUgc3BlY2lmaWMgb3B0aW9ucyBhcnJheXMu
CisgICAgICAgICAgIEFsc28gb3JkZXJlZCB0aGVzZSBhcnJheXMgdG8gbWF4aW1pemUgY29tcGFj
dG5lc3MgYW5kIG1pbmltaXplIGludGVybmFsIGZyYWdtZW50YXRpb24uCisKKyAgICAgICAgNi4g
Q2hhbmdlZCBzY2FsZUpJVFBvbGljeSgpIHRvIGdvIGRpcmVjdGx5IHRvIGdfanNjQ29uZmlnLnR5
cGVJbnQzMk9wdGlvbnNbXQorICAgICAgICAgICBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggdGhl
IE9wdGlvbiB3cmFwcGVyIG9iamVjdC4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXBsaWZ5CisgICAg
ICAgICAgIHRoaW5ncyBhbmQgbWFrZSB0aGUgT3B0aW9uIGNsYXNzIGEgcmVhZCBvbmx5IGludGVy
ZmFjZSBvZiBvcHRpb25zLgorCisgICAgICAgIDcuIENoYW5nZWQgT3B0aW9uczo6aW5pdGlhbGl6
ZSgpIHRvIG9ubHkgY29tcHV0ZSB0aGUgb3B0aW9uIGRlZmF1bHQgdmFsdWUgb25jZS4KKyAgICAg
ICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBPcHRpb25zTGlzdCBtYXkg
bm90IGFsd2F5cyBiZSBhIGNvbnN0YW50LgorICAgICAgICAgICBTb21ldGltZXMsIGl0IGlzIGEg
ZnVuY3Rpb24gY2FsbC4KKworICAgICAgICA4LiBUaGUgT3B0aW9uIGNsYXNzIG5vdyBvbmx5IGdp
dmVzIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhlIG9wdGlvbnMuCisKKyAgICAgICAgICAgVGhlIE9w
dGlvbiBjbGFzcycgcm9sZSBpcyB0byBwcm92aWRlIGFuIGludGVyZmFjZSBmb3IgcmVhZGluZyBh
biBvcHRpb24gYXQgYW55CisgICAgICAgICAgIGdpdmVuIE9wdGlvbklEIHdpdGhvdXQgZmlyc3Qg
a25vd2luZyBhYm91dCB0aGUgdHlwZSBvZiB0aGUgc3BlY2lmaWMgb3B0aW9uLgorICAgICAgICAg
ICBJdCBpcyB1c2VmdWwgZm9yIGl0ZXJhdGluZyBvcHRpb25zLCBhbmQgaXMgY3VycmVudGx5IG9u
bHkgdXNlZCBieQorICAgICAgICAgICBPcHRpb25zOjpkdW1wT3B0aW9uKCkuCisKKyAgICAgICAg
ICAgVGVjaG5pY2FsbHksIHdlIGNvdWxkIG1lcmdlIGFsbCB0aGUgT3B0aW9uIGNsYXNzIGNvZGUg
aW50byBpdHMgc2luZ2xlIGNsaWVudC4KKyAgICAgICAgICAgV2Ugb3B0ZWQgbm90IHRvIGRvIHRo
aXMgYmVjYXVzZSB0aGUgYW1vdW50IG9mIGNvZGUgaXMgbm9uLXRyaXZpYWwsIGFuZCB0aGUKKyAg
ICAgICAgICAgT3B0aW9uIGNsYXNzIGRvZXMgYSBnb29kIGpvYiBvZiBlbmNhcHN1bGF0aW5nIHRo
aXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEFQSS9nbGliL0pTQ09wdGlvbnMuY3BwOgor
ICAgICAgICAoanNjT3B0aW9uc1NldFZhbHVlKToKKyAgICAgICAgKGpzY09wdGlvbnNHZXRWYWx1
ZSk6CisgICAgICAgIChqc2Nfb3B0aW9uc19mb3JlYWNoKToKKyAgICAgICAgKGpzY19vcHRpb25z
X2dldF9vcHRpb25fZ3JvdXApOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVu
dGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbkVudHJ5Lmg6IFJlbW92
ZWQuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9u
czo6aXNBdmFpbGFibGUpOgorICAgICAgICAoSlNDOjpvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0
aWMpOgorICAgICAgICAoSlNDOjpvcHRpb25UeXBlU3BlY2lmaWNJbmRleCk6CisgICAgICAgIChK
U0M6OnNjYWxlSklUUG9saWN5KToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlRGVwZW5kZW50T3B0
aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMpOgorICAgICAgICAoSlNDOjpPcHRpb25z
OjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgor
ICAgICAgICAoSlNDOjpPcHRpb246Ok9wdGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZGVm
YXVsdE9wdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6aWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246OmRlc2NyaXB0
aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjp0eXBlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6T3B0aW9uOjphdmFpbGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246
OmlzT3ZlcnJpZGRlbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjppZEluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6b3B0aW9u
VHlwZVNwZWNpZmljSW5kZXgpOgorICAgICAgICAoSlNDOjpPcHRpb246OmRlZmF1bHRPcHRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OmJvb2xWYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpPcHRpb246OnVuc2lnbmVkVmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6T3B0aW9uOjpkb3VibGVWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246
OmludDMyVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZh
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpnY0xvZ0xldmVsVmFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdl
OjpvcGVyYXRvcj0gKToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmFuZ2U6OnJhbmdlU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Y291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUpOgorCiAy
MDE5LTEwLTE2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgYXNzZXJ0IGluIFdhc206OlBsYW46OmZhaWwuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw3ICs5MjAsNiBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9PYmpl
Y3RJbml0aWFsaXphdGlvblNjb3BlLmgKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5oCiAg
ICAgcnVudGltZS9PcGVyYXRpb25zLmgKLSAgICBydW50aW1lL09wdGlvbkVudHJ5LmgKICAgICBy
dW50aW1lL09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaAogICAgIHJ1bnRpbWUv
UGFyc2VJbnQuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NP
cHRpb25zLmNwcAkocmV2aXNpb24gMjUxMjE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAg
c3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNTZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBTRVRf
T1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5Xywg
ZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0
eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGlmICghdmFsdWVGcm9tR1ZhbHVlKHZhbHVlLCB2YWx1ZVRv
U2V0KSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IE9wdGlvbnM6Om5hbWVfKCkgPSB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNH
ZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBHRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywg
ZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFn
X3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6
bmFtZV8oKTsgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1
ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCiAgICAgICAgIHZhbHVl
VG9HVmFsdWUodmFsdWVUb0dldCwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIHJldHVybiBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtNjE2LDggKzYxNiw4IEBAIHZvaWQganNj
X29wdGlvbnNfZm9yZWFjaChKU0NPcHRpb25zRnVuYyAKIAogI2RlZmluZSBWSVNJVF9PUFRJT04o
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IFwKICAgICBpZiAoT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlv
bnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFi
bGUoT3B0aW9uczo6bmFtZV8jI0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0
eV8pKSB7IFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFi
bGUoT3B0aW9uSUQ6Om5hbWVfLCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8p
KSB7IFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIGRlZmF1bHRWYWx1ZSB7IH07ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgYXV0byBvcHRpb25UeXBlID0ganNjT3B0
aW9uc1R5cGUoZGVmYXVsdFZhbHVlKTsgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKGZ1
bmN0aW9uICgjbmFtZV8sIG9wdGlvblR5cGUsIGRlc2NyaXB0aW9uXywgdXNlckRhdGEpKSAgICAg
IFwKICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTY2Niw3ICs2NjYsNyBAQCBHT3B0aW9uR3JvdXAqIGpz
Y19vcHRpb25zX2dldF9vcHRpb25fZ3JvCiAgICAgR0FycmF5KiBlbnRyaWVzID0gZ19hcnJheV9u
ZXcoVFJVRSwgVFJVRSwgc2l6ZW9mKEdPcHRpb25FbnRyeSkpOwogI2RlZmluZSBSRUdJU1RFUl9P
UFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKICAgICBpZiAoT3B0aW9uczo6QXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfID09
IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsIFwKLSAgICAgICAgfHwgT3B0aW9uczo6aXNB
dmFpbGFibGUoT3B0aW9uczo6bmFtZV8jI0lELCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWls
YWJpbGl0eV8pKSB7IFwKKyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6
Om5hbWVfLCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBuYW1lKGdfc3RyZHVwX3ByaW50ZigianNjLSVzIiwgI25hbWVf
KSk7ICAgICAgIFwKICAgICAgICAgZW50cmllcyA9IGdfYXJyYXlfc2V0X3NpemUoZW50cmllcywg
ZW50cmllcy0+bGVuICsgMSk7IFwKICAgICAgICAgR09wdGlvbkVudHJ5KiBlbnRyeSA9ICZnX2Fy
cmF5X2luZGV4KGVudHJpZXMsIEdPcHRpb25FbnRyeSwgZW50cmllcy0+bGVuIC0gMSk7IFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTEyMTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTg3Miw3ICsxODcyLDYgQEAKIAkJRkUzMDIyRDcxRTQyODU3
MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3Iu
aCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAv
KiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUx
QjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4
NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3
MDgwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTA3Myw3ICs1MDcy
LDYgQEAKIAkJRkUzNUMyRkEyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wdGlvbnMucmIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3B0aW9ucy5yYjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUzNUMyRkIyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wY29kZUdyb3VwLnJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wY29kZUdyb3VwLnJiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGQzIxQjFFNkM3MDAwRjRDQTggLyogTWV0YWRh
dGEucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gTWV0YWRhdGEucmI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBP
cHRpb25FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25FbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0
aW9uc0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTczODIsNyArNzM4MCw2IEBACiAJCQkJRTM5RUVBRjIyMjgxMjQ0QzAwODQ3NEY0IC8qIE9i
amVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCiAJCQkJRjY5MkE4
NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2OTJBODc4MDI1
NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCi0JCQkJRkUzODQyMzAyMzI0RDUxQTAw
OURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi8sCiAJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4
IC8qIE9wdGlvbnMuY3BwICovLAogCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRp
b25zLmggKi8sCiAJCQkJRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0Lmgg
Ki8sCkBAIC05OTA1LDcgKzk5MDIsNiBAQAogCQkJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAv
KiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThF
IC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDgwRTE2RjVD
RDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzg0MjMyMjMy
NEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMjI4
RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0
MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTM1Njk4NzIyMjg0MTE4NzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQdHIuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHJldmlz
aW9uIDI1MTIxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiT3B0aW9uRW50cnkuaCIKICNpbmNsdWRlICJPcHRpb25zTGlzdC5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMzYsMTIgKzM1LDEyIEBAIGNsYXNzIEZpeGVkVk1Q
b29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKIAogI2lmIENQVShBUk02NCkgfHwgUExBVEZPUk0oV0FU
Q0hPUykKIGNvbnN0ZXhwciBzaXplX3QgUGFnZVNpemUgPSAxNiAqIEtCOworY29uc3RleHByIHNp
emVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMSAqIFBhZ2VTaXplOwogI2Vsc2UKIGNvbnN0ZXhw
ciBzaXplX3QgUGFnZVNpemUgPSA0ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVU
b1Byb3RlY3QgPSAxICogUGFnZVNpemU7CiAjZW5kaWYKIAotY29uc3RleHByIHNpemVfdCBDb25m
aWdTaXplVG9Qcm90ZWN0ID0gMzIgKiBLQjsKLQogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVB
UCkKIHVzaW5nIEpJVFdyaXRlU2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3Qs
IGNvbnN0IHZvaWQqLCBzaXplX3QpOwogI2VuZGlmCkBAIC04Miw4ICs4MSwyOSBAQCBzdHJ1Y3Qg
Q29uZmlnIHsKICAgICAgICAgICAgIGJvb2wgdXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2Vu
ZGlmCiAKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsK
LSAgICAgICAgICAgIE9wdGlvbkVudHJ5IGRlZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107
CisgICAgICAgICAgICBib29sIHR5cGVCb29sT3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRpb25zXTsK
KyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRp
b25zXTsKKworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCB0eXBlR0NMb2dMZXZlbE9wdGlv
bnNbTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9uc107CisgICAgICAgICAgICBHQ0xvZ2dpbmc6Okxl
dmVsIHR5cGVHQ0xvZ0xldmVsRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9u
c107CisKKyAgICAgICAgICAgIGludDMyX3QgdHlwZUludDMyT3B0aW9uc1tOdW1iZXJPZkludDMy
T3B0aW9uc107CisgICAgICAgICAgICBpbnQzMl90IHR5cGVJbnQzMkRlZmF1bHRPcHRpb25zW051
bWJlck9mSW50MzJPcHRpb25zXTsKKworICAgICAgICAgICAgdW5zaWduZWQgdHlwZVVuc2lnbmVk
T3B0aW9uc1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisgICAgICAgICAgICB1bnNpZ25lZCB0
eXBlVW5zaWduZWREZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisKKyAg
ICAgICAgICAgIGRvdWJsZSB0eXBlRG91YmxlT3B0aW9uc1tOdW1iZXJPZkRvdWJsZU9wdGlvbnNd
OworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkRv
dWJsZU9wdGlvbnNdOworCisgICAgICAgICAgICBzaXplX3QgdHlwZVNpemVPcHRpb25zW051bWJl
ck9mU2l6ZU9wdGlvbnNdOworICAgICAgICAgICAgc2l6ZV90IHR5cGVTaXplRGVmYXVsdE9wdGlv
bnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVP
cHRpb25TdHJpbmdPcHRpb25zW051bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9uc107CisgICAgICAg
ICAgICBjb25zdCBjaGFyKiB0eXBlT3B0aW9uU3RyaW5nRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZP
cHRpb25TdHJpbmdPcHRpb25zXTsKKworICAgICAgICAgICAgT3B0aW9uUmFuZ2UgdHlwZU9wdGlv
blJhbmdlT3B0aW9uc1tOdW1iZXJPZk9wdGlvblJhbmdlT3B0aW9uc107CisgICAgICAgICAgICBP
cHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblJh
bmdlT3B0aW9uc107CiAgICAgICAgIH07CiAgICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25maWdT
aXplVG9Qcm90ZWN0XTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25FbnRyeS5oCShyZXZpc2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCShub25leGlzdGVudCkKQEAgLTEsODQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRpb25SYW5nZSB7Ci1wcml2YXRlOgot
ICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJ
bnZlcnRlZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGlu
dCYgcmhzKQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCi0gICAgICAg
IGlmICghcmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKLSAgICAg
ICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7Ci0g
ICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7Ci0gICAgYm9vbCBpc0lu
UmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdl
U3RyOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKLQot
ICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwot
ICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Ci19Owot
Ci0vLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVlOgotdW5pb24gT3B0aW9uRW50cnkg
ewotICAgIHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5nIFVuc2lnbmVkID0gdW5zaWduZWQ7
Ci0gICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVzaW5nIEludDMyID0gaW50MzJfdDsK
LSAgICB1c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5nIE9wdGlvblJhbmdlID0gSlNDOjpP
cHRpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcgPSBjb25zdCBjaGFyKjsKLSAgICB1
c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsKLQotICAgIGJvb2wgdmFsQm9vbDsK
LSAgICB1bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3VibGUgdmFsRG91YmxlOwotICAgIGlu
dDMyX3QgdmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7Ci0gICAgT3B0aW9uUmFuZ2UgdmFs
T3B0aW9uUmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0aW9uU3RyaW5nOwotICAgIEdDTG9n
Z2luZzo6TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1
MTIxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hh
ciogc3RyaW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBPcHRpb25zOjppc0F2
YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0
eSkKK2Jvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQgaWQsIE9wdGlvbnM6OkF2YWls
YWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2YWlsYWJpbGl0eSA9PSBBdmFpbGFi
aWxpdHk6OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy5yZXN0cmljdGVk
T3B0aW9uc0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBAQCBib29sIE9wdGlvbnM6OmlzQXZh
aWxhYmxlKE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5VU0VEX1BBUkFNKGlkKTsKICNpZiAh
ZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNpbmdsZUFsbG9jYXRpb25TaXplSUQp
CisgICAgaWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKGlkID09IHVz
ZVNpZ2lsbENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnVzZVNpZ2ls
bENyYXNoQW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEFTU0VNQkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlkID09IGxvZ0pJVENvZGVGb3JQZXJm
SUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRDb2RlRm9yUGVyZikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0gdHJhY2VMTEludEV4ZWN1dGlvbklE
KQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTEludEV4ZWN1dGlvbikKICAgICAgICAg
cmV0dXJuICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQgPT0gdHJhY2VMTEludFNsb3dQYXRo
SUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50U2xvd1BhdGgpCiAgICAgICAg
IHJldHVybiAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMoVCYgdmFyaWFi
bGUsIE9wdGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxp
dHkgYXZhaWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMoVCYgdmFy
aWFibGUsIE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxp
dHkgYXZhaWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxhYmxlID0gKGF2YWlsYWJpbGl0eSA9
PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAgICAgICAgfHwgT3B0aW9uczo6aXNB
dmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIsMTAgKzI4Miw0NSBAQCB2b2lkIE9w
dGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgb3V0LnByaW50KG1fcmFuZ2VT
dHJpbmcpOwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIE1TVkMncyBp
bmFiaWxpdHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCisvLyBPbmNlIHRoZSBNU1ZDIGJ1ZyBo
YXMgYmVlbiBmaXhlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIHNuaXBwZXQgb2YgY29kZSBhbmQKKy8v
IG1ha2UgaXRzIGNvdW50ZXJwYXJ0IGluIE9wdGlvbnMuaCB1bmNvbmRpdGlvbmFsLgorLy8gU2Vl
IGh0dHBzOi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20vY29udGVudC9wcm9i
bGVtLzY1MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxlci1pcy1vdXQtb2YtaGVhcC1zcGFj
ZS1pbi5odG1sCisjaWYgQ09NUElMRVIoTVNWQykKKwordGVtcGxhdGU8T3B0aW9uVHlwZUlEIHR5
cGUsIE9wdGlvbklEIGlkPgorY29uc3RleHByIHNpemVfdCBvcHRpb25UeXBlU3BlY2lmaWNJbmRl
eCgpCit7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyNkZWZpbmUgQ09VTlRfSU5ERVhfQU5EX0ZJ
TkRfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNj
cmlwdGlvbl8pIFwKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om5hbWVfKSBcCisgICAgICAgIHJl
dHVybiBpbmRleDsgXAorICAgIGlmICh0eXBlID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwKKyAg
ICAgICAgaW5kZXgrKzsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfSU5ERVhfQU5E
X0ZJTkRfTUFUQ0gpOworI3VuZGVmIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENICisgICAgcmV0
dXJuIEludmFsaWRPcHRpb25JbmRleDsKK30KKworI2RlZmluZSBERUZJTkVfT1BUSU9OX0FDQ0VT
U09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9u
czo6bmFtZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0
eXBlXyMjT3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVf
LCBPcHRpb25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAgIEpTX0VYUE9SVF9QUklWQVRF
IE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCisgICAgeyBc
CisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNb
b3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5h
bWVfPigpXTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05f
QUNDRVNTT1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCisKKyNlbmRpZiAvLyBD
T01QSUxFUihNU1ZDKQorCiAvLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0
aW9uczoKLWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW09w
dGlvbnM6Om51bWJlck9mT3B0aW9uc10gPSB7Citjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0
aW9uczo6c19vcHRpb25zSW5mb1tOdW1iZXJPZk9wdGlvbnNdID0gewogI2RlZmluZSBGSUxMX09Q
VElPTl9JTkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVz
Y3JpcHRpb25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uczo6VHlwZTo6
dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyB9LAorICAgIHsgI25hbWVfLCBkZXNj
cmlwdGlvbl8sIE9wdGlvblR5cGVJRDo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5
Xywgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6
Om5hbWVfPigpIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihGSUxMX09QVElPTl9JTkZPKQog
I3VuZGVmIEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0yOTksMjYgKzMzNCwyNSBAQCBzdGF0aWMg
dm9pZCBzY2FsZUpJVFBvbGljeSgpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMC4wOwogCiAgICAg
c3RydWN0IE9wdGlvblRvU2NhbGUgewotICAgICAgICBPcHRpb25zOjpJRCBpZDsKKyAgICAgICAg
c2l6ZV90IGluZGV4OwogICAgICAgICBpbnQzMl90IG1pblZhbDsKICAgICB9OwogCiAgICAgc3Rh
dGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2NhbGVbXSA9IHsKLSAgICAgICAgeyBP
cHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElELCAwIH0sCi0gICAgICAgIHsgT3B0
aW9uczo6dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhy
ZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJRCwgMSB9LAotICAgICAgICB7IE9w
dGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAxIH0sCi0gICAgICAgIHsgT3B0aW9u
czo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIgfSwKLSAgICAgICAgeyBPcHRpb25z
Ojp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIDIgfQorICAgICAgICB7IG9w
dGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJl
c2hvbGRGb3JKSVRBZnRlcldhcm1VcD4oKSwgMCB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVj
aWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRT
b29uPigpLCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlw
ZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA+KCks
IDEgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6Oklu
dDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA+KCksIDEg
fSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMy
LCBPcHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29uPigpLCAxIH0sCisgICAgICAgIHsg
b3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRo
cmVzaG9sZEZvckZUTE9wdGltaXplU29vbj4oKSwgMiB9LAorICAgICAgICB7IG9wdGlvblR5cGVT
cGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JG
VExPcHRpbWl6ZUFmdGVyV2FybVVwPigpLCAyIH0sCiAgICAgfTsKIAotICAgIGNvbnN0IGludCBu
dW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlvbnNUb1NjYWxlKSAvIHNpemVvZihP
cHRpb25Ub1NjYWxlKTsKKyAgICBjb25zdGV4cHIgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUg
PSBzaXplb2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZTsgaSsrKSB7Ci0gICAgICAg
IE9wdGlvbiBvcHRpb24ob3B0aW9uc1RvU2NhbGVbaV0uaWQpOwotICAgICAgICBBU1NFUlQob3B0
aW9uLnR5cGUoKSA9PSBPcHRpb25zOjpUeXBlOjpJbnQzMik7Ci0gICAgICAgIG9wdGlvbi5pbnQz
MlZhbCgpICo9IHNjYWxlRmFjdG9yOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSA9IHN0ZDo6
bWF4KG9wdGlvbi5pbnQzMlZhbCgpLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOworICAgICAg
ICBpbnQzMl90JiBvcHRpb25WYWx1ZSA9IGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbb3B0
aW9uc1RvU2NhbGVbaV0uaW5kZXhdOworICAgICAgICBvcHRpb25WYWx1ZSAqPSBzY2FsZUZhY3Rv
cjsKKyAgICAgICAgb3B0aW9uVmFsdWUgPSBzdGQ6Om1heChvcHRpb25WYWx1ZSwgb3B0aW9uc1Rv
U2NhbGVbaV0ubWluVmFsKTsKICAgICB9CiB9CiAKQEAgLTQ0MSw3ICs0NzUsNyBAQCBzdGF0aWMg
dm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNv
bmN1cnJlbnRHQygpKQogICAgICAgICBPcHRpb25zOjpjb2xsZWN0Q29udGludW91c2x5KCkgPSBm
YWxzZTsKIAotICAgIGlmIChPcHRpb24oT3B0aW9uczo6aml0UG9saWN5U2NhbGVJRCkuaXNPdmVy
cmlkZGVuKCkpCisgICAgaWYgKE9wdGlvbihPcHRpb25JRDo6aml0UG9saWN5U2NhbGUpLmlzT3Zl
cnJpZGRlbigpKQogICAgICAgICBzY2FsZUpJVFBvbGljeSgpOwogICAgIAogICAgIGlmIChPcHRp
b25zOjpmb3JjZUVhZ2VyQ29tcGlsYXRpb24oKSkgewpAQCAtNTIyLDkgKzU1NiwxMSBAQCB2b2lk
IE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgQ29uZmlnOjplbmFibGVSZXN0cmlj
dGVkT3B0aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2Yg
dGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgSU5JVF9PUFRJ
T04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlv
bl8pIFwKLSAgICAgICAgICAgIG5hbWVfKCkgPSBkZWZhdWx0VmFsdWVfOyBcCi0gICAgICAgICAg
ICBuYW1lXyMjRGVmYXVsdCgpID0gZGVmYXVsdFZhbHVlXzsKKyNkZWZpbmUgSU5JVF9PUFRJT04o
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IHsgXAorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVfOyBcCisgICAg
ICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCisgICAgICAgICAgICAgICAgbmFtZV8jI0Rl
ZmF1bHQoKSA9IHZhbHVlOyBcCisgICAgICAgICAgICB9CiAgICAgICAgICAgICBGT1JfRUFDSF9K
U0NfT1BUSU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRfT1BUSU9OCiAKQEAgLTU0OCw3ICs1
ODQsNyBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgIENSQVNI
KCk7CiAjZWxzZSAvLyBQTEFURk9STShDT0NPQSkKICNkZWZpbmUgT1ZFUlJJREVfT1BUSU9OX1dJ
VEhfSEVVUklTVElDUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8s
IGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGlj
KG5hbWVfKCksIG5hbWVfIyNJRCwgIkpTQ18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFi
aWxpdHlfKTsKKyAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1lXygp
LCBPcHRpb25JRDo6bmFtZV8sICJKU0NfIiAjbmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmls
aXR5Xyk7CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKE9WRVJSSURFX09QVElPTl9X
SVRIX0hFVVJJU1RJQ1MpCiAjdW5kZWYgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUwog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtNzI3LDE2ICs3NjMsMTUgQEAgYm9vbCBPcHRp
b25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogCiAgICAgY29uc3QgY2hhciogdmFsdWVT
dHIgPSBlcXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRo
ZSBzcGVjaWZ5IGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKKyAgICAvLyBGb3Ig
ZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXJnIGlzIGEgbWF0Y2guIElmIHNv
LCBzZXQgdGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1ZSBtYWtlcyBzZW5zZS4gT3RoZXJ3aXNl
LCBtb3ZlIG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9wdGlvbi4KICNkZWZpbmUgU0VUX09QVElP
Tl9JRl9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRl
c2NyaXB0aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25hbWVfKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVxdWFsU3RyIC0gYXJnKSAgICAgIFwKICAgICAgICAgJiYgIXN0cm5jbXAoYXJnLCAjbmFt
ZV8sIGVxdWFsU3RyIC0gYXJnKSkgeyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgIFwKLSAg
ICAgICAgICAgICYmICFpc0F2YWlsYWJsZShuYW1lXyMjSUQsIEF2YWlsYWJpbGl0eTo6YXZhaWxh
YmlsaXR5XykpIFwKKyAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBB
dmFpbGFiaWxpdHk6Ok5vcm1hbCAgICBcCisgICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUoT3B0
aW9uSUQ6Om5hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBPcHRpb25FbnRyeTo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVlXyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2
YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBib29sIHN1
Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgICBuYW1lXygpID0gdmFsdWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApAQCAtODE2LDEwICs4NTEsMTAgQEAgdm9pZCBPcHRpb25z
OjpkdW1wQWxsT3B0aW9ucyhTdHJpbmdCdWlsZAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4n
KTsKICAgICB9CiAKLSAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBp
ZCsrKSB7CisgICAgZm9yIChzaXplX3QgaWQgPSAwOyBpZCA8IE51bWJlck9mT3B0aW9uczsgaWQr
KykgewogICAgICAgICBpZiAoc2VwYXJhdG9yICYmIGlkKQogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3Rh
dGljX2Nhc3Q8SUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0
c09wdGlvbik7CisgICAgICAgIGR1bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0
PE9wdGlvbklEPihpZCksIG9wdGlvbkhlYWRlciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNP
cHRpb24pOwogICAgIH0KIH0KIApAQCAtODM1LDEwICs4NzAsMTAgQEAgdm9pZCBPcHRpb25zOjpk
dW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJlYQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgT3B0aW9uczo6ZHVtcE9w
dGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbnM6OklE
IGlkLAordm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1
bXBMZXZlbCBsZXZlbCwgT3B0aW9uSUQgaWQsCiAgICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25z
dCBjaGFyKiBmb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbiBkdW1wRGVmYXVsdHNPcHRpb24pCiB7
Ci0gICAgaWYgKGlkID49IG51bWJlck9mT3B0aW9ucykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihpZCkgPj0gTnVtYmVyT2ZPcHRpb25zKQogICAgICAgICByZXR1cm47IC8vIElsbGVnYWwg
b3B0aW9uLgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7CkBAIC04ODAsMjkgKzkxNSw3MSBAQCB2
b2lkIE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7
CiB9CiAKK09wdGlvbjo6T3B0aW9uKE9wdGlvbklEIGlkKQorICAgIDogbV9pZChpZCkKK3sKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNp
Z25lZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5
cGVTcGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRp
b25zSW5mb1tpbmRleF0udHlwZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworCisjZGVmaW5lIEhB
TkRMRV9DQVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpP
cHRpb25UeXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJP
ZiMjT3B0aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAgIG1fdmFsIyNPcHRpb25UeXBlXyA9
IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4
XTsgXAorICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5E
TEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0KK30KKworY29uc3QgT3B0aW9uIE9w
dGlvbjo6ZGVmYXVsdE9wdGlvbigpIGNvbnN0Cit7CisgICAgT3B0aW9uIHJlc3VsdDsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNpZ25l
ZCB0eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVT
cGVjaWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25z
SW5mb1tpbmRleF0udHlwZTsKKworICAgIHJlc3VsdC5tX2lkID0gbV9pZDsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8pIFwKKyAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwKKyAgICAgICAgQVNTRVJUKHR5cGVT
cGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAorICAgICAg
ICByZXN1bHQubV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0aW9uVHlw
ZV8jI0RlZmF1bHRPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBicmVhazsK
KworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRlZiBIQU5E
TEVfQ0FTRQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIE9wdGlvbjo6ZHVt
cChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7
Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAgICAgICBidWlsZGVyLmFwcGVuZCht
X2VudHJ5LnZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJ
RDo6Qm9vbDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92YWxCb29sID8gInRydWUiIDogImZh
bHNlIik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsVW5zaWduZWQpOworICAg
IGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV92YWxVbnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlw
ZTo6U2l6ZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxTaXplKTsK
KyAgICBjYXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV92YWxTaXplKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpE
b3VibGU6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9lbnRy
eS52YWxEb3VibGUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpEb3VibGU6CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92YWxEb3VibGUpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX2VudHJ5LnZhbEludDMyKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6SW50
MzI6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsSW50MzIpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAgICAgICBidWls
ZGVyLmFwcGVuZChtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkpOworICAgIGNh
c2UgT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92
YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBP
cHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6IHsKLSAgICAgICAgY29uc3QgY2hhciogb3B0aW9u
ID0gbV9lbnRyeS52YWxPcHRpb25TdHJpbmc7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlv
blN0cmluZzogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX3ZhbE9wdGlvblN0cmlu
ZzsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24gPSAiIjsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyInKTsKQEAgLTkxMCw4ICs5ODcsOCBAQCB2b2lkIE9wdGlvbjo6
ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2
ZWw6IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1f
ZW50cnkudmFsR0NMb2dMZXZlbCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVs
OiB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX3Zh
bEdDTG9nTGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTkyMCwyMyAr
OTk3LDIzIEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIKIGJvb2wg
T3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc3dp
dGNoICh0eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbEJvb2wgPT0gb3RoZXIubV9lbnRyeS52YWxCb29sOwotICAgIGNhc2Ug
T3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbFVuc2ln
bmVkID09IG90aGVyLm1fZW50cnkudmFsVW5zaWduZWQ7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpTaXplOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxTaXplID09IG90aGVyLm1fZW50cnku
dmFsU2l6ZTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgcmV0dXJu
IChtX2VudHJ5LnZhbERvdWJsZSA9PSBvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkgfHwgKHN0ZDo6
aXNuYW4obV9lbnRyeS52YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV9lbnRyeS52YWxE
b3VibGUpKTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICByZXR1cm4g
bV9lbnRyeS52YWxJbnQzMiA9PSBvdGhlci5tX2VudHJ5LnZhbEludDMyOwotICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlv
blJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5n
ZVN0cmluZygpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOgotICAgICAg
ICByZXR1cm4gKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fZW50cnkudmFsT3B0
aW9uU3RyaW5nKQotICAgICAgICAgICAgfHwgKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmIG90
aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV9lbnRyeS52YWxPcHRpb25T
dHJpbmcsIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKSk7Ci0gICAgY2FzZSBPcHRpb25z
OjpUeXBlOjpHQ0xvZ0xldmVsOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xldmVs
ID09IG90aGVyLm1fZW50cnkudmFsR0NMb2dMZXZlbDsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6
Qm9vbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsQm9vbCA9PSBvdGhlci5tX3ZhbEJvb2w7CisgICAg
Y2FzZSBPcHRpb25UeXBlSUQ6OlVuc2lnbmVkOgorICAgICAgICByZXR1cm4gbV92YWxVbnNpZ25l
ZCA9PSBvdGhlci5tX3ZhbFVuc2lnbmVkOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpTaXplOgor
ICAgICAgICByZXR1cm4gbV92YWxTaXplID09IG90aGVyLm1fdmFsU2l6ZTsKKyAgICBjYXNlIE9w
dGlvblR5cGVJRDo6RG91YmxlOgorICAgICAgICByZXR1cm4gKG1fdmFsRG91YmxlID09IG90aGVy
Lm1fdmFsRG91YmxlKSB8fCAoc3RkOjppc25hbihtX3ZhbERvdWJsZSkgJiYgc3RkOjppc25hbihv
dGhlci5tX3ZhbERvdWJsZSkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAg
ICAgcmV0dXJuIG1fdmFsSW50MzIgPT0gb3RoZXIubV92YWxJbnQzMjsKKyAgICBjYXNlIE9wdGlv
blR5cGVJRDo6T3B0aW9uUmFuZ2U6CisgICAgICAgIHJldHVybiBtX3ZhbE9wdGlvblJhbmdlLnJh
bmdlU3RyaW5nKCkgPT0gb3RoZXIubV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOworICAg
IGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6CisgICAgICAgIHJldHVybiAobV92YWxP
cHRpb25TdHJpbmcgPT0gb3RoZXIubV92YWxPcHRpb25TdHJpbmcpCisgICAgICAgICAgICB8fCAo
bV92YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV92YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcCht
X3ZhbE9wdGlvblN0cmluZywgb3RoZXIubV92YWxPcHRpb25TdHJpbmcpKTsKKyAgICBjYXNlIE9w
dGlvblR5cGVJRDo6R0NMb2dMZXZlbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsR0NMb2dMZXZlbCA9
PSBvdGhlci5tX3ZhbEdDTG9nTGV2ZWw7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI1MTIx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5j
bHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtNTMsMzkgKzUyLDE5IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW4KIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBEdW1wTGV2
ZWwgeworICAgIGVudW0gY2xhc3MgRHVtcExldmVsIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUg
PSAwLAogICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBBbGwsCiAgICAgICAgIFZlcmJvc2UK
ICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgeworICAgIGVudW0gY2xhc3Mg
QXZhaWxhYmlsaXR5IDogdWludDhfdCB7CiAgICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJl
c3RyaWN0ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJsZQogICAgIH07CiAKLSNkZWZpbmUgREVDTEFS
RV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBk
ZXNjcmlwdGlvbl8pIFwKLSAgICBuYW1lXyMjSUQsCi0KLSAgICBlbnVtIElEIHsKLSAgICAgICAg
Rk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKLSAgICAgICAgbnVtYmVyT2ZP
cHRpb25zCi0gICAgfTsKLSN1bmRlZiBERUNMQVJFX09QVElPTl9JRAotCi0gICAgZW51bSBjbGFz
cyBUeXBlIHsKLSAgICAgICAgQm9vbCwKLSAgICAgICAgVW5zaWduZWQsCi0gICAgICAgIERvdWJs
ZSwKLSAgICAgICAgSW50MzIsCi0gICAgICAgIFNpemUsCi0gICAgICAgIE9wdGlvblJhbmdlLAot
ICAgICAgICBPcHRpb25TdHJpbmcsCi0gICAgICAgIEdDTG9nTGV2ZWwsCi0gICAgfTsKLQogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIFBh
cnNlcyBhIHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3Jt
YXQgIi0tPG9wdGlvbk5hbWU+PTx2YWx1ZT4iCkBAIC0xMDEsMTQgKzgwLDIxIEBAIHB1YmxpYzoK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hl
cmVudCgpOwogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8s
IGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8oKSB7IHJldHVybiBnX2pz
Y0NvbmZpZy5vcHRpb25zW25hbWVfIyNJRF0udmFsIyN0eXBlXzsgfSAgXAotICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKSB7IHJldHVy
biBnX2pzY0NvbmZpZy5kZWZhdWx0T3B0aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0KKy8v
IEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVNWQydzIGluYWJpbGl0eSB0byBoYW5k
bGUgbGFyZ2Ugc291cmNlcy4KKy8vIFNlZSBodHRwczovL2RldmVsb3BlcmNvbW11bml0eS52aXN1
YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS82NTMzMDEvZmF0YWwtZXJyb3ItYzEwMDItY29t
cGlsZXItaXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4uaHRtbAorI2lmIENPTVBJTEVSKE1TVkMpCisj
ZGVmaW5lIE9QVElPTl9BQ0NFU1NPUl9MSU5LQUdFIEpTX0VYUE9SVF9QUklWQVRFCisjZWxzZQor
I2RlZmluZSBPUFRJT05fQUNDRVNTT1JfTElOS0FHRSBBTFdBWVNfSU5MSU5FCisjZW5kaWYKIAor
I2RlZmluZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFs
dWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBPUFRJT05fQUNDRVNTT1Jf
TElOS0FHRSBzdGF0aWMgT3B0aW9uVHlwZXM6OnR5cGVfJiBuYW1lXygpOyBcCisgICAgT1BUSU9O
X0FDQ0VTU09SX0xJTktBR0Ugc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8jI0RlZmF1
bHQoKTsKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykK
ICN1bmRlZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKIAotICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKE9w
dGlvbklELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRlOgogCkBAIC0xMTYsOCArMTAyLDkgQEAg
cHJpdmF0ZToKICAgICBzdHJ1Y3QgRW50cnlJbmZvIHsKICAgICAgICAgY29uc3QgY2hhciogbmFt
ZTsKICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247Ci0gICAgICAgIFR5cGUgdHlwZTsK
KyAgICAgICAgT3B0aW9uVHlwZUlEIHR5cGU7CiAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFi
aWxpdHk7CisgICAgICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4OwogICAgIH07CiAKICAg
ICBPcHRpb25zKCk7CkBAIC0xMjksMTIyICsxMTYsODkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlv
bnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCiAgICAgICAg
IGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBj
aGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7Ci0gICAgc3RhdGljIHZvaWQg
ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBJRCwKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAogICAgICAg
ICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVt
cERlZmF1bHRzT3B0aW9uKTsKIAogICAgIHN0YXRpYyBib29sIHNldE9wdGlvbldpdGhvdXRBbGlh
cyhjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29sIHNldEFsaWFzZWRPcHRpb24oY29u
c3QgY2hhciogYXJnKTsKICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRo
SGV1cmlzdGljKGNvbnN0IGNoYXIqIG5hbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5m
byBzX29wdGlvbnNJbmZvW251bWJlck9mT3B0aW9uc107CisgICAgc3RhdGljIGNvbnN0IEVudHJ5
SW5mbyBzX29wdGlvbnNJbmZvW051bWJlck9mT3B0aW9uc107CiAKICAgICBmcmllbmQgY2xhc3Mg
T3B0aW9uOwogfTsKIAogY2xhc3MgT3B0aW9uIHsKIHB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9u
czo6SUQgaWQpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29u
ZmlnLm9wdGlvbnNbbV9pZF0pCi0gICAgewotICAgIH0KLSAgICAKKyAgICBPcHRpb24oT3B0aW9u
SUQpOworCiAgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KICAgICAKLSAgICBPcHRpb25zOjpJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAg
ICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24o
KSBjb25zdDsKLSAgICBPcHRpb25zOjpUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpB
dmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4o
KSBjb25zdDsKKyAgICBPcHRpb25JRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBj
b25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tp
ZEluZGV4KCldLm5hbWU7IH0KKyAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsg
cmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS5kZXNjcmlwdGlvbjsgfQor
ICAgIE9wdGlvblR5cGVJRCB0eXBlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25z
SW5mb1tpZEluZGV4KCldLnR5cGU7IH0KKyAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxh
YmlsaXR5KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCld
LmF2YWlsYWJpbGl0eTsgfQorICAgIGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4g
KnRoaXMgIT0gZGVmYXVsdE9wdGlvbigpOyB9CiAgICAgY29uc3QgT3B0aW9uIGRlZmF1bHRPcHRp
b24oKSBjb25zdDsKLSAgICAKLSAgICBib29sJiBib29sVmFsKCk7Ci0gICAgdW5zaWduZWQmIHVu
c2lnbmVkVmFsKCk7Ci0gICAgZG91YmxlJiBkb3VibGVWYWwoKTsKLSAgICBpbnQzMl90JiBpbnQz
MlZhbCgpOwotICAgIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlVmFsKCk7Ci0gICAgY29uc3QgY2hh
ciogb3B0aW9uU3RyaW5nVmFsKCk7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZh
bCgpOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBk
ZWZhdWx0IE9wdGlvbnMuCi0gICAgT3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25FbnRyeSYg
ZW50cnkpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQotICAg
IHsKLSAgICB9Ci0gICAgCi0gICAgT3B0aW9uczo6SUQgbV9pZDsKLSAgICBPcHRpb25FbnRyeSYg
bV9lbnRyeTsKLX07CiAKLWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19CisjZGVm
aW5lIERFQ0xBUkVfQUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFs
IyNPcHRpb25UeXBlXygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAg
IEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xB
UkVfQUNDRVNTT1IKIAotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBj
b25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0
aW9uOwotfQotCi1pbmxpbmUgT3B0aW9uczo6VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewot
ICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGlu
ZSBPcHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewot
ICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0K
LQotaW5saW5lIGJvb2wgT3B0aW9uOjppc092ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVy
biAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19Ci0KLWlubGluZSBjb25zdCBPcHRpb24gT3B0
aW9uOjpkZWZhdWx0T3B0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uKG1faWQsIGdf
anNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW21faWRdKTsKLX0KLQotaW5saW5lIGJvb2wmIE9wdGlv
bjo6Ym9vbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbDsKLX0KK3ByaXZhdGU6
CisgICAgT3B0aW9uKCkgeyB9CiAKLWlubGluZSB1bnNpZ25lZCYgT3B0aW9uOjp1bnNpZ25lZFZh
bCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQ7Ci19CisgICAgc2l6ZV90IGlk
SW5kZXgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1faWQpOyB9CiAKLWlu
bGluZSBkb3VibGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52
YWxEb3VibGU7Ci19CisgICAgT3B0aW9uSUQgbV9pZDsKKyAgICB1bmlvbiB7CiAKLWlubGluZSBp
bnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQz
MjsKLX0KKyNkZWZpbmUgREVDTEFSRV9NRU1CRVIoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAg
ICAgIHR5cGVfIG1fdmFsIyNPcHRpb25UeXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZ
UEUoREVDTEFSRV9NRU1CRVIpCisjdW5kZWYgREVDTEFSRV9NRU1CRVIKIAotaW5saW5lIE9wdGlv
blJhbmdlIE9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZh
bE9wdGlvblJhbmdlOwotfQorICAgIH07Cit9OwogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9u
OjpvcHRpb25TdHJpbmdWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblN0cmlu
ZzsKLX0KKy8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVNWQydzIGluYWJpbGl0
eSB0byBoYW5kbGUgbGFyZ2Ugc291cmNlcy4KKy8vIE9uY2UgdGhlIE1TVkMgYnVnIGhhcyBiZWVu
IGZpeGVkLCB3ZSBjYW4gbWFrZSB0aGUgZm9sbG93aW5nIHVuY29uZGl0aW9uYWwgYW5kCisvLyBy
ZW1vdmUgaXRzIGNvdW50ZXJwYXJ0IE1TVkMgdmVyc2lvbiBpbiBPcHRpb25zLmNwcC4KKy8vIFNl
ZSBodHRwczovL2RldmVsb3BlcmNvbW11bml0eS52aXN1YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJv
YmxlbS82NTMzMDEvZmF0YWwtZXJyb3ItYzEwMDItY29tcGlsZXItaXMtb3V0LW9mLWhlYXAtc3Bh
Y2UtaW4uaHRtbAorI2lmICFDT01QSUxFUihNU1ZDKQorCit0ZW1wbGF0ZTxPcHRpb25UeXBlSUQg
dHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVjaWZpY0lu
ZGV4KCkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworI2RlZmluZSBDT1VOVF9JTkRFWF9BTkRf
RklORF9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRl
c2NyaXB0aW9uXykgXAorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bmFtZV8pIFwKKyAgICAgICAg
cmV0dXJuIGluZGV4OyBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBlXykgXAor
ICAgICAgICBpbmRleCsrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9JTkRFWF9B
TkRfRklORF9NQVRDSCk7CisjdW5kZWYgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gKKyAgICBy
ZXR1cm4gSW52YWxpZE9wdGlvbkluZGV4OworfQorCisjZGVmaW5lIERFRklORV9PUFRJT05fQUND
RVNTT1JTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSBcCisgICAgQUxXQVlTX0lOTElORSBPcHRpb25UeXBlczo6dHlwZV8mIE9wdGlvbnM6
Om5hbWVfKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gZ19qc2NDb25maWcudHlwZSMjdHlw
ZV8jI09wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywg
T3B0aW9uSUQ6Om5hbWVfPigpXTsgXAorICAgIH0gIFwKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlv
blR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAg
ICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9u
VHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigp
XTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNT
T1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCiAKLWlubGluZSBHQ0xvZ2dpbmc6
OkxldmVsJiBPcHRpb246OmdjTG9nTGV2ZWxWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZh
bEdDTG9nTGV2ZWw7Ci19CisjZW5kaWYgLy8gIUNPTVBJTEVSKE1TVkMpCiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCShyZXZpc2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3Jr
PwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09Q
VElPTigpIG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1
c2UsCiAvLyBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzIGFuZCBkZWZhdWx0IHZhbHVlcy4gVGhlIG9w
dGlvbnMgdmFsdWVzIGFyZSBhY3R1YWxseQotLy8gcmVhbGl6ZWQgYXMgYW4gYXJyYXkgb2YgT3B0
aW9uRW50cnkgZWxlbWVudHMgaW4gSlNDOjpDb25maWcuCisvLyByZWFsaXplZCBhcyBhcnJheXMg
b2YgZWFjaCBvZiB0aGUgT3B0aW9uVHlwZXMgaW4gSlNDOjpDb25maWcuCiAvLwotLy8gICAgIE9w
dGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5IG9mIG9wdGlvbnMg
dmFsdWVzIHdpdGgKKy8vICAgICBPcHRpb25zOjppbml0aWFsaXplKCkgd2lsbCBpbml0aWFsaXpl
IHRoZSBhcnJheXMgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAogLy8gdGhlIGRlZmF1bHRzIHNwZWNp
ZmllZCBpbiBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cuIEFmdGVyIHRoYXQsIHRoZSB2YWx1
ZXMgY2FuCiAvLyBiZSBwcm9ncmFtbWF0aWNhbGx5IHJlYWQgYW5kIHdyaXR0ZW4gdG8gdXNpbmcg
YW4gYWNjZXNzb3IgbWV0aG9kIHdpdGggdGhlCiAvLyBzYW1lIG5hbWUgYXMgdGhlIG9wdGlvbi4g
Rm9yIGV4YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2FuIGJlIHJlYWQgYW5kCkBAIC01NCw2
ICs1Nyw2OCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNoZWNrcyBhcmUgZG9uZSBhZnRlciB0aGUg
b3B0aW9uIHZhbHVlcyBhcmUgc2V0LiBJZiB5b3UgYWx0ZXIgdGhlIG9wdGlvbgogLy8gdmFsdWVz
IGFmdGVyIHRoZSBzYW5pdHkgY2hlY2tzIChmb3IgeW91ciBvd24gdGVzdGluZyksIHRoZW4geW91
J3JlIGxpYWJsZSB0bwogLy8gZW5zdXJlIHRoYXQgdGhlIG5ldyB2YWx1ZXMgc2V0IGFyZSBzYW5l
IGFuZCByZWFzb25hYmxlIGZvciB5b3VyIG93biBydW4uCisvLworLy8gQW55IG1vZGlmaWNhdGlv
bnMgdG8gb3B0aW9ucyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSBmaXJzdCBWTSBpcyBpbnN0YW50
aWF0ZS4KKy8vIE9uIGluc3RhbnRpYXRpb24gb2YgdGhlIGZpcnN0IFZNIGluc3RhbmNlLCB0aGUg
T3B0aW9ucyB3aWxsIGJlIHdyaXRlIHByb3RlY3RlZAorLy8gYW5kIGNhbm5vdCBiZSBtb2RpZmll
ZCB0aGVyZWFmdGVyLgorCitjbGFzcyBPcHRpb25SYW5nZSB7Citwcml2YXRlOgorICAgIGVudW0g
UmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9
OworcHVibGljOgorICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhzKQor
ICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCisgICAgICAgIGlmICghcmhz
KSB7CisgICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKKyAgICAgICAgICAgIG1f
cmFuZ2VTdHJpbmcgPSAwOworICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7CisgICAgICAgICAg
ICBtX2hpZ2hMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7CisgICAgYm9vbCBpc0luUmFuZ2UodW5z
aWduZWQpOworICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1f
c3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9Cisg
ICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKworICAgIFJhbmdl
U3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOworICAgIHVuc2ln
bmVkIG1fbG93TGltaXQ7CisgICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Cit9OworCisjZGVmaW5l
IEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRSh2KSBcCisgICAgdihCb29sLCBib29sKSBcCisgICAg
dihVbnNpZ25lZCwgdW5zaWduZWQpIFwKKyAgICB2KERvdWJsZSwgZG91YmxlKSBcCisgICAgdihJ
bnQzMiwgaW50MzJfdCkgXAorICAgIHYoU2l6ZSwgc2l6ZV90KSBcCisgICAgdihPcHRpb25SYW5n
ZSwgT3B0aW9uUmFuZ2UpIFwKKyAgICB2KE9wdGlvblN0cmluZywgY29uc3QgY2hhciopIFwKKyAg
ICB2KEdDTG9nTGV2ZWwsIEdDTG9nZ2luZzo6TGV2ZWwpIFwKKworbmFtZXNwYWNlIE9wdGlvblR5
cGVzIHsKKworI2RlZmluZSBERUNMQVJFX1RZUEVTKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAg
IHVzaW5nIE9wdGlvblR5cGVfID0gdHlwZV87CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBF
KERFQ0xBUkVfVFlQRVMpCisjdW5kZWYgREVDTEFSRV9UWVBFUworCit9IC8vIG5hbWVzcGFjZSBP
cHRpb25UeXBlcworCitlbnVtIGNsYXNzIE9wdGlvblR5cGVJRCA6IHVpbnQ4X3QgeworCisjZGVm
aW5lIERFQ0xBUkVfVFlQRUlEKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIE9wdGlvblR5cGVf
LAorICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX1RZUEVJRCkKKyN1bmRlZiBE
RUNMQVJFX1RZUEVJRAorCit9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJT04odikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdihCb29sLCB1c2VL
ZXJuVENTTSwgdHJ1ZSwgTm9ybWFsLCAiTm90ZTogdGhpcyBuZWVkcyB0byBnbyBiZWZvcmUgb3Ro
ZXIgb3B0aW9ucyBzaW5jZSB0aGV5IGRlcGVuZCBvbiB0aGlzIHZhbHVlLiIpIFwKQEAgLTUxMCw2
ICs1NzUsMTQgQEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgdihtYXhpbXVtRlRMQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdCwg
U2FtZU9wdGlvbikgXAogICAgIHYobWF4aW11bUlubGluaW5nQ2FsbGVyU2l6ZSwgbWF4aW11bUlu
bGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAKKyNkZWZpbmUgREVDTEFS
RV9PUFRJT05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBk
ZXNjcmlwdGlvbl8pIFwKKyAgICBuYW1lXywKK2VudW0gY2xhc3MgT3B0aW9uSUQgOiB1aW50MTZf
dCB7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKK307CisjdW5k
ZWYgREVDTEFSRV9PUFRJT05fSUQKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgSW52YWxpZE9w
dGlvbkluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKIAogY29uc3Rl
eHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CkBAIC01MjIsNSArNTk1LDI0
IEBAIGNvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMKIAogY29uc3RleHBy
IHNpemVfdCBOdW1iZXJPZk9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpOwogCi19
IC8vIG5hbWVzcGFjZSBKU0MKK2NvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlv
bnNPZlR5cGUoT3B0aW9uVHlwZUlEIHR5cGUpCit7CisgICAgc2l6ZV90IGNvdW50ID0gMDsKKyNk
ZWZpbmUgQ09VTlRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmls
aXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBl
XykgXAorICAgICAgICBjb3VudCsrOworICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfT1BU
SU9OKTsKKyN1bmRlZiBDT1VOVF9PUFRJT04KKyAgICByZXR1cm4gY291bnQ7Cit9CiAKK2NvbnN0
ZXhwciBzaXplX3QgTnVtYmVyT2ZCb29sT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25z
T2ZUeXBlKE9wdGlvblR5cGVJRDo6Qm9vbCk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mVW5z
aWduZWRPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlE
OjpVbnNpZ25lZCk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mRG91YmxlT3B0aW9ucyA9IGNv
dW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6RG91YmxlKTsKK2NvbnN0
ZXhwciBzaXplX3QgTnVtYmVyT2ZJbnQzMk9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9u
c09mVHlwZShPcHRpb25UeXBlSUQ6OkludDMyKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZT
aXplT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6
U2l6ZSk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zID0gY291
bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZSk7Citj
b25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9ucyA9IGNvdW50TnVtYmVy
T2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6T3B0aW9uU3RyaW5nKTsKK2NvbnN0ZXhw
ciBzaXplX3QgTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRp
b25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbCk7CisKK30gLy8gbmFtZXNwYWNlIEpT
Qwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381148</attachid>
            <date>2019-10-16 19:53:12 -0700</date>
            <delta_ts>2019-11-16 18:46:27 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-202105.patch</filename>
            <type>text/plain</type>
            <size>49643</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUxMjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBA
QAorMjAxOS0xMC0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGUgc2l6ZSBvZiB0
aGUgSlNDOjpDb25maWcgbmVlZGVkIHRvIHN0b3JlIHRoZSBPcHRpb25zIGlzIG5vdyByZWR1Y2Vk
IHRvIDRLCisgICAgICAgIGluc3RlYWQgb2YgMTZLLCBlbmFibGVkIGJ5IGNvbnN0ZXhwciB0ZW1w
bGF0ZSBtYWdpYy4KKworICAgICAgICAxLiBJbnN0ZWFkIG9mIGFsbCBvcHRpb25zIGluIGEgbGFy
Z2UgYXJyYXkgb2YgT3B0aW9uRW50cnkgKHdoaWNoIGlzIGEgdW5pb24gb2YKKyAgICAgICAgICAg
YWxsIHRoZSBvcHRpb24gdHlwZXMpLCB3ZSBub3cgaGF2ZSBzZXBhcmF0ZSBhcnJheXMgZm9yIGVh
Y2ggb2YgdGhlIHR5cGVzIG9mCisgICAgICAgICAgIG9wdGlvbnMuICBGb3IgZXhhbXBsZSwKKwor
ICAgICAgICAgICAgICAgIFJlbW92ZWQgZ19qc2NDb25maWcub3B0aW9uc1tdLgorICAgICAgICAg
ICAgICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVCb29sT3B0aW9uc1tdLgorICAgICAgICAgICAg
ICAgIEFkZGVkIGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbXS4KKyAgICAgICAgICAgICAg
ICBBZGRlZCBnX2pzY0NvbmZpZy50eXBlRG91YmxlT3B0aW9uc1tdLgorICAgICAgICAgICAgICAg
IC4uLgorCisgICAgICAgICAgIFdlIHVzZWQgdG8gZmluZCB0aGUgc3RvcmFnZSBmb3IgdGhlIG9w
dGlvbiB1c2luZyBnX2pzY0NvbmZpZy5vcHRpb25zW09wdGlvbnM6OklEXS4KKyAgICAgICAgICAg
V2Ugbm93IGZpbmQgdGhlIHN0b3JhZ2UgZm9yIGVhY2ggdHlwZSBvZiBvcHRpb24gdXNpbmcKKyAg
ICAgICAgICAgZ19qc2NDb25maWcub3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRp
b25UeXBlSUQsIE9wdGlvbklEPigpXS4gIEZvcgorICAgICAgICAgICBleGFtcGxlLCBPcHRpb25z
Ojp1c2VKSVQoKSB1c2VkIHRvIGJlIGltcGxlbWVudGVkIGFzOgorCisgICAgICAgICAgICAgICBp
bmxpbmUgYm9vbCYgT3B0aW9uczo6dXNlSklUKCkKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbT3B0aW9uczo6dXNlSklUSURd
OworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgIC4uLiB3aGljaCBpcyBub3cgcmVwbGFj
ZWQgd2l0aDoKKworICAgICAgICAgICAgICAgaW5saW5lIGJvb2wmIE9wdGlvbnM6OnVzZUpJVCgp
CisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnX2pzY0NvbmZp
Zy50eXBlQm9vbE9wdGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpC
b29sLCBPcHRpb25JRDo6dXNlSklUPigpXTsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICBNU1ZDIGhhcyBhIGJ1ZyB3aGVyZSBpdCBjYW5ub3QgaGFuZGxlIHZlcnkgbGFyZ2Ugc291cmNl
IGZpbGVzOiBzZWUKKyAgICAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXJjb21tdW5pdHkudmlzdWFs
c3R1ZGlvLmNvbS9jb250ZW50L3Byb2JsZW0vNjUzMzAxL2ZhdGFsLWVycm9yLWMxMDAyLWNvbXBp
bGVyLWlzLW91dC1vZi1oZWFwLXNwYWNlLWluLmh0bWwuCisgICAgICAgICAgIFRoaXMgYnVnIHBy
ZXZlbnRzIHRoaXMgcGF0Y2ggZnJvbSBidWlsZGluZyBvbiBNU1ZDLiAgVG8gd29ya2Fyb3VuZCB0
aGlzIGJ1ZywKKyAgICAgICAgICAgd2UgZG9uJ3QgaW5saW5lIHRoZSBPcHRpb25zIGFjY2Vzc29y
cyB3aGVuIENPTVBJTEVSKE1TVkMpLiAgVGhpcyBwcmV2ZW50cyBNU1ZDCisgICAgICAgICAgIGZy
b20gaGF2aW5nIHRvIHBhcnNlIHRoZSBsYXJnZSBib2R5IG9mIHRlbXBsYXRlIGNvZGUgY29kZSB0
byB1c2VkIHRvIGltcGxlbWVudAorICAgICAgICAgICB0aGUgaW5saW5lIGFjY2Vzc29ycyBpbiBl
dmVyeSBmaWxlIHRoYXQgI2luY2x1ZGUgIk9wdGlvbnMuaCIuCisKKyAgICAgICAgICAgQWxzbyBh
ZGQgdGhlIEBuby11bmlmeSBhdHRyaWJ1dGUgdG8gT3B0aW9ucy5jcHAgKHdoZXJlIHdlIHB1dCB0
aGUgYWNjZXNzb3JzKQorICAgICAgICAgICBzbyB0aGF0IGl0IGRvZXNuJ3QgdHJpZ2dlciB0aGUg
TVNWQyBidWcgYWxzby4KKworICAgICAgICAyLiBJbnRyb2R1Y2UgdGhlIG9wdGlvblR5cGVTcGVj
aWZpY0luZGV4KCkgY29uc3RleHByIHRlbXBsYXRlIGZ1bmN0aW9uIGZvcgorICAgICAgICAgICBj
b21wdXRpbmcgdGhlIGluZGV4IG9mIGVhY2ggb3B0aW9uIGluIHRoZWlyIHJlc3BlY3RpdmUgdHlw
ZSBzcGVjaWZpYyBvcHRpb25zCisgICAgICAgICAgIGFycmF5LgorCisgICAgICAgIDMuIEludHJv
ZHVjZSBPcHRpb25UeXBlcywgT3B0aW9uVHlwZUlELCBhbmQgT3B0aW9uSUQuCisKKyAgICAgICAg
ICAgVGhlIE9wdGlvblR5cGVzIG5hbWVzcGFjZSByZXBsYWNlcyBPcHRpb25FbnRyeSBhcyB0aGUg
Y29udGFpbmVyIG9mIG9wdGlvbiB0eXBlcy4KKyAgICAgICAgICAgVGhlIE9wdGlvbklEIGVudW0g
Y2xhc3MgcmVwbGFjZXMgT3B0aW9uczo6SUQuCisgICAgICAgICAgIFRoZSBPcHRpb25UeXBlSUQg
ZW51bSBjbGFzcyBpcyBuZXcgYW5kIGlzIHVzZWQgdG9nZXRoZXIgd2l0aCBPcHRpb25JRCBpbgor
ICAgICAgICAgICAgICAgY29uc3RleHByIHRlbXBsYXRlcyB0byBjb21wdXRlIHRoZSB0eXBlU3Bl
Y2lmaWNJbmRleCBvZiBvcHRpb25zLgorCisgICAgICAgIDQuIFJlbW92ZWQgdGhlIE9wdGlvbkVu
dHJ5IHN0cnVjdCBhbmQgT3B0aW9uRW50cnkuaC4gIEFmdGVyICgxKSwgdGhpcyBzdHJ1Y3QgaXMK
KyAgICAgICAgICAgb25seSB1c2VkIGluIHRoZSBPcHRpb24gY2xhc3MuICBXZSBqdXN0IG1vdmVk
IHRoZSB1bmlvbiBvZiBvcHRpb24gdHlwZXMgKHRoYXQKKyAgICAgICAgICAgT3B0aW9uRW50cnkg
ZW1iZWRzKSBpbnRvIHRoZSBPcHRpb24gY2xhc3MuCisKKyAgICAgICAgICAgTW92ZWQgY2xhc3Mg
T3B0aW9uUmFuZ2UgaW50byBPcHRpb25zTGlzdC5oLgorCisgICAgICAgIDUuIFJlbW92ZWQgdGhl
IGxhcmdlIE9wdGlvbkVudHJ5IGFycmF5cyBmcm9tIEpTQzo6Q29uZmlnLgorICAgICAgICAgICBB
ZGRlZCB0eXBlIHNwZWNpZmljIG9wdGlvbnMgYXJyYXlzLgorICAgICAgICAgICBBbHNvIG9yZGVy
ZWQgdGhlc2UgYXJyYXlzIHRvIG1heGltaXplIGNvbXBhY3RuZXNzIGFuZCBtaW5pbWl6ZSBpbnRl
cm5hbCBmcmFnbWVudGF0aW9uLgorCisgICAgICAgIDYuIENoYW5nZWQgc2NhbGVKSVRQb2xpY3ko
KSB0byBnbyBkaXJlY3RseSB0byBnX2pzY0NvbmZpZy50eXBlSW50MzJPcHRpb25zW10KKyAgICAg
ICAgICAgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIHRoZSBPcHRpb24gd3JhcHBlciBvYmplY3Qu
ICBUaGlzIGFsbG93cyB1cyB0byBzaW1wbGlmeQorICAgICAgICAgICB0aGluZ3MgYW5kIG1ha2Ug
dGhlIE9wdGlvbiBjbGFzcyBhIHJlYWQgb25seSBpbnRlcmZhY2Ugb2Ygb3B0aW9ucy4KKworICAg
ICAgICA3LiBDaGFuZ2VkIE9wdGlvbnM6OmluaXRpYWxpemUoKSB0byBvbmx5IGNvbXB1dGUgdGhl
IG9wdGlvbiBkZWZhdWx0IHZhbHVlIG9uY2UuCisgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVl
IHNwZWNpZmllZCBpbiB0aGUgT3B0aW9uc0xpc3QgbWF5IG5vdCBhbHdheXMgYmUgYSBjb25zdGFu
dC4KKyAgICAgICAgICAgU29tZXRpbWVzLCBpdCBpcyBhIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAg
ICAgOC4gVGhlIE9wdGlvbiBjbGFzcyBub3cgb25seSBnaXZlcyByZWFkIG9ubHkgYWNjZXNzIHRv
IHRoZSBvcHRpb25zLgorCisgICAgICAgICAgIFRoZSBPcHRpb24gY2xhc3MnIHJvbGUgaXMgdG8g
cHJvdmlkZSBhbiBpbnRlcmZhY2UgZm9yIHJlYWRpbmcgYW4gb3B0aW9uIGF0IGFueQorICAgICAg
ICAgICBnaXZlbiBPcHRpb25JRCB3aXRob3V0IGZpcnN0IGtub3dpbmcgYWJvdXQgdGhlIHR5cGUg
b2YgdGhlIHNwZWNpZmljIG9wdGlvbi4KKyAgICAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBpdGVy
YXRpbmcgb3B0aW9ucywgYW5kIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgYnkKKyAgICAgICAgICAg
T3B0aW9uczo6ZHVtcE9wdGlvbigpLgorCisgICAgICAgICAgIFRlY2huaWNhbGx5LCB3ZSBjb3Vs
ZCBtZXJnZSBhbGwgdGhlIE9wdGlvbiBjbGFzcyBjb2RlIGludG8gaXRzIHNpbmdsZSBjbGllbnQu
CisgICAgICAgICAgIFdlIG9wdGVkIG5vdCB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGFtb3VudCBv
ZiBjb2RlIGlzIG5vbi10cml2aWFsLCBhbmQgdGhlCisgICAgICAgICAgIE9wdGlvbiBjbGFzcyBk
b2VzIGEgZ29vZCBqb2Igb2YgZW5jYXBzdWxhdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgKiBBUEkvZ2xpYi9KU0NPcHRpb25zLmNwcDoKKyAgICAgICAgKGpzY09wdGlvbnNTZXRW
YWx1ZSk6CisgICAgICAgIChqc2NPcHRpb25zR2V0VmFsdWUpOgorICAgICAgICAoanNjX29wdGlv
bnNfZm9yZWFjaCk6CisgICAgICAgIChqc2Nfb3B0aW9uc19nZXRfb3B0aW9uX2dyb3VwKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1
bnRpbWUvSlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25FbnRyeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlv
bnM6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKEpTQzo6b3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlz
dGljKToKKyAgICAgICAgKEpTQzo6b3B0aW9uVHlwZVNwZWNpZmljSW5kZXgpOgorICAgICAgICAo
SlNDOjpzY2FsZUpJVFBvbGljeSk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURlcGVuZGVudE9w
dGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKToKKyAgICAgICAgKEpTQzo6T3B0aW9u
czo6ZHVtcEFsbE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpkdW1wT3B0aW9uKToK
KyAgICAgICAgKEpTQzo6T3B0aW9uOjpPcHRpb24pOgorICAgICAgICAoSlNDOjpPcHRpb246OmRl
ZmF1bHRPcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246OmR1bXAgY29uc3QpOgor
ICAgICAgICAoSlNDOjpPcHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorICAgICAgICAoSlNDOjpPcHRpb246OmlkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6T3B0aW9uOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZXNjcmlw
dGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6dHlwZSBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9wdGlvbjo6YXZhaWxhYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9u
Ojppc092ZXJyaWRkZW4gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb246Ok9wdGlvbik6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbjo6aWRJbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6Om9wdGlv
blR5cGVTcGVjaWZpY0luZGV4KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZWZhdWx0T3B0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpib29sVmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjp1bnNpZ25lZFZhbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok9wdGlvbjo6ZG91YmxlVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9u
OjppbnQzMlZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6b3B0aW9uUmFuZ2VW
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246Om9wdGlvblN0cmluZ1ZhbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6Z2NMb2dMZXZlbFZhbCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAoSlNDOjpPcHRpb25SYW5n
ZTo6b3BlcmF0b3I9ICk6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpyYW5nZVN0cmluZyBj
b25zdCk6CisgICAgICAgIChKU0M6OmNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKToKKwog
MjAxOS0xMC0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNb3ZlIGFzc2VydCBpbiBXYXNtOjpQbGFuOjpmYWlsLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjUxMjE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05MjAsNyArOTIwLDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIHJ1bnRpbWUvT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oCiAgICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAog
ICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5oCi0gICAgcnVudGltZS9PcHRpb25FbnRyeS5oCiAgICAg
cnVudGltZS9PcHRpb25zLmgKICAgICBydW50aW1lL09wdGlvbnNMaXN0LmgKICAgICBydW50aW1l
L1BhcnNlSW50LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1
MTIxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOTA0LDcgKzkwNCw3IEBAIHJ1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5j
cHAKIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogcnVudGltZS9PYmplY3RUb1N0cmluZ0Fk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAKLXJ1
bnRpbWUvT3B0aW9ucy5jcHAKK3J1bnRpbWUvT3B0aW9ucy5jcHAgQG5vLXVuaWZ5CiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcAogcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAK
IHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2aXNpb24gMjUxMjE5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNTZXRWYWx1ZShj
b25zdAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZh
bHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAo
I25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvU2V0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghdmFsdWVGcm9t
R1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVfKCkgPSB2YWx1ZVRvU2V0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBHRVRfT1BUSU9O
X1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2
YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCisgICAgICAgIE9w
dGlvblR5cGVzOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAg
ICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVUb0dldCwgdmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBUUlVFOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtNjE2
LDggKzYxNiw4IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFjaChKU0NPcHRpb25zRnVuYyAKIAog
I2RlZmluZSBWSVNJVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoT3B0aW9uczo6QXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsIFwKLSAgICAgICAg
fHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6bmFtZV8jI0lELCBPcHRpb25zOjpBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVf
IGRlZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBPcHRpb25zOjpBdmFpbGFi
aWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIGRl
ZmF1bHRWYWx1ZSB7IH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgYXV0
byBvcHRpb25UeXBlID0ganNjT3B0aW9uc1R5cGUoZGVmYXVsdFZhbHVlKTsgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgaWYgKGZ1bmN0aW9uICgjbmFtZV8sIG9wdGlvblR5cGUsIGRlc2NyaXB0
aW9uXywgdXNlckRhdGEpKSAgICAgIFwKICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTY2Niw3ICs2NjYs
NyBAQCBHT3B0aW9uR3JvdXAqIGpzY19vcHRpb25zX2dldF9vcHRpb25fZ3JvCiAgICAgR0FycmF5
KiBlbnRyaWVzID0gZ19hcnJheV9uZXcoVFJVRSwgVFJVRSwgc2l6ZW9mKEdPcHRpb25FbnRyeSkp
OwogI2RlZmluZSBSRUdJU1RFUl9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBh
dmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoT3B0aW9uczo6QXZhaWxhYmls
aXR5OjphdmFpbGFiaWxpdHlfID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9ybWFsIFwKLSAg
ICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6bmFtZV8jI0lELCBPcHRpb25z
OjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSB7IFwKKyAgICAgICAgfHwgT3B0aW9uczo6
aXNBdmFpbGFibGUoT3B0aW9uSUQ6Om5hbWVfLCBPcHRpb25zOjpBdmFpbGFiaWxpdHk6OmF2YWls
YWJpbGl0eV8pKSB7IFwKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBuYW1lKGdfc3RyZHVwX3By
aW50ZigianNjLSVzIiwgI25hbWVfKSk7ICAgICAgIFwKICAgICAgICAgZW50cmllcyA9IGdfYXJy
YXlfc2V0X3NpemUoZW50cmllcywgZW50cmllcy0+bGVuICsgMSk7IFwKICAgICAgICAgR09wdGlv
bkVudHJ5KiBlbnRyeSA9ICZnX2FycmF5X2luZGV4KGVudHJpZXMsIEdPcHRpb25FbnRyeSwgZW50
cmllcy0+bGVuIC0gMSk7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg2NCw2ICsxODY0LDcg
QEAKIAkJRkUxQkQwMjExRTcyMDI3OTAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMDFFNzIwMjcwMDAx
MzRCQzkgLyogQ2VsbFByb2ZpbGUuaCAqLzsgfTsKIAkJRkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5
IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxQkQwMjMxRTcyMDUyRjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5oICovOyB9
OwogCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNG
Q0EgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkUxRDZENDUyMzU4MEUxRjAwN0E1QzI2IC8qIE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIy
MzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQlGRTFFMkMzRjIyNDBERDU4MDBGNkI3
MjkgLyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNFMjI0MEQzMEIwMEY2QjcyOSAvKiBNYWNyb0Fzc2Vt
YmxlckFSTTY0RS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNEMjI0MEQy
RjYwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg3Miw3ICsxODczLDYgQEAKIAkJ
RkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFFNDI4NTY3MDBCQUM0OTMg
LyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2Ny
aXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQyMjEyMUQ2QjgxQzMwMDMy
QkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFMzg0MjMyMjMy
NEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVu
dHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUg
LyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpA
QCAtNTA3Myw3ICs1MDczLDYgQEAKIAkJRkUzNUMyRkEyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wdGlv
bnMucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3B0aW9ucy5yYjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkIyMUIxRTZDNzAwMEY0Q0E4IC8qIE9w
Y29kZUdyb3VwLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wY29kZUdy
b3VwLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGQzIxQjFFNkM3MDAw
RjRDQTggLyogTWV0YWRhdGEucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0g
TWV0YWRhdGEucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMzg0MjMwMjMyNEQ1
MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcHRpb25FbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NDIz
MTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uc0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTczODIsNyArNzM4MSw2IEBACiAJCQkJRTM5RUVBRjIyMjgxMjQ0
QzAwODQ3NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmgg
Ki8sCiAJCQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAog
CQkJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCi0JCQkJRkUz
ODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi8sCiAJCQkJMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAogCQkJCTBGRTIyOEVCMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbnNMaXN0LmggKi8sCkBAIC05OTA1LDcgKzk5MDMsNiBAQAogCQkJCTBGMkJEQzJDMTUx
RkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNDQ3RUEx
N0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM1Njk4NzIyMjg0MTE4NzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQdHIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTExMzQsNiArMTExMzEsNyBAQAogCQkJCTUzNkIzMTRBMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNUMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4OC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MzZCMzE2MjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg5LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZFMUQ2RDQ1MjM1ODBFMUYwMDdBNUMyNiAvKiBPcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTQyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlOTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNDkxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U5MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE1MjFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHJldmlzaW9uIDI1
MTIxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
T3B0aW9uRW50cnkuaCIKICNpbmNsdWRlICJPcHRpb25zTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIApAQCAtMzYsMTIgKzM1LDEyIEBAIGNsYXNzIEZpeGVkVk1Qb29sRXhl
Y3V0YWJsZUFsbG9jYXRvcjsKIAogI2lmIENQVShBUk02NCkgfHwgUExBVEZPUk0oV0FUQ0hPUykK
IGNvbnN0ZXhwciBzaXplX3QgUGFnZVNpemUgPSAxNiAqIEtCOworY29uc3RleHByIHNpemVfdCBD
b25maWdTaXplVG9Qcm90ZWN0ID0gMSAqIFBhZ2VTaXplOwogI2Vsc2UKIGNvbnN0ZXhwciBzaXpl
X3QgUGFnZVNpemUgPSA0ICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3Rl
Y3QgPSAxICogUGFnZVNpemU7CiAjZW5kaWYKIAotY29uc3RleHByIHNpemVfdCBDb25maWdTaXpl
VG9Qcm90ZWN0ID0gMzIgKiBLQjsKLQogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKIHVz
aW5nIEpJVFdyaXRlU2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3QsIGNvbnN0
IHZvaWQqLCBzaXplX3QpOwogI2VuZGlmCkBAIC04Miw4ICs4MSwyOSBAQCBzdHJ1Y3QgQ29uZmln
IHsKICAgICAgICAgICAgIGJvb2wgdXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAK
LSAgICAgICAgICAgIE9wdGlvbkVudHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKLSAgICAg
ICAgICAgIE9wdGlvbkVudHJ5IGRlZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107CisgICAg
ICAgICAgICBib29sIHR5cGVCb29sT3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRpb25zXTsKKyAgICAg
ICAgICAgIGJvb2wgdHlwZUJvb2xEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkJvb2xPcHRpb25zXTsK
KworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCB0eXBlR0NMb2dMZXZlbE9wdGlvbnNbTnVt
YmVyT2ZHQ0xvZ0xldmVsT3B0aW9uc107CisgICAgICAgICAgICBHQ0xvZ2dpbmc6OkxldmVsIHR5
cGVHQ0xvZ0xldmVsRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9uc107CisK
KyAgICAgICAgICAgIGludDMyX3QgdHlwZUludDMyT3B0aW9uc1tOdW1iZXJPZkludDMyT3B0aW9u
c107CisgICAgICAgICAgICBpbnQzMl90IHR5cGVJbnQzMkRlZmF1bHRPcHRpb25zW051bWJlck9m
SW50MzJPcHRpb25zXTsKKworICAgICAgICAgICAgdW5zaWduZWQgdHlwZVVuc2lnbmVkT3B0aW9u
c1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisgICAgICAgICAgICB1bnNpZ25lZCB0eXBlVW5z
aWduZWREZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisKKyAgICAgICAg
ICAgIGRvdWJsZSB0eXBlRG91YmxlT3B0aW9uc1tOdW1iZXJPZkRvdWJsZU9wdGlvbnNdOworICAg
ICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZkRvdWJsZU9w
dGlvbnNdOworCisgICAgICAgICAgICBzaXplX3QgdHlwZVNpemVPcHRpb25zW051bWJlck9mU2l6
ZU9wdGlvbnNdOworICAgICAgICAgICAgc2l6ZV90IHR5cGVTaXplRGVmYXVsdE9wdGlvbnNbTnVt
YmVyT2ZTaXplT3B0aW9uc107CisKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVPcHRpb25T
dHJpbmdPcHRpb25zW051bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9uc107CisgICAgICAgICAgICBj
b25zdCBjaGFyKiB0eXBlT3B0aW9uU3RyaW5nRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZPcHRpb25T
dHJpbmdPcHRpb25zXTsKKworICAgICAgICAgICAgT3B0aW9uUmFuZ2UgdHlwZU9wdGlvblJhbmdl
T3B0aW9uc1tOdW1iZXJPZk9wdGlvblJhbmdlT3B0aW9uc107CisgICAgICAgICAgICBPcHRpb25S
YW5nZSB0eXBlT3B0aW9uUmFuZ2VEZWZhdWx0T3B0aW9uc1tOdW1iZXJPZk9wdGlvblJhbmdlT3B0
aW9uc107CiAgICAgICAgIH07CiAgICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25maWdTaXplVG9Q
cm90ZWN0XTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25FbnRyeS5oCShyZXZpc2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25FbnRyeS5oCShub25leGlzdGVudCkKQEAgLTEsODQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRpb25SYW5nZSB7Ci1wcml2YXRlOgotICAgIGVu
dW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRl
ZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhz
KQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCi0gICAgICAgIGlmICgh
cmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKLSAgICAgICAgICAg
IG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7Ci0gICAgICAg
ICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7Ci0gICAgYm9vbCBpc0luUmFuZ2Uo
dW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
KG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9
Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKLQotICAgIFJh
bmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwotICAgIHVu
c2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Ci19OwotCi0vLyBG
b3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVlOgotdW5pb24gT3B0aW9uRW50cnkgewotICAg
IHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5nIFVuc2lnbmVkID0gdW5zaWduZWQ7Ci0gICAg
dXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVzaW5nIEludDMyID0gaW50MzJfdDsKLSAgICB1
c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5nIE9wdGlvblJhbmdlID0gSlNDOjpPcHRpb25S
YW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcgPSBjb25zdCBjaGFyKjsKLSAgICB1c2luZyBH
Q0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsKLQotICAgIGJvb2wgdmFsQm9vbDsKLSAgICB1
bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3VibGUgdmFsRG91YmxlOwotICAgIGludDMyX3Qg
dmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7Ci0gICAgT3B0aW9uUmFuZ2UgdmFsT3B0aW9u
UmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0aW9uU3RyaW5nOwotICAgIEdDTG9nZ2luZzo6
TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI1MTIxOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3Ry
aW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBPcHRpb25zOjppc0F2YWlsYWJs
ZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK2Jv
b2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0
eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2YWlsYWJpbGl0eSA9PSBBdmFpbGFiaWxpdHk6
OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy5yZXN0cmljdGVkT3B0aW9u
c0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBAQCBib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxl
KE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5VU0VEX1BBUkFNKGlkKTsKICNpZiAhZGVmaW5l
ZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNpbmdsZUFsbG9jYXRpb25TaXplSUQpCisgICAg
aWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKGlkID09IHVzZVNpZ2ls
bENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6OnVzZVNpZ2lsbENyYXNo
QW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFTU0VN
QkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlkID09IGxvZ0pJVENvZGVGb3JQZXJmSUQpCisg
ICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRDb2RlRm9yUGVyZikKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0gdHJhY2VMTEludEV4ZWN1dGlvbklEKQorICAg
IGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTEludEV4ZWN1dGlvbikKICAgICAgICAgcmV0dXJu
ICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQgPT0gdHJhY2VMTEludFNsb3dQYXRoSUQpCisg
ICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50U2xvd1BhdGgpCiAgICAgICAgIHJldHVy
biAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9w
dGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZh
aWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUs
IE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZh
aWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxhYmxlID0gKGF2YWlsYWJpbGl0eSA9PSBPcHRp
b25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFi
bGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIsMTAgKzI4Miw0NSBAQCB2b2lkIE9wdGlvblJh
bmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgb3V0LnByaW50KG1fcmFuZ2VTdHJpbmcp
OwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIE1TVkMncyBpbmFiaWxp
dHkgdG8gaGFuZGxlIGxhcmdlIHNvdXJjZXMuCisvLyBPbmNlIHRoZSBNU1ZDIGJ1ZyBoYXMgYmVl
biBmaXhlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIHNuaXBwZXQgb2YgY29kZSBhbmQKKy8vIG1ha2Ug
aXRzIGNvdW50ZXJwYXJ0IGluIE9wdGlvbnMuaCB1bmNvbmRpdGlvbmFsLgorLy8gU2VlIGh0dHBz
Oi8vZGV2ZWxvcGVyY29tbXVuaXR5LnZpc3VhbHN0dWRpby5jb20vY29udGVudC9wcm9ibGVtLzY1
MzMwMS9mYXRhbC1lcnJvci1jMTAwMi1jb21waWxlci1pcy1vdXQtb2YtaGVhcC1zcGFjZS1pbi5o
dG1sCisjaWYgQ09NUElMRVIoTVNWQykKKwordGVtcGxhdGU8T3B0aW9uVHlwZUlEIHR5cGUsIE9w
dGlvbklEIGlkPgorY29uc3RleHByIHNpemVfdCBvcHRpb25UeXBlU3BlY2lmaWNJbmRleCgpCit7
CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyNkZWZpbmUgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFU
Q0godHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlv
bl8pIFwKKyAgICBpZiAoaWQgPT0gT3B0aW9uSUQ6Om5hbWVfKSBcCisgICAgICAgIHJldHVybiBp
bmRleDsgXAorICAgIGlmICh0eXBlID09IE9wdGlvblR5cGVJRDo6dHlwZV8pIFwKKyAgICAgICAg
aW5kZXgrKzsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfSU5ERVhfQU5EX0ZJTkRf
TUFUQ0gpOworI3VuZGVmIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENICisgICAgcmV0dXJuIElu
dmFsaWRPcHRpb25JbmRleDsKK30KKworI2RlZmluZSBERUZJTkVfT1BUSU9OX0FDQ0VTU09SUyh0
eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykg
XAorICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlvblR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFt
ZV8oKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMj
T3B0aW9uc1tvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OnR5cGVfLCBPcHRp
b25JRDo6bmFtZV8+KCldOyBcCisgICAgfSAgXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIE9wdGlv
blR5cGVzOjp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAg
ICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9u
VHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigp
XTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNT
T1JTKQorI3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCisKKyNlbmRpZiAvLyBDT01QSUxF
UihNU1ZDKQorCiAvLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoK
LWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW09wdGlvbnM6
Om51bWJlck9mT3B0aW9uc10gPSB7Citjb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6
c19vcHRpb25zSW5mb1tOdW1iZXJPZk9wdGlvbnNdID0gewogI2RlZmluZSBGSUxMX09QVElPTl9J
TkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRp
b25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8s
IEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyB9LAorICAgIHsgI25hbWVfLCBkZXNjcmlwdGlv
bl8sIE9wdGlvblR5cGVJRDo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xywgb3B0
aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVf
PigpIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihGSUxMX09QVElPTl9JTkZPKQogI3VuZGVm
IEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0yOTksMjYgKzMzNCwyNSBAQCBzdGF0aWMgdm9pZCBz
Y2FsZUpJVFBvbGljeSgpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMC4wOwogCiAgICAgc3RydWN0
IE9wdGlvblRvU2NhbGUgewotICAgICAgICBPcHRpb25zOjpJRCBpZDsKKyAgICAgICAgc2l6ZV90
IGluZGV4OwogICAgICAgICBpbnQzMl90IG1pblZhbDsKICAgICB9OwogCiAgICAgc3RhdGljIGNv
bnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2NhbGVbXSA9IHsKLSAgICAgICAgeyBPcHRpb25z
Ojp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElELCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6
dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xk
Rm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNo
b2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJRCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6
OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAxIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhy
ZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJl
c2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIDIgfQorICAgICAgICB7IG9wdGlvblR5
cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRG
b3JKSVRBZnRlcldhcm1VcD4oKSwgMCB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0lu
ZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JKSVRTb29uPigp
LCAwIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJ
bnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA+KCksIDEgfSwK
KyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBP
cHRpb25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA+KCksIDEgfSwKKyAg
ICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMyLCBPcHRp
b25JRDo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29uPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9u
VHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9s
ZEZvckZUTE9wdGltaXplU29vbj4oKSwgMiB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZp
Y0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRp
bWl6ZUFmdGVyV2FybVVwPigpLCAyIH0sCiAgICAgfTsKIAotICAgIGNvbnN0IGludCBudW1iZXJP
Zk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlvbnNUb1NjYWxlKSAvIHNpemVvZihPcHRpb25U
b1NjYWxlKTsKKyAgICBjb25zdGV4cHIgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBzaXpl
b2Yob3B0aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOwogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZTsgaSsrKSB7Ci0gICAgICAgIE9wdGlv
biBvcHRpb24ob3B0aW9uc1RvU2NhbGVbaV0uaWQpOwotICAgICAgICBBU1NFUlQob3B0aW9uLnR5
cGUoKSA9PSBPcHRpb25zOjpUeXBlOjpJbnQzMik7Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgp
ICo9IHNjYWxlRmFjdG9yOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSA9IHN0ZDo6bWF4KG9w
dGlvbi5pbnQzMlZhbCgpLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOworICAgICAgICBpbnQz
Ml90JiBvcHRpb25WYWx1ZSA9IGdfanNjQ29uZmlnLnR5cGVJbnQzMk9wdGlvbnNbb3B0aW9uc1Rv
U2NhbGVbaV0uaW5kZXhdOworICAgICAgICBvcHRpb25WYWx1ZSAqPSBzY2FsZUZhY3RvcjsKKyAg
ICAgICAgb3B0aW9uVmFsdWUgPSBzdGQ6Om1heChvcHRpb25WYWx1ZSwgb3B0aW9uc1RvU2NhbGVb
aV0ubWluVmFsKTsKICAgICB9CiB9CiAKQEAgLTQ0MSw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCBy
ZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1cnJl
bnRHQygpKQogICAgICAgICBPcHRpb25zOjpjb2xsZWN0Q29udGludW91c2x5KCkgPSBmYWxzZTsK
IAotICAgIGlmIChPcHRpb24oT3B0aW9uczo6aml0UG9saWN5U2NhbGVJRCkuaXNPdmVycmlkZGVu
KCkpCisgICAgaWYgKE9wdGlvbihPcHRpb25JRDo6aml0UG9saWN5U2NhbGUpLmlzT3ZlcnJpZGRl
bigpKQogICAgICAgICBzY2FsZUpJVFBvbGljeSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpm
b3JjZUVhZ2VyQ29tcGlsYXRpb24oKSkgewpAQCAtNTIyLDkgKzU1NiwxMSBAQCB2b2lkIE9wdGlv
bnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgQ29uZmlnOjplbmFibGVSZXN0cmljdGVkT3B0
aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2YgdGhlIG9w
dGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUgSU5JVF9PUFRJT04odHlw
ZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwK
LSAgICAgICAgICAgIG5hbWVfKCkgPSBkZWZhdWx0VmFsdWVfOyBcCi0gICAgICAgICAgICBuYW1l
XyMjRGVmYXVsdCgpID0gZGVmYXVsdFZhbHVlXzsKKyNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8s
IG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIHsgXAor
ICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVfOyBcCisgICAgICAgICAg
ICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCisgICAgICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQo
KSA9IHZhbHVlOyBcCisgICAgICAgICAgICB9CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BU
SU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRfT1BUSU9OCiAKQEAgLTU0OCw3ICs1ODQsNyBA
QCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAj
ZWxzZSAvLyBQTEFURk9STShDT0NPQSkKICNkZWZpbmUgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVV
UklTVElDUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2Ny
aXB0aW9uXykgXAotICAgICAgICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVf
KCksIG5hbWVfIyNJRCwgIkpTQ18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlf
KTsKKyAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1lXygpLCBPcHRp
b25JRDo6bmFtZV8sICJKU0NfIiAjbmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7
CiAgICAgICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKE9WRVJSSURFX09QVElPTl9XSVRIX0hF
VVJJU1RJQ1MpCiAjdW5kZWYgT1ZFUlJJREVfT1BUSU9OX1dJVEhfSEVVUklTVElDUwogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtNzI3LDE2ICs3NjMsMTUgQEAgYm9vbCBPcHRpb25zOjpz
ZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogCiAgICAgY29uc3QgY2hhciogdmFsdWVTdHIgPSBl
cXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVj
aWZ5IGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKKyAgICAvLyBGb3IgZWFjaCBv
cHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQg
dGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1ZSBtYWtlcyBzZW5zZS4gT3RoZXJ3aXNlLCBtb3Zl
IG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9wdGlvbi4KICNkZWZpbmUgU0VUX09QVElPTl9JRl9N
QVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25hbWVfKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVx
dWFsU3RyIC0gYXJnKSAgICAgIFwKICAgICAgICAgJiYgIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVx
dWFsU3RyIC0gYXJnKSkgeyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChBdmFpbGFiaWxp
dHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgIFwKLSAgICAgICAg
ICAgICYmICFpc0F2YWlsYWJsZShuYW1lXyMjSUQsIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5
XykpIFwKKyAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFi
aWxpdHk6Ok5vcm1hbCAgICBcCisgICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUoT3B0aW9uSUQ6
Om5hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBPcHRpb25FbnRyeTo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9wdGlvblR5cGVzOjp0eXBlXyB2YWx1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
aWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgICAgICBuYW1lXygpID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXApAQCAtODE2LDEwICs4NTEsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1w
QWxsT3B0aW9ucyhTdHJpbmdCdWlsZAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAg
ICB9CiAKLSAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7
CisgICAgZm9yIChzaXplX3QgaWQgPSAwOyBpZCA8IE51bWJlck9mT3B0aW9uczsgaWQrKykgewog
ICAgICAgICBpZiAoc2VwYXJhdG9yICYmIGlkKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
c2VwYXJhdG9yKTsKLSAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nh
c3Q8SUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlv
bik7CisgICAgICAgIGR1bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PE9wdGlv
bklEPihpZCksIG9wdGlvbkhlYWRlciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24p
OwogICAgIH0KIH0KIApAQCAtODM1LDEwICs4NzAsMTAgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxs
T3B0aW9ucyhGSUxFKiBzdHJlYQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBidWlsZGVyLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkLAor
dm9pZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZl
bCBsZXZlbCwgT3B0aW9uSUQgaWQsCiAgICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFy
KiBmb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbiBkdW1wRGVmYXVsdHNPcHRpb24pCiB7Ci0gICAg
aWYgKGlkID49IG51bWJlck9mT3B0aW9ucykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihp
ZCkgPj0gTnVtYmVyT2ZPcHRpb25zKQogICAgICAgICByZXR1cm47IC8vIElsbGVnYWwgb3B0aW9u
LgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7CkBAIC04ODAsMjkgKzkxNSw3MSBAQCB2b2lkIE9w
dGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7CiB9CiAK
K09wdGlvbjo6T3B0aW9uKE9wdGlvbklEIGlkKQorICAgIDogbV9pZChpZCkKK3sKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0
eXBlU3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVj
aWZpY0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5m
b1tpbmRleF0udHlwZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworCisjZGVmaW5lIEhBTkRMRV9D
QVNFKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25U
eXBlXzogXAorICAgICAgICBBU1NFUlQodHlwZVNwZWNpZmljSW5kZXggPCBOdW1iZXJPZiMjT3B0
aW9uVHlwZV8jI09wdGlvbnMpOyBcCisgICAgICAgIG1fdmFsIyNPcHRpb25UeXBlXyA9IGdfanNj
Q29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAor
ICAgICAgICBicmVhazsKKworICAgIEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FT
RSkKKyN1bmRlZiBIQU5ETEVfQ0FTRQorICAgIH0KK30KKworY29uc3QgT3B0aW9uIE9wdGlvbjo6
ZGVmYXVsdE9wdGlvbigpIGNvbnN0Cit7CisgICAgT3B0aW9uIHJlc3VsdDsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lkKTsKKyAgICB1bnNpZ25lZCB0eXBl
U3BlY2lmaWNJbmRleCA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGVTcGVjaWZp
Y0luZGV4OworICAgIE9wdGlvblR5cGVJRCB0eXBlID0gT3B0aW9uczo6c19vcHRpb25zSW5mb1tp
bmRleF0udHlwZTsKKworICAgIHJlc3VsdC5tX2lkID0gbV9pZDsKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8pIFwKKyAgICBjYXNl
IE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwKKyAgICAgICAgQVNTRVJUKHR5cGVTcGVjaWZp
Y0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAorICAgICAgICByZXN1
bHQubV92YWwjI09wdGlvblR5cGVfID0gZ19qc2NDb25maWcudHlwZSMjT3B0aW9uVHlwZV8jI0Rl
ZmF1bHRPcHRpb25zW3R5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgICAgICBicmVhazsKKworICAg
IEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShIQU5ETEVfQ0FTRSkKKyN1bmRlZiBIQU5ETEVfQ0FT
RQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIE9wdGlvbjo6ZHVtcChTdHJp
bmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAgICAgICBidWlsZGVyLmFwcGVuZChtX2VudHJ5
LnZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9v
bDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92YWxCb29sID8gInRydWUiIDogImZhbHNlIik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsVW5zaWduZWQpOworICAgIGNhc2Ug
T3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92
YWxVbnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6
ZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxTaXplKTsKKyAgICBj
YXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV92
YWxTaXplKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9lbnRyeS52YWxE
b3VibGUpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpEb3VibGU6CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV92YWxEb3VibGUpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2VudHJ5LnZhbEludDMyKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6SW50MzI6Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsSW50MzIpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAgICAgICBidWlsZGVyLmFw
cGVuZChtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkpOworICAgIGNhc2UgT3B0
aW9uVHlwZUlEOjpPcHRpb25SYW5nZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV92YWxPcHRp
b25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25z
OjpUeXBlOjpPcHRpb25TdHJpbmc6IHsKLSAgICAgICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9l
bnRyeS52YWxPcHRpb25TdHJpbmc7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblN0cmlu
ZzogeworICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX3ZhbE9wdGlvblN0cmluZzsKICAg
ICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24gPSAiIjsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyInKTsKQEAgLTkxMCw4ICs5ODcsOCBAQCB2b2lkIE9wdGlvbjo6ZHVtcChT
dHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnku
dmFsR0NMb2dMZXZlbCkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpHQ0xvZ0xldmVsOiB7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX3ZhbEdDTG9n
TGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KQEAgLTkyMCwyMyArOTk3LDIz
IEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIKIGJvb2wgT3B0aW9u
OjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0
eXBlKCkpIHsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIHJldHVybiBt
X2VudHJ5LnZhbEJvb2wgPT0gb3RoZXIubV9lbnRyeS52YWxCb29sOwotICAgIGNhc2UgT3B0aW9u
czo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkID09
IG90aGVyLm1fZW50cnkudmFsVW5zaWduZWQ7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBlOjpTaXpl
OgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxTaXplID09IG90aGVyLm1fZW50cnkudmFsU2l6
ZTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgcmV0dXJuIChtX2Vu
dHJ5LnZhbERvdWJsZSA9PSBvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4o
bV9lbnRyeS52YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV9lbnRyeS52YWxEb3VibGUp
KTsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICByZXR1cm4gbV9lbnRy
eS52YWxJbnQzMiA9PSBvdGhlci5tX2VudHJ5LnZhbEludDMyOwotICAgIGNhc2UgT3B0aW9uczo6
VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdl
LnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmlu
ZygpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOgotICAgICAgICByZXR1
cm4gKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3Ry
aW5nKQotICAgICAgICAgICAgfHwgKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1f
ZW50cnkudmFsT3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcs
IG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKSk7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpHQ0xvZ0xldmVsOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xldmVsID09IG90
aGVyLm1fZW50cnkudmFsR0NMb2dMZXZlbDsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6Qm9vbDoK
KyAgICAgICAgcmV0dXJuIG1fdmFsQm9vbCA9PSBvdGhlci5tX3ZhbEJvb2w7CisgICAgY2FzZSBP
cHRpb25UeXBlSUQ6OlVuc2lnbmVkOgorICAgICAgICByZXR1cm4gbV92YWxVbnNpZ25lZCA9PSBv
dGhlci5tX3ZhbFVuc2lnbmVkOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpTaXplOgorICAgICAg
ICByZXR1cm4gbV92YWxTaXplID09IG90aGVyLm1fdmFsU2l6ZTsKKyAgICBjYXNlIE9wdGlvblR5
cGVJRDo6RG91YmxlOgorICAgICAgICByZXR1cm4gKG1fdmFsRG91YmxlID09IG90aGVyLm1fdmFs
RG91YmxlKSB8fCAoc3RkOjppc25hbihtX3ZhbERvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5t
X3ZhbERvdWJsZSkpOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpJbnQzMjoKKyAgICAgICAgcmV0
dXJuIG1fdmFsSW50MzIgPT0gb3RoZXIubV92YWxJbnQzMjsKKyAgICBjYXNlIE9wdGlvblR5cGVJ
RDo6T3B0aW9uUmFuZ2U6CisgICAgICAgIHJldHVybiBtX3ZhbE9wdGlvblJhbmdlLnJhbmdlU3Ry
aW5nKCkgPT0gb3RoZXIubV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOworICAgIGNhc2Ug
T3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6CisgICAgICAgIHJldHVybiAobV92YWxPcHRpb25T
dHJpbmcgPT0gb3RoZXIubV92YWxPcHRpb25TdHJpbmcpCisgICAgICAgICAgICB8fCAobV92YWxP
cHRpb25TdHJpbmcgJiYgb3RoZXIubV92YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX3ZhbE9w
dGlvblN0cmluZywgb3RoZXIubV92YWxPcHRpb25TdHJpbmcpKTsKKyAgICBjYXNlIE9wdGlvblR5
cGVJRDo6R0NMb2dMZXZlbDoKKyAgICAgICAgcmV0dXJuIG1fdmFsR0NMb2dMZXZlbCA9PSBvdGhl
ci5tX3ZhbEdDTG9nTGV2ZWw7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI1MTIxOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
NTMsMzkgKzUyLDE5IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4K
IAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwgewor
ICAgIGVudW0gY2xhc3MgRHVtcExldmVsIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUgPSAwLAog
ICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBBbGwsCiAgICAgICAgIFZlcmJvc2UKICAgICB9
OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgeworICAgIGVudW0gY2xhc3MgQXZhaWxh
YmlsaXR5IDogdWludDhfdCB7CiAgICAgICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0
ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJsZQogICAgIH07CiAKLSNkZWZpbmUgREVDTEFSRV9PUFRJ
T05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKLSAgICBuYW1lXyMjSUQsCi0KLSAgICBlbnVtIElEIHsKLSAgICAgICAgRk9SX0VB
Q0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKLSAgICAgICAgbnVtYmVyT2ZPcHRpb25z
Ci0gICAgfTsKLSN1bmRlZiBERUNMQVJFX09QVElPTl9JRAotCi0gICAgZW51bSBjbGFzcyBUeXBl
IHsKLSAgICAgICAgQm9vbCwKLSAgICAgICAgVW5zaWduZWQsCi0gICAgICAgIERvdWJsZSwKLSAg
ICAgICAgSW50MzIsCi0gICAgICAgIFNpemUsCi0gICAgICAgIE9wdGlvblJhbmdlLAotICAgICAg
ICBPcHRpb25TdHJpbmcsCi0gICAgICAgIEdDTG9nTGV2ZWwsCi0gICAgfTsKLQogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIFBhcnNlcyBh
IHN0cmluZyBvZiBvcHRpb25zIHdoZXJlIGVhY2ggb3B0aW9uIGlzIG9mIHRoZSBmb3JtYXQgIi0t
PG9wdGlvbk5hbWU+PTx2YWx1ZT4iCkBAIC0xMDEsMTQgKzgwLDIxIEBAIHB1YmxpYzoKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgp
OwogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUyh0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8oKSB7IHJldHVybiBnX2pzY0NvbmZp
Zy5vcHRpb25zW25hbWVfIyNJRF0udmFsIyN0eXBlXzsgfSAgXAotICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKSB7IHJldHVybiBnX2pz
Y0NvbmZpZy5kZWZhdWx0T3B0aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0KKy8vIEZJWE1F
OiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVNWQydzIGluYWJpbGl0eSB0byBoYW5kbGUgbGFy
Z2Ugc291cmNlcy4KKy8vIFNlZSBodHRwczovL2RldmVsb3BlcmNvbW11bml0eS52aXN1YWxzdHVk
aW8uY29tL2NvbnRlbnQvcHJvYmxlbS82NTMzMDEvZmF0YWwtZXJyb3ItYzEwMDItY29tcGlsZXIt
aXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4uaHRtbAorI2lmIENPTVBJTEVSKE1TVkMpCisjZGVmaW5l
IE9QVElPTl9BQ0NFU1NPUl9MSU5LQUdFIEpTX0VYUE9SVF9QUklWQVRFCisjZWxzZQorI2RlZmlu
ZSBPUFRJT05fQUNDRVNTT1JfTElOS0FHRSBBTFdBWVNfSU5MSU5FCisjZW5kaWYKIAorI2RlZmlu
ZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBh
dmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICBPUFRJT05fQUNDRVNTT1JfTElOS0FH
RSBzdGF0aWMgT3B0aW9uVHlwZXM6OnR5cGVfJiBuYW1lXygpOyBcCisgICAgT1BUSU9OX0FDQ0VT
U09SX0xJTktBR0Ugc3RhdGljIE9wdGlvblR5cGVzOjp0eXBlXyYgbmFtZV8jI0RlZmF1bHQoKTsK
ICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRl
ZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKIAotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxl
KElELCBBdmFpbGFiaWxpdHkpOworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklE
LCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRlOgogCkBAIC0xMTYsOCArMTAyLDkgQEAgcHJpdmF0
ZToKICAgICBzdHJ1Y3QgRW50cnlJbmZvIHsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAg
ICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAg
ICAgT3B0aW9uVHlwZUlEIHR5cGU7CiAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7
CisgICAgICAgIHVuc2lnbmVkIHR5cGVTcGVjaWZpY0luZGV4OwogICAgIH07CiAKICAgICBPcHRp
b25zKCk7CkBAIC0xMjksMTIyICsxMTYsODkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
dW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3Ry
aW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0
IGNoYXIqIHNlcGFyYXRvciwgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBv
cHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9w
dGlvbihTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1w
T3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIE9wdGlvbklELAogICAgICAgICBjb25z
dCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1
bHRzT3B0aW9uKTsKIAogICAgIHN0YXRpYyBib29sIHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25z
dCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hh
ciogYXJnKTsKICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlz
dGljKGNvbnN0IGNoYXIqIG5hbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29w
dGlvbnNJbmZvW251bWJlck9mT3B0aW9uc107CisgICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBz
X29wdGlvbnNJbmZvW051bWJlck9mT3B0aW9uc107CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9u
OwogfTsKIAogY2xhc3MgT3B0aW9uIHsKIHB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQg
aWQpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9w
dGlvbnNbbV9pZF0pCi0gICAgewotICAgIH0KLSAgICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOwor
CiAgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAg
ICAKLSAgICBPcHRpb25zOjpJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25z
dDsKLSAgICBPcHRpb25zOjpUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFi
aWxpdHkgYXZhaWxhYmlsaXR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25z
dDsKKyAgICBPcHRpb25JRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBj
aGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4
KCldLm5hbWU7IH0KKyAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9w
dGlvblR5cGVJRCB0eXBlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tp
ZEluZGV4KCldLnR5cGU7IH0KKyAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWls
YWJpbGl0eTsgfQorICAgIGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMg
IT0gZGVmYXVsdE9wdGlvbigpOyB9CiAgICAgY29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBj
b25zdDsKLSAgICAKLSAgICBib29sJiBib29sVmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVk
VmFsKCk7Ci0gICAgZG91YmxlJiBkb3VibGVWYWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgp
OwotICAgIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0
aW9uU3RyaW5nVmFsKCk7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwot
ICAgIAotcHJpdmF0ZToKLSAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0
IE9wdGlvbnMuCi0gICAgT3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkp
Ci0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAg
ICB9Ci0gICAgCi0gICAgT3B0aW9uczo6SUQgbV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRy
eTsKLX07CiAKLWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAotewotICAg
IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19CisjZGVmaW5lIERF
Q0xBUkVfQUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRp
b25UeXBlXygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9F
QUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUND
RVNTT1IKIAotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwot
fQotCi1pbmxpbmUgT3B0aW9uczo6VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJl
dHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRp
b25zOjpBdmFpbGFiaWxpdHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJl
dHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5s
aW5lIGJvb2wgT3B0aW9uOjppc092ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhp
cyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19Ci0KLWlubGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpk
ZWZhdWx0T3B0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29u
ZmlnLmRlZmF1bHRPcHRpb25zW21faWRdKTsKLX0KLQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9v
bFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbDsKLX0KK3ByaXZhdGU6CisgICAg
T3B0aW9uKCkgeyB9CiAKLWlubGluZSB1bnNpZ25lZCYgT3B0aW9uOjp1bnNpZ25lZFZhbCgpCi17
Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQ7Ci19CisgICAgc2l6ZV90IGlkSW5kZXgo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1faWQpOyB9CiAKLWlubGluZSBk
b3VibGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxEb3Vi
bGU7Ci19CisgICAgT3B0aW9uSUQgbV9pZDsKKyAgICB1bmlvbiB7CiAKLWlubGluZSBpbnQzMl90
JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMjsKLX0K
KyNkZWZpbmUgREVDTEFSRV9NRU1CRVIoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgICAgIHR5
cGVfIG1fdmFsIyNPcHRpb25UeXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVD
TEFSRV9NRU1CRVIpCisjdW5kZWYgREVDTEFSRV9NRU1CRVIKIAotaW5saW5lIE9wdGlvblJhbmdl
IE9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlv
blJhbmdlOwotfQorICAgIH07Cit9OwogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRp
b25TdHJpbmdWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0K
Ky8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgTVNWQydzIGluYWJpbGl0eSB0byBo
YW5kbGUgbGFyZ2Ugc291cmNlcy4KKy8vIE9uY2UgdGhlIE1TVkMgYnVnIGhhcyBiZWVuIGZpeGVk
LCB3ZSBjYW4gbWFrZSB0aGUgZm9sbG93aW5nIHVuY29uZGl0aW9uYWwgYW5kCisvLyByZW1vdmUg
aXRzIGNvdW50ZXJwYXJ0IE1TVkMgdmVyc2lvbiBpbiBPcHRpb25zLmNwcC4KKy8vIFNlZSBodHRw
czovL2RldmVsb3BlcmNvbW11bml0eS52aXN1YWxzdHVkaW8uY29tL2NvbnRlbnQvcHJvYmxlbS82
NTMzMDEvZmF0YWwtZXJyb3ItYzEwMDItY29tcGlsZXItaXMtb3V0LW9mLWhlYXAtc3BhY2UtaW4u
aHRtbAorI2lmICFDT01QSUxFUihNU1ZDKQorCit0ZW1wbGF0ZTxPcHRpb25UeXBlSUQgdHlwZSwg
T3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4KCkK
K3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworI2RlZmluZSBDT1VOVF9JTkRFWF9BTkRfRklORF9N
QVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6bmFtZV8pIFwKKyAgICAgICAgcmV0dXJu
IGluZGV4OyBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBlXykgXAorICAgICAg
ICBpbmRleCsrOworCisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9JTkRFWF9BTkRfRklO
RF9NQVRDSCk7CisjdW5kZWYgQ09VTlRfSU5ERVhfQU5EX0ZJTkRfTUFUQ0gKKyAgICByZXR1cm4g
SW52YWxpZE9wdGlvbkluZGV4OworfQorCisjZGVmaW5lIERFRklORV9PUFRJT05fQUNDRVNTT1JT
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSBcCisgICAgQUxXQVlTX0lOTElORSBPcHRpb25UeXBlczo6dHlwZV8mIE9wdGlvbnM6Om5hbWVf
KCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gZ19qc2NDb25maWcudHlwZSMjdHlwZV8jI09w
dGlvbnNbb3B0aW9uVHlwZVNwZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9u
SUQ6Om5hbWVfPigpXTsgXAorICAgIH0gIFwKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvblR5cGVz
Ojp0eXBlXyYgT3B0aW9uczo6bmFtZV8jI0RlZmF1bHQoKSBcCisgICAgeyBcCisgICAgICAgIHJl
dHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjRGVmYXVsdE9wdGlvbnNbb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjp0eXBlXywgT3B0aW9uSUQ6Om5hbWVfPigpXTsgXAor
ICAgIH0KKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFRklORV9PUFRJT05fQUNDRVNTT1JTKQor
I3VuZGVmIERFRklORV9PUFRJT05fQUNDRVNTT1JTCiAKLWlubGluZSBHQ0xvZ2dpbmc6OkxldmVs
JiBPcHRpb246OmdjTG9nTGV2ZWxWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9n
TGV2ZWw7Ci19CisjZW5kaWYgLy8gIUNPTVBJTEVSKE1TVkMpCiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShy
ZXZpc2lvbiAyNTEyMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTggQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KwogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigp
IG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCiAv
LyBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzIGFuZCBkZWZhdWx0IHZhbHVlcy4gVGhlIG9wdGlvbnMg
dmFsdWVzIGFyZSBhY3R1YWxseQotLy8gcmVhbGl6ZWQgYXMgYW4gYXJyYXkgb2YgT3B0aW9uRW50
cnkgZWxlbWVudHMgaW4gSlNDOjpDb25maWcuCisvLyByZWFsaXplZCBhcyBhcnJheXMgb2YgZWFj
aCBvZiB0aGUgT3B0aW9uVHlwZXMgaW4gSlNDOjpDb25maWcuCiAvLwotLy8gICAgIE9wdGlvbnM6
OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5IG9mIG9wdGlvbnMgdmFsdWVz
IHdpdGgKKy8vICAgICBPcHRpb25zOjppbml0aWFsaXplKCkgd2lsbCBpbml0aWFsaXplIHRoZSBh
cnJheXMgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAogLy8gdGhlIGRlZmF1bHRzIHNwZWNpZmllZCBp
biBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cuIEFmdGVyIHRoYXQsIHRoZSB2YWx1ZXMgY2Fu
CiAvLyBiZSBwcm9ncmFtbWF0aWNhbGx5IHJlYWQgYW5kIHdyaXR0ZW4gdG8gdXNpbmcgYW4gYWNj
ZXNzb3IgbWV0aG9kIHdpdGggdGhlCiAvLyBzYW1lIG5hbWUgYXMgdGhlIG9wdGlvbi4gRm9yIGV4
YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2FuIGJlIHJlYWQgYW5kCkBAIC01NCw2ICs1Nyw2
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNoZWNrcyBhcmUgZG9uZSBhZnRlciB0aGUgb3B0aW9u
IHZhbHVlcyBhcmUgc2V0LiBJZiB5b3UgYWx0ZXIgdGhlIG9wdGlvbgogLy8gdmFsdWVzIGFmdGVy
IHRoZSBzYW5pdHkgY2hlY2tzIChmb3IgeW91ciBvd24gdGVzdGluZyksIHRoZW4geW91J3JlIGxp
YWJsZSB0bwogLy8gZW5zdXJlIHRoYXQgdGhlIG5ldyB2YWx1ZXMgc2V0IGFyZSBzYW5lIGFuZCBy
ZWFzb25hYmxlIGZvciB5b3VyIG93biBydW4uCisvLworLy8gQW55IG1vZGlmaWNhdGlvbnMgdG8g
b3B0aW9ucyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSBmaXJzdCBWTSBpcyBpbnN0YW50aWF0ZS4K
Ky8vIE9uIGluc3RhbnRpYXRpb24gb2YgdGhlIGZpcnN0IFZNIGluc3RhbmNlLCB0aGUgT3B0aW9u
cyB3aWxsIGJlIHdyaXRlIHByb3RlY3RlZAorLy8gYW5kIGNhbm5vdCBiZSBtb2RpZmllZCB0aGVy
ZWFmdGVyLgorCitjbGFzcyBPcHRpb25SYW5nZSB7Citwcml2YXRlOgorICAgIGVudW0gUmFuZ2VT
dGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9OworcHVi
bGljOgorICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGludCYgcmhzKQorICAgIHsg
Ly8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCisgICAgICAgIGlmICghcmhzKSB7Cisg
ICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKKyAgICAgICAgICAgIG1fcmFuZ2VT
dHJpbmcgPSAwOworICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7CisgICAgICAgICAgICBtX2hp
Z2hMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7CisgICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQp
OworICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUg
PiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdlU3RyOyB9CisgICAgCisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKworICAgIFJhbmdlU3RhdGUg
bV9zdGF0ZTsKKyAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOworICAgIHVuc2lnbmVkIG1f
bG93TGltaXQ7CisgICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Cit9OworCisjZGVmaW5lIEZPUl9F
QUNIX0pTQ19PUFRJT05fVFlQRSh2KSBcCisgICAgdihCb29sLCBib29sKSBcCisgICAgdihVbnNp
Z25lZCwgdW5zaWduZWQpIFwKKyAgICB2KERvdWJsZSwgZG91YmxlKSBcCisgICAgdihJbnQzMiwg
aW50MzJfdCkgXAorICAgIHYoU2l6ZSwgc2l6ZV90KSBcCisgICAgdihPcHRpb25SYW5nZSwgT3B0
aW9uUmFuZ2UpIFwKKyAgICB2KE9wdGlvblN0cmluZywgY29uc3QgY2hhciopIFwKKyAgICB2KEdD
TG9nTGV2ZWwsIEdDTG9nZ2luZzo6TGV2ZWwpIFwKKworbmFtZXNwYWNlIE9wdGlvblR5cGVzIHsK
KworI2RlZmluZSBERUNMQVJFX1RZUEVTKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIHVzaW5n
IE9wdGlvblR5cGVfID0gdHlwZV87CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTl9UWVBFKERFQ0xB
UkVfVFlQRVMpCisjdW5kZWYgREVDTEFSRV9UWVBFUworCit9IC8vIG5hbWVzcGFjZSBPcHRpb25U
eXBlcworCitlbnVtIGNsYXNzIE9wdGlvblR5cGVJRCA6IHVpbnQ4X3QgeworCisjZGVmaW5lIERF
Q0xBUkVfVFlQRUlEKE9wdGlvblR5cGVfLCB0eXBlXykgXAorICAgIE9wdGlvblR5cGVfLAorICAg
IEZPUl9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX1RZUEVJRCkKKyN1bmRlZiBERUNMQVJF
X1RZUEVJRAorCit9OwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJT04odikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdihCb29sLCB1c2VLZXJuVENT
TSwgdHJ1ZSwgTm9ybWFsLCAiTm90ZTogdGhpcyBuZWVkcyB0byBnbyBiZWZvcmUgb3RoZXIgb3B0
aW9ucyBzaW5jZSB0aGV5IGRlcGVuZCBvbiB0aGlzIHZhbHVlLiIpIFwKQEAgLTUxMCw2ICs1NzUs
MTQgQEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgdihtYXhpbXVtRlRMQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCwgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdCwgU2FtZU9w
dGlvbikgXAogICAgIHYobWF4aW11bUlubGluaW5nQ2FsbGVyU2l6ZSwgbWF4aW11bUlubGluaW5n
Q2FsbGVyQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBcCiAKKyNkZWZpbmUgREVDTEFSRV9PUFRJ
T05fSUQodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKKyAgICBuYW1lXywKK2VudW0gY2xhc3MgT3B0aW9uSUQgOiB1aW50MTZfdCB7Cisg
ICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKK307CisjdW5kZWYgREVD
TEFSRV9PUFRJT05fSUQKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgSW52YWxpZE9wdGlvbklu
ZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKIAogY29uc3RleHByIHNp
emVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpCiB7CkBAIC01MjIsNSArNTk1LDI0IEBAIGNv
bnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMKIAogY29uc3RleHByIHNpemVf
dCBOdW1iZXJPZk9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpOwogCi19IC8vIG5h
bWVzcGFjZSBKU0MKK2NvbnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5
cGUoT3B0aW9uVHlwZUlEIHR5cGUpCit7CisgICAgc2l6ZV90IGNvdW50ID0gMDsKKyNkZWZpbmUg
Q09VTlRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5Xywg
ZGVzY3JpcHRpb25fKSBcCisgICAgaWYgKHR5cGUgPT0gT3B0aW9uVHlwZUlEOjp0eXBlXykgXAor
ICAgICAgICBjb3VudCsrOworICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oQ09VTlRfT1BUSU9OKTsK
KyN1bmRlZiBDT1VOVF9PUFRJT04KKyAgICByZXR1cm4gY291bnQ7Cit9CiAKK2NvbnN0ZXhwciBz
aXplX3QgTnVtYmVyT2ZCb29sT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBl
KE9wdGlvblR5cGVJRDo6Qm9vbCk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mVW5zaWduZWRP
cHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpVbnNp
Z25lZCk7Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mRG91YmxlT3B0aW9ucyA9IGNvdW50TnVt
YmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6RG91YmxlKTsKK2NvbnN0ZXhwciBz
aXplX3QgTnVtYmVyT2ZJbnQzMk9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlw
ZShPcHRpb25UeXBlSUQ6OkludDMyKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZTaXplT3B0
aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6U2l6ZSk7
Citjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9uUmFuZ2VPcHRpb25zID0gY291bnROdW1i
ZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25SYW5nZSk7Citjb25zdGV4
cHIgc2l6ZV90IE51bWJlck9mT3B0aW9uU3RyaW5nT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NP
cHRpb25zT2ZUeXBlKE9wdGlvblR5cGVJRDo6T3B0aW9uU3RyaW5nKTsKK2NvbnN0ZXhwciBzaXpl
X3QgTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZU
eXBlKE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="commit-queue"
          id="396935"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382356</attachid>
            <date>2019-10-30 14:28:44 -0700</date>
            <delta_ts>2019-11-16 18:46:27 -0800</delta_ts>
            <desc>work in progress using type specific index from Options::s_optionsInfo.</desc>
            <filename>bug-202105b.patch</filename>
            <type>text/plain</type>
            <size>40858</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MTc5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTIzLDcgKzkyMyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaAogICAgIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKICAgICBydW50aW1lL09wZXJhdGlvbnMuaAotICAgIHJ1bnRpbWUv
T3B0aW9uRW50cnkuaAogICAgIHJ1bnRpbWUvT3B0aW9ucy5oCiAgICAgcnVudGltZS9PcHRpb25z
TGlzdC5oCiAgICAgcnVudGltZS9QYXJzZUludC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNTE3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw3ICs5MDMsNyBAQCBydW50aW1lL09iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUuY3BwCiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKIHJ1bnRp
bWUvT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBydW50aW1l
L09wZXJhdGlvbnMuY3BwCi1ydW50aW1lL09wdGlvbnMuY3BwCitydW50aW1lL09wdGlvbnMuY3Bw
IEBuby11bmlmeQogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKIHJ1bnRpbWUvUHJvbWlz
ZVRpbWVyLmNwcAogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTE3
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9u
c1NldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5lIFNFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVf
LCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAo
IWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVfIHZhbHVlVG9TZXQ7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZh
bHVlVG9TZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYg
KCF2YWx1ZUZyb21HVmFsdWUodmFsdWUsIHZhbHVlVG9TZXQpKSAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgT3B0aW9uczo6bmFtZV8oKSA9IHZhbHVl
VG9TZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4Niw3ICsxODYs
NyBAQCBzdGF0aWMgZ2Jvb2xlYW4ganNjT3B0aW9uc0dldFZhbHVlKGNvbnN0CiB7CiAjZGVmaW5l
IEdFVF9PUFRJT05fVkFMVUUodHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxp
dHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoIWdfc3RyY21wMCgjbmFtZV8sIG9wdGlvbikp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50
cnk6OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygpOyAgICAgICAgICAgICAgIFwK
KyAgICAgICAgT3B0aW9uVHlwZXM6OnR5cGVfIHZhbHVlVG9HZXQgPSBPcHRpb25zOjpuYW1lXygp
OyAgICAgICAgICAgICAgIFwKICAgICAgICAgdmFsdWVUb0dWYWx1ZSh2YWx1ZVRvR2V0LCB2YWx1
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIFRSVUU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICB9CkBAIC02MTYsOCArNjE2LDggQEAgdm9pZCBqc2Nfb3B0aW9uc19mb3JlYWNoKEpTQ09wdGlv
bnNGdW5jIAogCiAjZGVmaW5lIFZJU0lUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1
ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25zOjpBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpOb3JtYWwg
XAotICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMjSUQsIE9w
dGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAotICAgICAgICBPcHRpb25F
bnRyeTo6dHlwZV8gZGVmYXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlv
bnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICBPcHRpb25UeXBl
czo6dHlwZV8gZGVmYXVsdFZhbHVlIHsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBhdXRvIG9wdGlvblR5cGUgPSBqc2NPcHRpb25zVHlwZShkZWZhdWx0VmFsdWUpOyAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoZnVuY3Rpb24gKCNuYW1lXywgb3B0aW9uVHlw
ZSwgZGVzY3JpcHRpb25fLCB1c2VyRGF0YSkpICAgICAgXAogICAgICAgICAgICAgcmV0dXJuOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAt
NjY2LDcgKzY2Niw3IEBAIEdPcHRpb25Hcm91cCoganNjX29wdGlvbnNfZ2V0X29wdGlvbl9ncm8K
ICAgICBHQXJyYXkqIGVudHJpZXMgPSBnX2FycmF5X25ldyhUUlVFLCBUUlVFLCBzaXplb2YoR09w
dGlvbkVudHJ5KSk7CiAjZGVmaW5lIFJFR0lTVEVSX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChPcHRpb25z
OjpBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gPT0gT3B0aW9uczo6QXZhaWxhYmlsaXR5OjpO
b3JtYWwgXAotICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpuYW1lXyMj
SUQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAorICAgICAgICB8
fCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25JRDo6bmFtZV8sIE9wdGlvbnM6OkF2YWlsYWJp
bGl0eTo6YXZhaWxhYmlsaXR5XykpIHsgXAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUo
Z19zdHJkdXBfcHJpbnRmKCJqc2MtJXMiLCAjbmFtZV8pKTsgICAgICAgXAogICAgICAgICBlbnRy
aWVzID0gZ19hcnJheV9zZXRfc2l6ZShlbnRyaWVzLCBlbnRyaWVzLT5sZW4gKyAxKTsgXAogICAg
ICAgICBHT3B0aW9uRW50cnkqIGVudHJ5ID0gJmdfYXJyYXlfaW5kZXgoZW50cmllcywgR09wdGlv
bkVudHJ5LCBlbnRyaWVzLT5sZW4gLSAxKTsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1MTc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODY3
LDYgKzE4NjcsNyBAQAogCQlGRTFENkQ2RjIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDZFMjM2MjU4
RkUwMDdBNUMyNiAvKiBHZXRWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMUQ2RDcxMjM2MjVBQjEwMDdBNUMyNiAvKiBBcnJheVN0b3JhZ2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTFENkQ3MDIzNjI1QUIwMDA3QTVDMjYgLyogQXJyYXlTdG9yYWdlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUQ2RDc1MjM2MjY0
OUYwMDdBNUMyNiAvKiBQcm90b0NhbGxGcmFtZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUQ2RDc0MjM2MjY0OUQwMDdBNUMyNiAvKiBQ
cm90b0NhbGxGcmFtZUlubGluZXMuaCAqLzsgfTsKKwkJRkUxRDZEN0UyMzZBMjVEQzAwN0E1QzI2
IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQlG
RTFFMkMzRjIyNDBERDU4MDBGNkI3MjkgLyogTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUUyQzNFMjI0MEQzMEIw
MEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBB
Uk02NEVBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMUUyQzNEMjI0MEQyRjYwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5RTE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTg3NSw3ICsxODc2LDYgQEAKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMw
MjJENTFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAx
Q0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhD
NTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJ
CUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODgg
LyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzAyMzI0RDUx
QTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4
NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMg
LyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTNBMDZBNjFDMTBCNzJE
MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZERCAvKiBKSVRCaXRP
ckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTA3OCw3ICs1MDc4LDYgQEAKIAkJRkUzNUMyRkEyMUIx
RTZDNzAwMEY0Q0E4IC8qIE9wdGlvbnMucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBw
YXRoID0gT3B0aW9ucy5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkIy
MUIxRTZDNzAwMEY0Q0E4IC8qIE9wY29kZUdyb3VwLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cnVieTsgcGF0aCA9IE9wY29kZUdyb3VwLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTM1QzJGQzIxQjFFNkM3MDAwRjRDQTggLyogTWV0YWRhdGEucmIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5ydWJ5OyBwYXRoID0gTWV0YWRhdGEucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25FbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uc0xpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFy
Vk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9s
bGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODcsNyArNzM4Niw2IEBA
CiAJCQkJRTM5RUVBRjIyMjgxMjQ0QzAwODQ3NEY0IC8qIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCiAJCQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8q
IE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVy
YXRpb25zLmggKi8sCi0JCQkJRkUzODQyMzAyMzI0RDUxQTAwOURENDQ1IC8qIE9wdGlvbkVudHJ5
LmggKi8sCiAJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAog
CQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJRkUzODQy
MzEyMzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8sCkBAIC05OTEzLDcgKzk5MTEs
NiBAQAogCQkJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcwNDQ3RUExN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDgwRTE2RjVDRDAwQjM0NDYwIC8qIE9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzg0MjMyMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRp
b25FbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8q
IE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAv
KiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1Njk4NzIyMjg0MTE4NzAwOENE
Q0NCIC8qIFBhY2tlZENlbGxQdHIuaCBpbiBIZWFkZXJzICovLApAQCAtMTExNDQsNiArMTExNDEs
NyBAQAogCQkJCTUzNkIzMTRBMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxNUMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2U4OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2MjFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTg5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMUQ2RDdFMjM2QTI1
REMwMDdBNUMyNiAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTQyMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM2QjMxNDkxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5MS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MzZCMzE1MjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkyLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
Q29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
Q29uZmlnLmgJKHJldmlzaW9uIDI1MTc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiT3B0aW9uRW50cnkuaCIKICNpbmNsdWRlICJPcHRpb25zTGlz
dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMzYsMTIgKzM1LDEyIEBA
IGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKIAogI2lmIENQVShBUk02NCkg
fHwgUExBVEZPUk0oV0FUQ0hPUykKIGNvbnN0ZXhwciBzaXplX3QgUGFnZVNpemUgPSAxNiAqIEtC
OworY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMSAqIFBhZ2VTaXplOwog
I2Vsc2UKIGNvbnN0ZXhwciBzaXplX3QgUGFnZVNpemUgPSA0ICogS0I7Citjb25zdGV4cHIgc2l6
ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxICogUGFnZVNpemU7CiAjZW5kaWYKIAotY29uc3Rl
eHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMzIgKiBLQjsKLQogI2lmIEVOQUJMRShT
RVBBUkFURURfV1hfSEVBUCkKIHVzaW5nIEpJVFdyaXRlU2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0g
dm9pZCAoKikob2ZmX3QsIGNvbnN0IHZvaWQqLCBzaXplX3QpOwogI2VuZGlmCkBAIC04Miw4ICs4
MSwyOSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgICAgIGJvb2wgdXNlRmFzdFBlcm1pc2lv
bnNKSVRDb3B5OwogI2VuZGlmCiAKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IG9wdGlvbnNbTnVt
YmVyT2ZPcHRpb25zXTsKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IGRlZmF1bHRPcHRpb25zW051
bWJlck9mT3B0aW9uc107CisgICAgICAgICAgICBib29sIHR5cGVCb29sT3B0aW9uc1tOdW1iZXJP
ZkJvb2xPcHRpb25zXTsKKyAgICAgICAgICAgIGJvb2wgdHlwZUJvb2xEZWZhdWx0T3B0aW9uc1tO
dW1iZXJPZkJvb2xPcHRpb25zXTsKKworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCB0eXBl
R0NMb2dMZXZlbE9wdGlvbnNbTnVtYmVyT2ZHQ0xvZ0xldmVsT3B0aW9uc107CisgICAgICAgICAg
ICBHQ0xvZ2dpbmc6OkxldmVsIHR5cGVHQ0xvZ0xldmVsRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZH
Q0xvZ0xldmVsT3B0aW9uc107CisKKyAgICAgICAgICAgIGludDMyX3QgdHlwZUludDMyT3B0aW9u
c1tOdW1iZXJPZkludDMyT3B0aW9uc107CisgICAgICAgICAgICBpbnQzMl90IHR5cGVJbnQzMkRl
ZmF1bHRPcHRpb25zW051bWJlck9mSW50MzJPcHRpb25zXTsKKworICAgICAgICAgICAgdW5zaWdu
ZWQgdHlwZVVuc2lnbmVkT3B0aW9uc1tOdW1iZXJPZlVuc2lnbmVkT3B0aW9uc107CisgICAgICAg
ICAgICB1bnNpZ25lZCB0eXBlVW5zaWduZWREZWZhdWx0T3B0aW9uc1tOdW1iZXJPZlVuc2lnbmVk
T3B0aW9uc107CisKKyAgICAgICAgICAgIGRvdWJsZSB0eXBlRG91YmxlT3B0aW9uc1tOdW1iZXJP
ZkRvdWJsZU9wdGlvbnNdOworICAgICAgICAgICAgZG91YmxlIHR5cGVEb3VibGVEZWZhdWx0T3B0
aW9uc1tOdW1iZXJPZkRvdWJsZU9wdGlvbnNdOworCisgICAgICAgICAgICBzaXplX3QgdHlwZVNp
emVPcHRpb25zW051bWJlck9mU2l6ZU9wdGlvbnNdOworICAgICAgICAgICAgc2l6ZV90IHR5cGVT
aXplRGVmYXVsdE9wdGlvbnNbTnVtYmVyT2ZTaXplT3B0aW9uc107CisKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHR5cGVPcHRpb25TdHJpbmdPcHRpb25zW051bWJlck9mT3B0aW9uU3RyaW5nT3B0
aW9uc107CisgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlT3B0aW9uU3RyaW5nRGVmYXVsdE9w
dGlvbnNbTnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zXTsKKworICAgICAgICAgICAgT3B0aW9u
UmFuZ2UgdHlwZU9wdGlvblJhbmdlT3B0aW9uc1tOdW1iZXJPZk9wdGlvblJhbmdlT3B0aW9uc107
CisgICAgICAgICAgICBPcHRpb25SYW5nZSB0eXBlT3B0aW9uUmFuZ2VEZWZhdWx0T3B0aW9uc1tO
dW1iZXJPZk9wdGlvblJhbmdlT3B0aW9uc107CiAgICAgICAgIH07CiAgICAgICAgIGNoYXIgZW5z
dXJlU2l6ZVtDb25maWdTaXplVG9Qcm90ZWN0XTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCShyZXZpc2lvbiAyNTE3OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25FbnRyeS5oCShub25leGlzdGVudCkK
QEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR0NMb2dnaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBPcHRpb25SYW5n
ZSB7Ci1wcml2YXRlOgotICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRF
cnJvciwgTm9ybWFsLCBJbnZlcnRlZCB9OwotcHVibGljOgotICAgIE9wdGlvblJhbmdlJiBvcGVy
YXRvcj0gKGNvbnN0IGludCYgcmhzKQotICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxp
emF0aW9uCi0gICAgICAgIGlmICghcmhzKSB7Ci0gICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0
aWFsaXplZDsKLSAgICAgICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOwotICAgICAgICAgICAgbV9s
b3dMaW1pdCA9IDA7Ci0gICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7
Ci0gICAgYm9vbCBpc0luUmFuZ2UodW5zaWduZWQpOwotICAgIGNvbnN0IGNoYXIqIHJhbmdlU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmlu
ZyA6IHNfbnVsbFJhbmdlU3RyOyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251
bGxSYW5nZVN0cjsKLQotICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBt
X3JhbmdlU3RyaW5nOwotICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7Ci0gICAgdW5zaWduZWQgbV9o
aWdoTGltaXQ7Ci19OwotCi0vLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZhbHVlOgotdW5p
b24gT3B0aW9uRW50cnkgewotICAgIHVzaW5nIEJvb2wgPSBib29sOwotICAgIHVzaW5nIFVuc2ln
bmVkID0gdW5zaWduZWQ7Ci0gICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwotICAgIHVzaW5nIElu
dDMyID0gaW50MzJfdDsKLSAgICB1c2luZyBTaXplID0gc2l6ZV90OwotICAgIHVzaW5nIE9wdGlv
blJhbmdlID0gSlNDOjpPcHRpb25SYW5nZTsKLSAgICB1c2luZyBPcHRpb25TdHJpbmcgPSBjb25z
dCBjaGFyKjsKLSAgICB1c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZlbDsKLQotICAg
IGJvb2wgdmFsQm9vbDsKLSAgICB1bnNpZ25lZCB2YWxVbnNpZ25lZDsKLSAgICBkb3VibGUgdmFs
RG91YmxlOwotICAgIGludDMyX3QgdmFsSW50MzI7Ci0gICAgc2l6ZV90IHZhbFNpemU7Ci0gICAg
T3B0aW9uUmFuZ2UgdmFsT3B0aW9uUmFuZ2U7Ci0gICAgY29uc3QgY2hhciogdmFsT3B0aW9uU3Ry
aW5nOwotICAgIEdDTG9nZ2luZzo6TGV2ZWwgdmFsR0NMb2dMZXZlbDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHJldmlzaW9uIDI1MTc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZhaWxhYmls
aXR5IGF2YWlsYWJpbGl0eSkKK2Jvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uSUQgaWQs
IE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCiB7CiAgICAgaWYgKGF2YWlsYWJp
bGl0eSA9PSBBdmFpbGFiaWxpdHk6OlJlc3RyaWN0ZWQpCiAgICAgICAgIHJldHVybiBnX2pzY0Nv
bmZpZy5yZXN0cmljdGVkT3B0aW9uc0VuYWJsZWQ7CkBAIC0xNDAsMjYgKzE0MCwyNiBAQCBib29s
IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklEIGlkCiAgICAgCiAgICAgVU5VU0VEX1BB
UkFNKGlkKTsKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgaWYgKGlkID09IG1heFNpbmdsZUFs
bG9jYXRpb25TaXplSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjptYXhTaW5nbGVBbGxvY2F0
aW9uU2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICNpZiBPUyhEQVJXSU4pCi0g
ICAgaWYgKGlkID09IHVzZVNpZ2lsbENyYXNoQW5hbHl6ZXJJRCkKKyAgICBpZiAoaWQgPT0gT3B0
aW9uSUQ6OnVzZVNpZ2lsbENyYXNoQW5hbHl6ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgT1MoTElOVVgpCi0gICAgaWYgKGlkID09IGxv
Z0pJVENvZGVGb3JQZXJmSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjpsb2dKSVRDb2RlRm9y
UGVyZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICBpZiAoaWQgPT0gdHJhY2VM
TEludEV4ZWN1dGlvbklEKQorICAgIGlmIChpZCA9PSBPcHRpb25JRDo6dHJhY2VMTEludEV4ZWN1
dGlvbikKICAgICAgICAgcmV0dXJuICEhTExJTlRfVFJBQ0lORzsKLSAgICBpZiAoaWQgPT0gdHJh
Y2VMTEludFNsb3dQYXRoSUQpCisgICAgaWYgKGlkID09IE9wdGlvbklEOjp0cmFjZUxMSW50U2xv
d1BhdGgpCiAgICAgICAgIHJldHVybiAhIUxMSU5UX1RSQUNJTkc7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVy
aXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbnM6OklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRp
b25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQorYm9vbCBvdmVycmlkZU9wdGlvbldpdGhI
ZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbklEIGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRp
b25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQogewogICAgIGJvb2wgYXZhaWxhYmxlID0g
KGF2YWlsYWJpbGl0eSA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCkKICAgICAgICAg
fHwgT3B0aW9uczo6aXNBdmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0eSk7CkBAIC0yODIsMTAgKzI4
MiwyNyBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgb3V0
LnByaW50KG1fcmFuZ2VTdHJpbmcpOwogfQogCi0vLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFj
aCBvZiB0aGUgb3B0aW9uczoKLWNvbnN0IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29w
dGlvbnNJbmZvW09wdGlvbnM6Om51bWJlck9mT3B0aW9uc10gPSB7Cit0ZW1wbGF0ZTxPcHRpb25U
eXBlSUQgdHlwZSwgT3B0aW9uSUQgaWQ+Citjb25zdGV4cHIgc2l6ZV90IG9wdGlvblR5cGVTcGVj
aWZpY0luZGV4KCkKK3sKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIGluZGV4ID0gMDsgLy8g
TVNWQyAoMTYuMy41KSBpbXByb3Blcmx5IG9wdGltaXplcyBhd2F5IHRoZSBpbmxpbmUgaW5pdGlh
bGl6YXRpb24gb2YgaW5kZXgsIHNvIHVzZSBhbiBleHBsaWNpdCBhc3NpZ25tZW50LgorCisjZGVm
aW5lIENPVU5UX0lOREVYX0FORF9GSU5EX01BVENIKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCisgICAgaWYgKGlkID09IE9wdGlvbklE
OjpuYW1lXykgXAorICAgICAgICByZXR1cm4gaW5kZXg7IFwKKyAgICBpZiAodHlwZSA9PSBPcHRp
b25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAgIGluZGV4Kys7CisKKyAgICBGT1JfRUFDSF9KU0Nf
T1BUSU9OKENPVU5UX0lOREVYX0FORF9GSU5EX01BVENIKTsKKyN1bmRlZiBDT1VOVF9JTkRFWF9B
TkRfRklORF9NQVRDSAorICAgIHJldHVybiBJbnZhbGlkT3B0aW9uSW5kZXg7Cit9CisKKy8vIFJl
YWxpemUgdGhlIGNvbnN0YW50IG1ldGEtZGF0YSBhYm91dCBlYWNoIG9mIHRoZSBvcHRpb25zOgor
Y29uc3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bTnVtYmVyT2ZP
cHRpb25zXSA9IHsKICNkZWZpbmUgRklMTF9PUFRJT05fSU5GTyh0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIHsgI25hbWVfLCBk
ZXNjcmlwdGlvbl8sIE9wdGlvbnM6OlR5cGU6OnR5cGVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJp
bGl0eV8gfSwKKyAgICB7ICNuYW1lXywgZGVzY3JpcHRpb25fLCBPcHRpb25UeXBlSUQ6OnR5cGVf
LCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8sIG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9w
dGlvblR5cGVJRDo6dHlwZV8sIE9wdGlvbklEOjpuYW1lXz4oKSB9LAogICAgIEZPUl9FQUNIX0pT
Q19PUFRJT04oRklMTF9PUFRJT05fSU5GTykKICN1bmRlZiBGSUxMX09QVElPTl9JTkZPCiB9OwpA
QCAtMjk5LDI2ICszMTYsMjUgQEAgc3RhdGljIHZvaWQgc2NhbGVKSVRQb2xpY3koKQogICAgICAg
ICBzY2FsZUZhY3RvciA9IDAuMDsKIAogICAgIHN0cnVjdCBPcHRpb25Ub1NjYWxlIHsKLSAgICAg
ICAgT3B0aW9uczo6SUQgaWQ7CisgICAgICAgIHNpemVfdCBpbmRleDsKICAgICAgICAgaW50MzJf
dCBtaW5WYWw7CiAgICAgfTsKIAogICAgIHN0YXRpYyBjb25zdCBPcHRpb25Ub1NjYWxlIG9wdGlv
bnNUb1NjYWxlW10gPSB7Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUQWZ0ZXJX
YXJtVXBJRCwgMCB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb25JRCwg
MCB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXBJ
RCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25n
V2FybVVwSUQsIDEgfSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNv
b25JRCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGltaXplU29v
bklELCAyIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRl
cldhcm1VcElELCAyIH0KKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25U
eXBlSUQ6OkludDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA+KCksIDAg
fSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6OkludDMy
LCBPcHRpb25JRDo6dGhyZXNob2xkRm9ySklUU29vbj4oKSwgMCB9LAorICAgICAgICB7IG9wdGlv
blR5cGVTcGVjaWZpY0luZGV4PE9wdGlvblR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNw
ZWNpZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwPigpLCAxIH0sCisgICAgICAgIHsgb3B0aW9uVHlwZVNwZWNp
ZmljSW5kZXg8T3B0aW9uVHlwZUlEOjpJbnQzMiwgT3B0aW9uSUQ6OnRocmVzaG9sZEZvck9wdGlt
aXplU29vbj4oKSwgMSB9LAorICAgICAgICB7IG9wdGlvblR5cGVTcGVjaWZpY0luZGV4PE9wdGlv
blR5cGVJRDo6SW50MzIsIE9wdGlvbklEOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb24+KCks
IDIgfSwKKyAgICAgICAgeyBvcHRpb25UeXBlU3BlY2lmaWNJbmRleDxPcHRpb25UeXBlSUQ6Oklu
dDMyLCBPcHRpb25JRDo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcD4oKSwgMiB9
LAogICAgIH07CiAKLSAgICBjb25zdCBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9IHNpemVv
ZihvcHRpb25zVG9TY2FsZSkgLyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7CisgICAgY29uc3RleHBy
IGludCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlvbnNUb1NjYWxlKSAvIHNp
emVvZihPcHRpb25Ub1NjYWxlKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mT3B0
aW9uc1RvU2NhbGU7IGkrKykgewotICAgICAgICBPcHRpb24gb3B0aW9uKG9wdGlvbnNUb1NjYWxl
W2ldLmlkKTsKLSAgICAgICAgQVNTRVJUKG9wdGlvbi50eXBlKCkgPT0gT3B0aW9uczo6VHlwZTo6
SW50MzIpOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSAqPSBzY2FsZUZhY3RvcjsKLSAgICAg
ICAgb3B0aW9uLmludDMyVmFsKCkgPSBzdGQ6Om1heChvcHRpb24uaW50MzJWYWwoKSwgb3B0aW9u
c1RvU2NhbGVbaV0ubWluVmFsKTsKKyAgICAgICAgaW50MzJfdCYgb3B0aW9uVmFsdWUgPSBnX2pz
Y0NvbmZpZy50eXBlSW50MzJPcHRpb25zW29wdGlvbnNUb1NjYWxlW2ldLmluZGV4XTsKKyAgICAg
ICAgb3B0aW9uVmFsdWUgKj0gc2NhbGVGYWN0b3I7CisgICAgICAgIG9wdGlvblZhbHVlID0gc3Rk
OjptYXgob3B0aW9uVmFsdWUsIG9wdGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7CiAgICAgfQogfQog
CkBAIC00NDEsNyArNDU3LDcgQEAgc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9u
cygpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSkKICAgICAgICAgT3B0aW9u
czo6Y29sbGVjdENvbnRpbnVvdXNseSgpID0gZmFsc2U7CiAKLSAgICBpZiAoT3B0aW9uKE9wdGlv
bnM6OmppdFBvbGljeVNjYWxlSUQpLmlzT3ZlcnJpZGRlbigpKQorICAgIGlmIChPcHRpb24oT3B0
aW9uSUQ6OmppdFBvbGljeVNjYWxlKS5pc092ZXJyaWRkZW4oKSkKICAgICAgICAgc2NhbGVKSVRQ
b2xpY3koKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6Zm9yY2VFYWdlckNvbXBpbGF0aW9uKCkp
IHsKQEAgLTUyMiw5ICs1MzgsMTEgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAgICAg
ICAgICAgIENvbmZpZzo6ZW5hYmxlUmVzdHJpY3RlZE9wdGlvbnMoKTsKICNlbmRpZgogICAgICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBlYWNoIG9mIHRoZSBvcHRpb25zIHdpdGggdGhlaXIgZGVmYXVs
dCB2YWx1ZXM6Ci0jZGVmaW5lIElOSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgICAgICAgICBuYW1lXygpID0g
ZGVmYXVsdFZhbHVlXzsgXAotICAgICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IGRlZmF1bHRW
YWx1ZV87CisjZGVmaW5lIElOSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywg
YXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSB7IFwKKyAgICAgICAgICAgICAgICBhdXRvIHZh
bHVlID0gZGVmYXVsdFZhbHVlXzsgXAorICAgICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsg
XAorICAgICAgICAgICAgICAgIG5hbWVfIyNEZWZhdWx0KCkgPSB2YWx1ZTsgXAorICAgICAgICAg
ICAgfQogICAgICAgICAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihJTklUX09QVElPTikKICN1bmRl
ZiBJTklUX09QVElPTgogCkBAIC01NDgsNyArNTY2LDcgQEAgdm9pZCBPcHRpb25zOjppbml0aWFs
aXplKCkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogI2Vsc2UgLy8gUExBVEZPUk0oQ09DT0Ep
CiAjZGVmaW5lIE9WRVJSSURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1ModHlwZV8sIG5hbWVfLCBk
ZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAgICAgICAgICAg
IG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1lXygpLCBuYW1lXyMjSUQsICJKU0NfIiAj
bmFtZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xyk7CisgICAgICAgICAgICBvdmVycmlk
ZU9wdGlvbldpdGhIZXVyaXN0aWMobmFtZV8oKSwgT3B0aW9uSUQ6Om5hbWVfLCAiSlNDXyIgI25h
bWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOwogICAgICAgICAgICAgRk9SX0VBQ0hf
SlNDX09QVElPTihPVkVSUklERV9PUFRJT05fV0lUSF9IRVVSSVNUSUNTKQogI3VuZGVmIE9WRVJS
SURFX09QVElPTl9XSVRIX0hFVVJJU1RJQ1MKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKQEAg
LTcyNywxNiArNzQ1LDE1IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNv
bnMKIAogICAgIGNvbnN0IGNoYXIqIHZhbHVlU3RyID0gZXF1YWxTdHIgKyAxOwogCi0gICAgLy8g
Rm9yIGVhY2ggb3B0aW9uLCBjaGVjayBpZiB0aGUgc3BlY2lmeSBhcmcgaXMgYSBtYXRjaC4gSWYg
c28sIHNldCB0aGUgYXJnCisgICAgLy8gRm9yIGVhY2ggb3B0aW9uLCBjaGVjayBpZiB0aGUgc3Bl
Y2lmaWVkIGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKICAgICAvLyBpZiB0aGUg
dmFsdWUgbWFrZXMgc2Vuc2UuIE90aGVyd2lzZSwgbW92ZSBvbiB0byBjaGVja2luZyB0aGUgbmV4
dCBvcHRpb24uCiAjZGVmaW5lIFNFVF9PUFRJT05fSUZfTUFUQ0godHlwZV8sIG5hbWVfLCBkZWZh
dWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBpZiAoc3RybGVu
KCNuYW1lXykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihlcXVhbFN0ciAtIGFyZykgICAgICBcCiAg
ICAgICAgICYmICFzdHJuY21wKGFyZywgI25hbWVfLCBlcXVhbFN0ciAtIGFyZykpIHsgICAgICAg
ICAgICAgICAgXAotICAgICAgICBpZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2
YWlsYWJpbGl0eTo6Tm9ybWFsICAgICBcCi0gICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUobmFt
ZV8jI0lELCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCisgICAgICAgIGlmIChBdmFp
bGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgXAorICAg
ICAgICAgICAgJiYgIWlzQXZhaWxhYmxlKE9wdGlvbklEOjpuYW1lXywgQXZhaWxhYmlsaXR5Ojph
dmFpbGFiaWxpdHlfKSkgXAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9uRW50cnk6OnR5cGVf
IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZhbHVl
ID0gKGRlZmF1bHRWYWx1ZV8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBPcHRpb25UeXBlczo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFyc2UodmFsdWVTdHIsIHZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzdWNjZXNzKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgbmFtZV8o
KSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTgx
NiwxMCArODMzLDEwIEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGQK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCi0gICAgZm9yIChpbnQgaWQg
PSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQrKykgeworICAgIGZvciAoc2l6ZV90IGlkID0g
MDsgaWQgPCBOdW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKICAgICAgICAgaWYgKHNlcGFyYXRvciAm
JiBpZCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlcGFyYXRvcik7Ci0gICAgICAgIGR1
bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PElEPihpZCksIG9wdGlvbkhlYWRl
ciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOworICAgICAgICBkdW1wT3B0aW9u
KGJ1aWxkZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBvcHRpb25IZWFkZXIs
IG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsKICAgICB9CiB9CiAKQEAgLTgzNSwx
MCArODUyLDEwIEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlvbnMoRklMRSogc3RyZWEKICAg
ICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
RHVtcExldmVsIGxldmVsLCBPcHRpb25zOjpJRCBpZCwKK3ZvaWQgT3B0aW9uczo6ZHVtcE9wdGlv
bihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbklEIGlkLAog
ICAgIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBEdW1wRGVmYXVsdHNP
cHRpb24gZHVtcERlZmF1bHRzT3B0aW9uKQogewotICAgIGlmIChpZCA+PSBudW1iZXJPZk9wdGlv
bnMpCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaWQpID49IE51bWJlck9mT3B0aW9ucykK
ICAgICAgICAgcmV0dXJuOyAvLyBJbGxlZ2FsIG9wdGlvbi4KIAogICAgIE9wdGlvbiBvcHRpb24o
aWQpOwpAQCAtODgwLDI5ICs4OTcsNzEgQEAgdm9pZCBPcHRpb25zOjplbnN1cmVPcHRpb25zQXJl
Q29oZXJlbnQoKQogICAgICAgICBDUkFTSCgpOwogfQogCitPcHRpb246Ok9wdGlvbihPcHRpb25J
RCBpZCkKKyAgICA6IG1faWQoaWQpCit7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9pZCk7CisgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXggPSBPcHRp
b25zOjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlU3BlY2lmaWNJbmRleDsKKyAgICBPcHRpb25U
eXBlSUQgdHlwZSA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGU7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKworI2RlZmluZSBIQU5ETEVfQ0FTRShPcHRpb25UeXBlXywgdHlwZV8p
IFwKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uVHlwZV86IFwKKyAgICAgICAgQVNTRVJU
KHR5cGVTcGVjaWZpY0luZGV4IDwgTnVtYmVyT2YjI09wdGlvblR5cGVfIyNPcHRpb25zKTsgXAor
ICAgICAgICBtX3ZhbCMjT3B0aW9uVHlwZV8gPSBnX2pzY0NvbmZpZy50eXBlIyNPcHRpb25UeXBl
XyMjT3B0aW9uc1t0eXBlU3BlY2lmaWNJbmRleF07IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoSEFORExFX0NBU0UpCisjdW5kZWYgSEFORExFX0NBU0UK
KyAgICB9Cit9CisKK2NvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAor
eworICAgIE9wdGlvbiByZXN1bHQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9pZCk7CisgICAgdW5zaWduZWQgdHlwZVNwZWNpZmljSW5kZXggPSBPcHRpb25z
OjpzX29wdGlvbnNJbmZvW2luZGV4XS50eXBlU3BlY2lmaWNJbmRleDsKKyAgICBPcHRpb25UeXBl
SUQgdHlwZSA9IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9baW5kZXhdLnR5cGU7CisKKyAgICByZXN1
bHQubV9pZCA9IG1faWQ7CisgICAgc3dpdGNoICh0eXBlKSB7CisKKyNkZWZpbmUgSEFORExFX0NB
U0UoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblR5
cGVfOiBcCisgICAgICAgIEFTU0VSVCh0eXBlU3BlY2lmaWNJbmRleCA8IE51bWJlck9mIyNPcHRp
b25UeXBlXyMjT3B0aW9ucyk7IFwKKyAgICAgICAgcmVzdWx0Lm1fdmFsIyNPcHRpb25UeXBlXyA9
IGdfanNjQ29uZmlnLnR5cGUjI09wdGlvblR5cGVfIyNEZWZhdWx0T3B0aW9uc1t0eXBlU3BlY2lm
aWNJbmRleF07IFwKKyAgICAgICAgYnJlYWs7CisKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZ
UEUoSEFORExFX0NBU0UpCisjdW5kZWYgSEFORExFX0NBU0UKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9v
bDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxCb29sID8gInRydWUiIDogImZh
bHNlIik7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkJvb2w6CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fdmFsQm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJl
cihtX2VudHJ5LnZhbFVuc2lnbmVkKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6VW5zaWduZWQ6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsVW5zaWduZWQpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fZW50cnkudmFsU2l6ZSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OlNpemU6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fdmFsU2l6ZSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICBidWlsZGVyLmFwcGVu
ZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fZW50cnkudmFsRG91YmxlKTsKKyAgICBjYXNlIE9wdGlv
blR5cGVJRDo6RG91YmxlOgorICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKG1fdmFsRG91YmxlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxJbnQzMik7
CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkludDMyOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX3ZhbEludDMyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpPcHRpb25SYW5nZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxPcHRpb25S
YW5nZS5yYW5nZVN0cmluZygpKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uUmFuZ2U6
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOiB7
Ci0gICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fZW50cnkudmFsT3B0aW9uU3RyaW5nOwor
ICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmc6IHsKKyAgICAgICAgY29uc3QgY2hh
ciogb3B0aW9uID0gbV92YWxPcHRpb25TdHJpbmc7CiAgICAgICAgIGlmICghb3B0aW9uKQogICAg
ICAgICAgICAgb3B0aW9uID0gIiI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CkBAIC05
MTAsOCArOTY5LDggQEAgdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcgog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOiB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KEdDTG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX2VudHJ5LnZhbEdDTG9nTGV2ZWwpKTsKKyAgICBj
YXNlIE9wdGlvblR5cGVJRDo6R0NMb2dMZXZlbDogeworICAgICAgICBidWlsZGVyLmFwcGVuZChH
Q0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV92YWxHQ0xvZ0xldmVsKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICB9CkBAIC05MjAsMjMgKzk3OSwyMyBAQCB2b2lkIE9wdGlvbjo6ZHVtcChT
dHJpbmdCdWlsZGVyJiBidWlsZGVyCiBib29sIE9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRp
b24mIG90aGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpCb29sOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxCb29sID09IG90aGVy
Lm1fZW50cnkudmFsQm9vbDsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAg
ICAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZCA9PSBvdGhlci5tX2VudHJ5LnZhbFVuc2ln
bmVkOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAgICAgcmV0dXJuIG1fZW50
cnkudmFsU2l6ZSA9PSBvdGhlci5tX2VudHJ5LnZhbFNpemU7Ci0gICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpEb3VibGU6Ci0gICAgICAgIHJldHVybiAobV9lbnRyeS52YWxEb3VibGUgPT0gb3RoZXIu
bV9lbnRyeS52YWxEb3VibGUpIHx8IChzdGQ6OmlzbmFuKG1fZW50cnkudmFsRG91YmxlKSAmJiBz
dGQ6OmlzbmFuKG90aGVyLm1fZW50cnkudmFsRG91YmxlKSk7Ci0gICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsSW50MzIgPT0gb3RoZXIubV9l
bnRyeS52YWxJbnQzMjsKLSAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAg
ICAgICByZXR1cm4gbV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpID09IG90aGVy
Lm1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsKLSAgICBjYXNlIE9wdGlvbnM6
OlR5cGU6Ok9wdGlvblN0cmluZzoKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5LnZhbE9wdGlvblN0
cmluZyA9PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZykKLSAgICAgICAgICAgIHx8ICht
X2VudHJ5LnZhbE9wdGlvblN0cmluZyAmJiBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZyAm
JiAhc3RyY21wKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nLCBvdGhlci5tX2VudHJ5LnZhbE9wdGlv
blN0cmluZykpOwotICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDoKLSAgICAgICAg
cmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX2VudHJ5LnZhbEdDTG9nTGV2
ZWw7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkJvb2w6CisgICAgICAgIHJldHVybiBtX3ZhbEJv
b2wgPT0gb3RoZXIubV92YWxCb29sOworICAgIGNhc2UgT3B0aW9uVHlwZUlEOjpVbnNpZ25lZDoK
KyAgICAgICAgcmV0dXJuIG1fdmFsVW5zaWduZWQgPT0gb3RoZXIubV92YWxVbnNpZ25lZDsKKyAg
ICBjYXNlIE9wdGlvblR5cGVJRDo6U2l6ZToKKyAgICAgICAgcmV0dXJuIG1fdmFsU2l6ZSA9PSBv
dGhlci5tX3ZhbFNpemU7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkRvdWJsZToKKyAgICAgICAg
cmV0dXJuIChtX3ZhbERvdWJsZSA9PSBvdGhlci5tX3ZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4o
bV92YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV92YWxEb3VibGUpKTsKKyAgICBjYXNl
IE9wdGlvblR5cGVJRDo6SW50MzI6CisgICAgICAgIHJldHVybiBtX3ZhbEludDMyID09IG90aGVy
Lm1fdmFsSW50MzI7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlOgorICAgICAg
ICByZXR1cm4gbV92YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpID09IG90aGVyLm1fdmFsT3B0
aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsKKyAgICBjYXNlIE9wdGlvblR5cGVJRDo6T3B0aW9uU3Ry
aW5nOgorICAgICAgICByZXR1cm4gKG1fdmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fdmFsT3B0
aW9uU3RyaW5nKQorICAgICAgICAgICAgfHwgKG1fdmFsT3B0aW9uU3RyaW5nICYmIG90aGVyLm1f
dmFsT3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV92YWxPcHRpb25TdHJpbmcsIG90aGVyLm1fdmFs
T3B0aW9uU3RyaW5nKSk7CisgICAgY2FzZSBPcHRpb25UeXBlSUQ6OkdDTG9nTGV2ZWw6CisgICAg
ICAgIHJldHVybiBtX3ZhbEdDTG9nTGV2ZWwgPT0gb3RoZXIubV92YWxHQ0xvZ0xldmVsOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyNTE3OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJKU0V4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTUzLDM5ICs1MiwxOSBAQCBjb25zdGV4
cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAKIGNsYXNzIE9wdGlvbnMgewogcHVi
bGljOgotICAgIGVudW0gY2xhc3MgRHVtcExldmVsIHsKKyAgICBlbnVtIGNsYXNzIER1bXBMZXZl
bCA6IHVpbnQ4X3QgewogICAgICAgICBOb25lID0gMCwKICAgICAgICAgT3ZlcnJpZGRlbiwKICAg
ICAgICAgQWxsLAogICAgICAgICBWZXJib3NlCiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgQXZh
aWxhYmlsaXR5IHsKKyAgICBlbnVtIGNsYXNzIEF2YWlsYWJpbGl0eSA6IHVpbnQ4X3QgewogICAg
ICAgICBOb3JtYWwgPSAwLAogICAgICAgICBSZXN0cmljdGVkLAogICAgICAgICBDb25maWd1cmFi
bGUKICAgICB9OwogCi0jZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0lEKHR5cGVfLCBuYW1lXywgZGVm
YXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAgbmFtZV8jI0lE
LAotCi0gICAgZW51bSBJRCB7Ci0gICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9P
UFRJT05fSUQpCi0gICAgICAgIG51bWJlck9mT3B0aW9ucwotICAgIH07Ci0jdW5kZWYgREVDTEFS
RV9PUFRJT05fSUQKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIEJvb2wsCi0gICAg
ICAgIFVuc2lnbmVkLAotICAgICAgICBEb3VibGUsCi0gICAgICAgIEludDMyLAotICAgICAgICBT
aXplLAotICAgICAgICBPcHRpb25SYW5nZSwKLSAgICAgICAgT3B0aW9uU3RyaW5nLAotICAgICAg
ICBHQ0xvZ0xldmVsLAotICAgIH07Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7CiAKICAgICAvLyBQYXJzZXMgYSBzdHJpbmcgb2Ygb3B0aW9ucyB3aGVy
ZSBlYWNoIG9wdGlvbiBpcyBvZiB0aGUgZm9ybWF0ICItLTxvcHRpb25OYW1lPj08dmFsdWU+IgpA
QCAtMTAyLDEzICs4MSwyMCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCk7CiAKICNkZWZpbmUgREVDTEFSRV9PUFRJ
T05fQUNDRVNTT1JTKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5Xywg
ZGVzY3JpcHRpb25fKSBcCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5
cGVfJiBuYW1lXygpIHsgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnNbbmFtZV8jI0lEXS52YWwj
I3R5cGVfOyB9ICBcCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5cGVf
JiBuYW1lXyMjRGVmYXVsdCgpIHsgcmV0dXJuIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW25h
bWVfIyNJRF0udmFsIyN0eXBlXzsgfQotCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9u
VHlwZXM6OnR5cGVfJiBuYW1lXygpIFwKKyAgICB7IFwKKyAgICAgICAgY29uc3RleHByIHNpemVf
dCBpZEluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25JRDo6bmFtZV8pOyBcCisgICAg
ICAgIHJldHVybiBnX2pzY0NvbmZpZy50eXBlIyN0eXBlXyMjT3B0aW9uc1tPcHRpb25zOjpzX29w
dGlvbnNJbmZvW2lkSW5kZXhdLnR5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgIH0gIFwKKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25UeXBlczo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCkg
XAorICAgIHsgXAorICAgICAgICBjb25zdGV4cHIgc2l6ZV90IGlkSW5kZXggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KE9wdGlvbklEOjpuYW1lXyk7IFwKKyAgICAgICAgcmV0dXJuIGdfanNjQ29uZmln
LnR5cGUjI3R5cGVfIyNEZWZhdWx0T3B0aW9uc1tPcHRpb25zOjpzX29wdGlvbnNJbmZvW2lkSW5k
ZXhdLnR5cGVTcGVjaWZpY0luZGV4XTsgXAorICAgIH0KICAgICBGT1JfRUFDSF9KU0NfT1BUSU9O
KERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRlZiBERUNMQVJFX09QVElPTl9BQ0NFU1NP
UlMKIAotICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOworICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKE9wdGlvbklELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2
YXRlOgogCkBAIC0xMTYsOCArMTAyLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgRW50cnlJbmZv
IHsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29uc3QgY2hhciogZGVzY3Jp
cHRpb247Ci0gICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgT3B0aW9uVHlwZUlEIHR5cGU7CiAg
ICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAgIHVuc2lnbmVkIHR5cGVT
cGVjaWZpY0luZGV4OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBAIC0xMjksMTIyICsxMTYs
NTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAg
ICAgc3RhdGljIHZvaWQgZHVtcEFsbE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwg
Y29uc3QgY2hhciogdGl0bGUsCiAgICAgICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgY29uc3Qg
Y2hhciogb3B0aW9uSGVhZGVyLCBjb25zdCBjaGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0
c09wdGlvbik7Ci0gICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwgRHVt
cExldmVsLCBJRCwKKyAgICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBE
dW1wTGV2ZWwsIE9wdGlvbklELAogICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNv
bnN0IGNoYXIqIG9wdGlvbkZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKIAogICAgIHN0YXRp
YyBib29sIHNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRp
YyBib29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciogYXJnKTsKICAgICBzdGF0aWMgYm9v
bCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGljKGNvbnN0IGNoYXIqIG5hbWUpOwog
Ci0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlvbnNJbmZvW251bWJlck9mT3B0aW9u
c107CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlv
bnNJbmZvW051bWJlck9mT3B0aW9uc107CiAKICAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwogfTsK
IAogY2xhc3MgT3B0aW9uIHsKIHB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQpCi0g
ICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29uZmlnLm9wdGlvbnNb
bV9pZF0pCi0gICAgewotICAgIH0KLSAgICAKKyAgICBPcHRpb24oT3B0aW9uSUQpOworCiAgICAg
dm9pZCBkdW1wKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAg
ICBPcHRpb25zOjpJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAg
ICBPcHRpb25zOjpUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkg
YXZhaWxhYmlsaXR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKKyAg
ICBPcHRpb25JRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBjb25zdCBjaGFyKiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLm5h
bWU7IH0KKyAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlv
bnM6OnNfb3B0aW9uc0luZm9baWRJbmRleCgpXS5kZXNjcmlwdGlvbjsgfQorICAgIE9wdGlvblR5
cGVJRCB0eXBlKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4
KCldLnR5cGU7IH0KKyAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkgY29u
c3QgeyByZXR1cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1tpZEluZGV4KCldLmF2YWlsYWJpbGl0
eTsgfQorICAgIGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gZGVm
YXVsdE9wdGlvbigpOyB9CiAgICAgY29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsK
LSAgICAKLSAgICBib29sJiBib29sVmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7
Ci0gICAgZG91YmxlJiBkb3VibGVWYWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAg
IE9wdGlvblJhbmdlIG9wdGlvblJhbmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3Ry
aW5nVmFsKCk7Ci0gICAgR0NMb2dnaW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAot
cHJpdmF0ZToKLSAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlv
bnMuCi0gICAgT3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAg
ICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgT3B0aW9uczo6SUQgbV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKLX07
CiAKLWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAotewotICAgIHJldHVy
biBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19CisjZGVmaW5lIERFQ0xBUkVf
QUNDRVNTT1IoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdHlwZV8gdmFsIyNPcHRpb25UeXBl
XygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsIyNPcHRpb25UeXBlXzsgfQorICAgIEZPUl9FQUNIX0pT
Q19PUFRJT05fVFlQRShERUNMQVJFX0FDQ0VTU09SKQorI3VuZGVmIERFQ0xBUkVfQUNDRVNTT1IK
IAotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAg
IHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1p
bmxpbmUgT3B0aW9uczo6VHlwZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBP
cHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpB
dmFpbGFiaWxpdHkgT3B0aW9uOjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBP
cHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5saW5lIGJv
b2wgT3B0aW9uOjppc092ZXJyaWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBk
ZWZhdWx0T3B0aW9uKCk7Ci19Ci0KLWlubGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0
T3B0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29uZmlnLmRl
ZmF1bHRPcHRpb25zW21faWRdKTsKLX0KLQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgp
Ci17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbDsKLX0KLQotaW5saW5lIHVuc2lnbmVkJiBP
cHRpb246OnVuc2lnbmVkVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZDsK
LX0KK3ByaXZhdGU6CisgICAgT3B0aW9uKCkgeyB9CiAKLWlubGluZSBkb3VibGUmIE9wdGlvbjo6
ZG91YmxlVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxEb3VibGU7Ci19CisgICAgc2l6
ZV90IGlkSW5kZXgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1faWQpOyB9
CiAKLWlubGluZSBpbnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsKLSAgICByZXR1cm4gbV9l
bnRyeS52YWxJbnQzMjsKLX0KKyAgICBPcHRpb25JRCBtX2lkOworICAgIHVuaW9uIHsKIAotaW5s
aW5lIE9wdGlvblJhbmdlIE9wdGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBt
X2VudHJ5LnZhbE9wdGlvblJhbmdlOwotfQorI2RlZmluZSBERUNMQVJFX01FTUJFUihPcHRpb25U
eXBlXywgdHlwZV8pIFwKKyAgICAgICAgdHlwZV8gbV92YWwjI09wdGlvblR5cGVfOworICAgIEZP
Ul9FQUNIX0pTQ19PUFRJT05fVFlQRShERUNMQVJFX01FTUJFUikKKyN1bmRlZiBERUNMQVJFX01F
TUJFUgogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQotewot
ICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0KLQotaW5saW5lIEdDTG9nZ2lu
Zzo6TGV2ZWwmIE9wdGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnku
dmFsR0NMb2dMZXZlbDsKLX0KKyAgICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9u
IDI1MTc5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkdDTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCiBuYW1l
c3BhY2UgSlNDIHsKIAogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8g
YmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKIC8vIGFsb25n
IHdpdGggdGhlaXIgdHlwZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucyB2YWx1ZXMg
YXJlIGFjdHVhbGx5Ci0vLyByZWFsaXplZCBhcyBhbiBhcnJheSBvZiBPcHRpb25FbnRyeSBlbGVt
ZW50cyBpbiBKU0M6OkNvbmZpZy4KKy8vIHJlYWxpemVkIGFzIGFycmF5cyBvZiBlYWNoIG9mIHRo
ZSBPcHRpb25UeXBlcyBpbiBKU0M6OkNvbmZpZy4KIC8vCi0vLyAgICAgT3B0aW9uczo6aW5pdGlh
bGl6ZSgpIHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAor
Ly8gICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5cyBv
ZiBvcHRpb25zIHZhbHVlcyB3aXRoCiAvLyB0aGUgZGVmYXVsdHMgc3BlY2lmaWVkIGluIEZPUl9F
QUNIX0pTQ19PUFRJT04oKSBiZWxvdy4gQWZ0ZXIgdGhhdCwgdGhlIHZhbHVlcyBjYW4KIC8vIGJl
IHByb2dyYW1tYXRpY2FsbHkgcmVhZCBhbmQgd3JpdHRlbiB0byB1c2luZyBhbiBhY2Nlc3NvciBt
ZXRob2Qgd2l0aCB0aGUKIC8vIHNhbWUgbmFtZSBhcyB0aGUgb3B0aW9uLiBGb3IgZXhhbXBsZSwg
dGhlIG9wdGlvbiAidXNlSklUIiBjYW4gYmUgcmVhZCBhbmQKQEAgLTU0LDYgKzU3LDY4IEBAIG5h
bWVzcGFjZSBKU0MgewogLy8gY2hlY2tzIGFyZSBkb25lIGFmdGVyIHRoZSBvcHRpb24gdmFsdWVz
IGFyZSBzZXQuIElmIHlvdSBhbHRlciB0aGUgb3B0aW9uCiAvLyB2YWx1ZXMgYWZ0ZXIgdGhlIHNh
bml0eSBjaGVja3MgKGZvciB5b3VyIG93biB0ZXN0aW5nKSwgdGhlbiB5b3UncmUgbGlhYmxlIHRv
CiAvLyBlbnN1cmUgdGhhdCB0aGUgbmV3IHZhbHVlcyBzZXQgYXJlIHNhbmUgYW5kIHJlYXNvbmFi
bGUgZm9yIHlvdXIgb3duIHJ1bi4KKy8vCisvLyBBbnkgbW9kaWZpY2F0aW9ucyB0byBvcHRpb25z
IG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIGZpcnN0IFZNIGlzIGluc3RhbnRpYXRlLgorLy8gT24g
aW5zdGFudGlhdGlvbiBvZiB0aGUgZmlyc3QgVk0gaW5zdGFuY2UsIHRoZSBPcHRpb25zIHdpbGwg
YmUgd3JpdGUgcHJvdGVjdGVkCisvLyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIHRoZXJlYWZ0ZXIu
CisKK2NsYXNzIE9wdGlvblJhbmdlIHsKK3ByaXZhdGU6CisgICAgZW51bSBSYW5nZVN0YXRlIHsg
VW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07CitwdWJsaWM6Cisg
ICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCisgICAgeyAvLyBPbmx5
IG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaWYgKCFyaHMpIHsKKyAgICAgICAg
ICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICAgICAgbV9yYW5nZVN0cmluZyA9
IDA7CisgICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsKKyAgICAgICAgICAgIG1faGlnaExpbWl0
ID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9v
bCBpbml0KGNvbnN0IGNoYXIqKTsKKyAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25lZCk7CisgICAg
Y29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0ZSA+IEluaXRF
cnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOworCisgICAgUmFuZ2VTdGF0ZSBtX3N0YXRl
OworICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7CisgICAgdW5zaWduZWQgbV9sb3dMaW1p
dDsKKyAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsKK307CisKKyNkZWZpbmUgRk9SX0VBQ0hfSlND
X09QVElPTl9UWVBFKHYpIFwKKyAgICB2KEJvb2wsIGJvb2wpIFwKKyAgICB2KFVuc2lnbmVkLCB1
bnNpZ25lZCkgXAorICAgIHYoRG91YmxlLCBkb3VibGUpIFwKKyAgICB2KEludDMyLCBpbnQzMl90
KSBcCisgICAgdihTaXplLCBzaXplX3QpIFwKKyAgICB2KE9wdGlvblJhbmdlLCBPcHRpb25SYW5n
ZSkgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBjb25zdCBjaGFyKikgXAorICAgIHYoR0NMb2dMZXZl
bCwgR0NMb2dnaW5nOjpMZXZlbCkgXAorCituYW1lc3BhY2UgT3B0aW9uVHlwZXMgeworCisjZGVm
aW5lIERFQ0xBUkVfVFlQRVMoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgdXNpbmcgT3B0aW9u
VHlwZV8gPSB0eXBlXzsKKyAgICBGT1JfRUFDSF9KU0NfT1BUSU9OX1RZUEUoREVDTEFSRV9UWVBF
UykKKyN1bmRlZiBERUNMQVJFX1RZUEVTCisKK30gLy8gbmFtZXNwYWNlIE9wdGlvblR5cGVzCisK
K2VudW0gY2xhc3MgT3B0aW9uVHlwZUlEIDogdWludDhfdCB7CisKKyNkZWZpbmUgREVDTEFSRV9U
WVBFSUQoT3B0aW9uVHlwZV8sIHR5cGVfKSBcCisgICAgT3B0aW9uVHlwZV8sCisgICAgRk9SX0VB
Q0hfSlNDX09QVElPTl9UWVBFKERFQ0xBUkVfVFlQRUlEKQorI3VuZGVmIERFQ0xBUkVfVFlQRUlE
CisKK307CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTih2KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2KEJvb2wsIHVzZUtlcm5UQ1NNLCB0cnVl
LCBOb3JtYWwsICJOb3RlOiB0aGlzIG5lZWRzIHRvIGdvIGJlZm9yZSBvdGhlciBvcHRpb25zIHNp
bmNlIHRoZXkgZGVwZW5kIG9uIHRoaXMgdmFsdWUuIikgXApAQCAtNTEwLDYgKzU3NSwxNCBAQCBl
bnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICB2KG1heGltdW1GVExDYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50LCBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0LCBTYW1lT3B0aW9uKSBc
CiAgICAgdihtYXhpbXVtSW5saW5pbmdDYWxsZXJTaXplLCBtYXhpbXVtSW5saW5pbmdDYWxsZXJC
eXRlY29kZUNvc3QsIFNhbWVPcHRpb24pIFwKIAorI2RlZmluZSBERUNMQVJFX09QVElPTl9JRCh0
eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykg
XAorICAgIG5hbWVfLAorZW51bSBjbGFzcyBPcHRpb25JRCA6IHVpbnQxNl90IHsKKyAgICBGT1Jf
RUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lEKQorfTsKKyN1bmRlZiBERUNMQVJFX09Q
VElPTl9JRAorCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnZhbGlkT3B0aW9uSW5kZXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwogCiBjb25zdGV4cHIgc2l6ZV90IGNv
dW50TnVtYmVyT2ZKU0NPcHRpb25zKCkKIHsKQEAgLTUyMiw1ICs1OTUsMjQgQEAgY29uc3RleHBy
IHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucwogCiBjb25zdGV4cHIgc2l6ZV90IE51bWJl
ck9mT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8gbmFtZXNwYWNl
IEpTQworY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRp
b25UeXBlSUQgdHlwZSkKK3sKKyAgICBzaXplX3QgY291bnQgPSAwOworI2RlZmluZSBDT1VOVF9P
UFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKKyAgICBpZiAodHlwZSA9PSBPcHRpb25UeXBlSUQ6OnR5cGVfKSBcCisgICAgICAg
IGNvdW50Kys7CisgICAgRk9SX0VBQ0hfSlNDX09QVElPTihDT1VOVF9PUFRJT04pOworI3VuZGVm
IENPVU5UX09QVElPTgorICAgIHJldHVybiBjb3VudDsKK30KIAorY29uc3RleHByIHNpemVfdCBO
dW1iZXJPZkJvb2xPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9u
VHlwZUlEOjpCb29sKTsKK2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZVbnNpZ25lZE9wdGlvbnMg
PSBjb3VudE51bWJlck9mSlNDT3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6OlVuc2lnbmVkKTsK
K2NvbnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZEb3VibGVPcHRpb25zID0gY291bnROdW1iZXJPZkpT
Q09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpEb3VibGUpOworY29uc3RleHByIHNpemVfdCBO
dW1iZXJPZkludDMyT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zT2ZUeXBlKE9wdGlv
blR5cGVJRDo6SW50MzIpOworY29uc3RleHByIHNpemVfdCBOdW1iZXJPZlNpemVPcHRpb25zID0g
Y291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0aW9uVHlwZUlEOjpTaXplKTsKK2NvbnN0
ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25SYW5nZU9wdGlvbnMgPSBjb3VudE51bWJlck9mSlND
T3B0aW9uc09mVHlwZShPcHRpb25UeXBlSUQ6Ok9wdGlvblJhbmdlKTsKK2NvbnN0ZXhwciBzaXpl
X3QgTnVtYmVyT2ZPcHRpb25TdHJpbmdPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNP
ZlR5cGUoT3B0aW9uVHlwZUlEOjpPcHRpb25TdHJpbmcpOworY29uc3RleHByIHNpemVfdCBOdW1i
ZXJPZkdDTG9nTGV2ZWxPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnNPZlR5cGUoT3B0
aW9uVHlwZUlEOjpHQ0xvZ0xldmVsKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383711</attachid>
            <date>2019-11-16 18:46:27 -0800</date>
            <delta_ts>2019-11-16 19:08:03 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-202105c.patch</filename>
            <type>text/plain</type>
            <size>46342</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyNTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxOS0xMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTY0MTA0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb25zIHVzZWQgdG8gYmUgc3RvcmVkIGFzIGFuIGFy
cmF5IG9mIHVuaW9ucyBvZiBhbGwgb3B0aW9uIHR5cGVzLCB3aGVyZSB0aGUKKyAgICAgICAgc2l6
ZSBvZiB0aGUgYXJyYXkgaXMgYXJvdW5kIDM0OSBlbGVtZW50cy4gIFdlIGFsc28gbmVlZGVkIGEg
c2Vjb25kIGFycmF5IGZvciB0aGUKKyAgICAgICAgZGVmYXVsdCBvcHRpb24gdmFsdWUuICBXZSBu
b3cgc3RvcmUgZWFjaCBvcHRpb24gKGFuZCBpdHMgZGVmYXVsdCB2YWx1ZSkgYXMgYSB0eXBlCisg
ICAgICAgIHNwZWNpZmljIGZpZWxkIGluIGFuIE9wdGlvbnNTdG9yYWdlIHN0cnVjdC4gIFRoaXMg
cmVkdWNlcyB0aGUgc2l6ZSBvZiBzdG9yYWdlIGZvcgorICAgICAgICBPcHRpb25zIGZyb20gMTY3
NTIgdG8gMjE5MiBieXRlcy4gIFRoaXMsIGluIHR1cm4sIGFsbG93cyBKU0M6OkNvbmZpZyB0byBm
aXQgaW4gYQorICAgICAgICBzaW5nbGUgcGFnZS4KKyAKKyAgICAgICAgVGhlIHJlYXNvbiB3ZSBw
cmV2aW91c2x5IHN0b3JlZCBvcHRpb25zIGluIGFuIGFycmF5IG9mIHVuaW9ucyBpcyB0byBhbGxv
dyB1cyB0bworICAgICAgICByYW5kb21seSBhY2Nlc3MgZWFjaCBvcHRpb24gYnkgaXRzIGlkLiAg
V2Ugbm93IHN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIG9wdGlvbgorICAgICAgICBmaWVsZCBpbiB0
aGUgT3B0aW9uczo6c19jb25zdE1ldGFEYXRhIGFycmF5IChwcmV2aW91c2x5IGNhbGxlZCBzX29w
dGlvbnNJbmZvKS4KKyAgICAgICAgV2l0aCB0aGlzIG9mZnNldCwgd2UgY2FuIGNvbXB1dGUgdGhl
IGFkZHJlc3Mgb2YgdGhlIG9wdGlvbiB2YWx1ZSBmaWVsZCBpbgorICAgICAgICB0aGUgT3B0aW9u
c1N0b3JhZ2Ugc3RydWN0IGluIHRoZSBKU0M6OkNvbmZpZy4KKyAKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgYWxzbzoKKworICAgICAgICAxLiBSZW5hbWVkIE9wdGlvbnM6OnNfb3B0aW9uc0lu
Zm8gdG8gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhLgorCisgICAgICAgIDIuIFJlZmFjdG9yIHRo
ZSBPcHRpb24gY2xhc3MgaW50byB0aGUgT3B0aW9uUmVhZGVyOjpPcHRpb24gY2xhc3MuCisKKyAg
ICAgICAgICAgUHJldmlvdXNseSwgdGhlIE9wdGlvbiBjbGFzcyBwcm92aWRlZCBhbm90aGVyIHdh
eSB0byBhY2Nlc3Mgb3B0aW9uIHZhbHVlcywKKyAgICAgICAgICAgc3BlY2lmaWNhbGx5IHdoZW4g
d2UgbmVlZCB0byBhY2Nlc3MgdGhlbSBieSBpZC4gIEl0IGFsc28gcHJvdmlkZWQgYSBtZWFucyB0
bworICAgICAgICAgICBjaGFuZ2UgdGhhdCBvcHRpb24gdmFsdWUuICBIb3dldmVyLCBpdCBwcmFj
dGljZSwgd2UgY2FuIGRvIHdpdGhvdXQgdGhpcywgYW5kCisgICAgICAgICAgIHJlbW92ZSBhIGxv
dCBvZiB0aGUgY29kZS4gIFRoaXMgY2xhc3Mgbm93IGV4aXN0cyBhcyBPcHRpb25SZWFkZXI6Ok9w
dGlvbiB3aGljaAorICAgICAgICAgICBvbmx5IHByb3ZpZGVzIGEgbWVhbnMgdG8gcmVhZCBpbmZv
cm1hdGlvbiBhYm91dCBvcHRpb25zLCBidXQgbm90IGNoYW5nZSB0aGVtCisgICAgICAgICAgIFRo
ZSBvbmx5IGNsaWVudCBmb3IgdGhpcyBjbGFzcyBpcyB0aGUgZHVtcE9wdGlvbigpIGZ1bmN0aW9u
LgorCisgICAgICAgIDMuIFJlbW92ZWQgdGhlIE9wdGlvbkVudHJ5IGNsYXNzLiAgSXQgcHJldmlv
dXNseSBzZXJ2ZWQgMiBwdXJwb3NlOgorICAgICAgICAgICBhLiBEZWZpbmUgdGhlIG9wdGlvbiB0
eXBlcy4gIFRoZSB0eXBlcyBhcmUgbm93IGRlZmluZWQgaW4gT3B0aW9uc1N0b3JhZ2UuCisgICAg
ICAgICAgIGIuIERlZmluZSBhIHVuaW9uIGFic3RyYWN0IHR5cGUgbGFyZ2UgZW5vdWdoIHRvIHN0
b3JlIGFueSBvcHRpb24gdmFsdWUuCisgICAgICAgICAgICAgIFRoaXMgaXMgbm93IGV4cHJlc3Nl
ZCBhcyBhIHVuaW9uIG1lbWJlciBpbiBPcHRpb25SZWFkZXI6Ok9wdGlvbi4KKyAKKyAgICAgICAg
ICAgT3B0aW9uRW50cnkuaCBhbHNvIGRlZmluZXMgdGhlIE9wdGlvblJhbmdlIGNsYXNzLiAgT3B0
aW9uUmFuZ2UgaXMgbm93IG1vdmVkCisgICAgICAgICAgIHRvIE9wdGlvbnNMaXN0LmguCisgCisg
ICAgICAgIDQuIENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvcHRpb24gdmFsdWUg
cGFyc2UgZnVuY3Rpb25zIHRvIHJldHVybgorICAgICAgICAgICBPcHRpb25hbCB2YWx1ZXMgaW5z
dGVhZCBvZiB0YWtpbmcgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlLiAgVGhpcyBtYWtlcyB0aGUK
KyAgICAgICAgICAgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gcmVhZCBvbiB0aGUgY2xpZW50
IHNpZGUuCisKKyAgICAgICAgNS4gRml4ZWQgc2NhbGVKSVRQb2xpY3koKSB0byBub3QgcmVseSBv
biB0aGUgT3B0aW9uIGNsYXNzIChzZWUgMiBhYm92ZSksIGFuZCB1c2UKKyAgICAgICAgICAgdGhl
IGNhbm9uaWNhbCB3YXkgdG8gcmVhZCBhbmQgd3JpdGUgb3B0aW9uIHZhbHVlcyBpbnN0ZWFkIGku
ZS4gdmlhIHRoZQorICAgICAgICAgICBPcHRpb25zOjo8b3B0aW9uTmFtZT4oKSBhY2Nlc3NvcnMu
CisKKyAgICAgICAgNi4gRml4ZWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpIHRvIHJlbHkg
b24gdGhlIE9wdGlvbiBjbGFzcyAoc2VlIDIgYWJvdmUpLgorICAgICAgICAgICBXZSBjYW4gY29t
cGFyZSB0aGUgb3B0aW9uIGFnYWluc3QgaXRzIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlIGNhbm9u
aWNhbAorICAgICAgICAgICBhY2Nlc3NvcnMuCisKKyAgICAgICAgNy4gRml4ZWQgT3B0aW9uczo6
aW5pdGlhbGl6ZSgpIHRvIG9ubHkgY29tcHV0ZSB0aGUgZGVmYXVsdCBvcHRpb24gdmFsdWUgb25j
ZS4KKyAgICAgICAgICAgVGhlICJkZWZhdWx0IiB2YWx1ZSBtYXkgYWN0dWFsbHkgYmUgYSBmdW5j
dGlvbiBjYWxsLiAgVGhvdWdoIGN1cnJlbnQgdXNlcyBkb2VzCisgICAgICAgICAgIG5vdCBoYXZl
IHNpZGUgZWZmZWN0cyBpZiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0IGlzIGJlc3QgdG8gbm90
IGFzc3VtZSB0aGlzLgorCisgICAgICAgIDguIE1vdmVkIHRoZSBkZWZpbml0aW9uIG9mICBNQVhJ
TVVNX05VTUJFUl9PRl9GVExfQ09NUElMRVJfVEhSRUFEUyBhbmQKKyAgICAgICAgICAgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgIGZyb20gT3B0aW9ucy5oIHRvIE9wdGlvbnNMaXN0Lmgg
YmVjYXVzZSB0aGV5IGFyZQorICAgICAgICAgICB1c2VkIHRoZXJlIGZpcnN0LgorCisgICAgICAg
IDkuIFJlZHVjZWQgdGhlIHNpemUgb2YgdGhlIEpTQzo6Q29uZmlnIHRvIDEgUGFnZVNpemUuCisg
CisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHA6CisgICAgICAgIChqc2NPcHRpb25z
U2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9uc0dldFZhbHVlKToKKyAgICAgICAgKGpzY19v
cHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGlt
ZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbkVudHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgor
ICAgICAgICAoSlNDOjpzY2FsZUpJVFBvbGljeSk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURl
cGVuZGVudE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb24p
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0KToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNl
dE9wdGlvbldpdGhvdXRBbGlhcyk6CisgICAgICAgIChKU0M6OmludmVydEJvb2xPcHRpb25WYWx1
ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldEFsaWFzZWRPcHRpb24pOgorICAgICAgICAo
SlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRl
cjo6T3B0aW9uOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVy
OjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjphdmFp
bGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6aXNP
dmVycmlkZGVuIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVyOjpPcHRpb246Ok9w
dGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlND
OjpPcHRpb25SZWFkZXI6Om9wdGlvbkZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6
ZGVmYXVsdEZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjppbml0VmFs
dWUpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjpkdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnMuaDoKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpPcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPcHRpb246OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpuYW1l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZXNjcmlwdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6dHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6YXZhaWxhYmlsaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjppc092ZXJyaWRkZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246OmRlZmF1bHRPcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpPcHRpb246OmJvb2xWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OnVu
c2lnbmVkVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkb3VibGVWYWwpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OmludDMyVmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9u
OjpnY0xvZ0xldmVsVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpvcGVyYXRvcj0gKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uUmFuZ2U6OnJhbmdlU3RyaW5nIGNvbnN0KToKKwogMjAxOS0xMS0xNSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBpbmRl
eC1tYXNraW5nIG9uIFNjb3BlZEFyZ3VtZW50cyBhbmQgcHV0IGl0IGluIElzb1N1YnNwYWNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTI1MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk0Myw3ICs5NDMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
CiAgICAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKICAgICBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oCiAgICAgcnVudGltZS9PcGVyYXRpb25zLmgKLSAgICBydW50aW1lL09w
dGlvbkVudHJ5LmgKICAgICBydW50aW1lL09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xp
c3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNTZXRWYWx1ZShjb25z
dAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25h
bWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIE9wdGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvU2V0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghdmFsdWVGcm9t
R1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVfKCkgPSB2YWx1ZVRvU2V0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBHRVRfT1BUSU9O
X1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2
YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCisgICAgICAgIE9w
dGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVUb0dldCwgdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBUUlVFOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAt
NjE3LDcgKzYxNyw3IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFjaChKU0NPcHRpb25zRnVuYyAK
ICNkZWZpbmUgVklTSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxh
YmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6
YXZhaWxhYmlsaXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCiAgICAgICAg
IHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBl
XyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IE9wdGlvbnNTdG9yYWdlOjp0eXBlXyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGF1dG8gb3B0aW9uVHlwZSA9IGpzY09wdGlvbnNUeXBlKGRl
ZmF1bHRWYWx1ZSk7ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChmdW5jdGlvbiAoI25h
bWVfLCBvcHRpb25UeXBlLCBkZXNjcmlwdGlvbl8sIHVzZXJEYXRhKSkgICAgICBcCiAgICAgICAg
ICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUy
NTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzgsNyArMTg3OCw2IEBACiAJCUZF
MzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8q
IFZNSW5zcGVjdG9yLmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJF
ODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
Mzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbnNMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgfTsKQEAg
LTUwOTgsNyArNTA5Nyw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25z
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNv
ZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91
cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0
Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1l
dGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIzMjRENTFB
MDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzEy
MzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDIzLDcgKzc0MjEsNiBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMw
MDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICov
LAogCQkJCUY2OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQlGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0
MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBP
cHRpb25zTGlzdC5oICovLApAQCAtOTk1Miw3ICs5OTQ5LDYgQEAKIAkJCQkwRjJCREMyQzE1MUZE
RTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdB
MEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCShyZXZpc2lvbiAyNTI1MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIk9wdGlvbkVudHJ5LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQwLDcgKzM5LDcgQEAgY29u
c3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7CiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VT
aXplID0gNCAqIEtCOwogI2VuZGlmCiAKLWNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJv
dGVjdCA9IDMyICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBQ
YWdlU2l6ZTsKIAogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKIHVzaW5nIEpJVFdyaXRl
U2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3QsIGNvbnN0IHZvaWQqLCBzaXpl
X3QpOwpAQCAtODIsOCArODEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgICAgIGJvb2wg
dXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKLSAgICAgICAgICAgIE9wdGlvbkVu
dHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IGRl
ZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107CisgICAgICAgICAgICBPcHRpb25zU3RvcmFn
ZSBvcHRpb25zOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6
ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uRW50cnkuaAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgT3B0aW9uUmFuZ2UgewotcHJpdmF0ZToKLSAg
ICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52
ZXJ0ZWQgfTsKLXB1YmxpYzoKLSAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChjb25zdCBpbnQm
IHJocykKLSAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgotICAgICAgICBp
ZiAoIXJocykgewotICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7Ci0gICAgICAg
ICAgICBtX3JhbmdlU3RyaW5nID0gMDsKLSAgICAgICAgICAgIG1fbG93TGltaXQgPSAwOwotICAg
ICAgICAgICAgbV9oaWdoTGltaXQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoY29uc3QgY2hhciopOwotICAgIGJvb2wgaXNJblJh
bmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251bGxSYW5nZVN0
cjsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VTdHI7Ci0KLSAg
ICBSYW5nZVN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgY2hhciogbV9yYW5nZVN0cmluZzsKLSAg
ICB1bnNpZ25lZCBtX2xvd0xpbWl0OwotICAgIHVuc2lnbmVkIG1faGlnaExpbWl0OwotfTsKLQot
Ly8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKLXVuaW9uIE9wdGlvbkVudHJ5IHsK
LSAgICB1c2luZyBCb29sID0gYm9vbDsKLSAgICB1c2luZyBVbnNpZ25lZCA9IHVuc2lnbmVkOwot
ICAgIHVzaW5nIERvdWJsZSA9IGRvdWJsZTsKLSAgICB1c2luZyBJbnQzMiA9IGludDMyX3Q7Ci0g
ICAgdXNpbmcgU2l6ZSA9IHNpemVfdDsKLSAgICB1c2luZyBPcHRpb25SYW5nZSA9IEpTQzo6T3B0
aW9uUmFuZ2U7Ci0gICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3QgY2hhcio7Ci0gICAgdXNp
bmcgR0NMb2dMZXZlbCA9IEdDTG9nZ2luZzo6TGV2ZWw7Ci0KLSAgICBib29sIHZhbEJvb2w7Ci0g
ICAgdW5zaWduZWQgdmFsVW5zaWduZWQ7Ci0gICAgZG91YmxlIHZhbERvdWJsZTsKLSAgICBpbnQz
Ml90IHZhbEludDMyOwotICAgIHNpemVfdCB2YWxTaXplOwotICAgIE9wdGlvblJhbmdlIHZhbE9w
dGlvblJhbmdlOwotICAgIGNvbnN0IGNoYXIqIHZhbE9wdGlvblN0cmluZzsKLSAgICBHQ0xvZ2dp
bmc6OkxldmVsIHZhbEdDTG9nTGV2ZWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTI1
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC01Niw4MCArNTcsOTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgYm9vbCYgdmFsdWUpCi17Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY21wKHN0
cmluZywgIjEiKSkgewotICAgICAgICB2YWx1ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAi
ZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8
ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7Ci0gICAgICAgIHZhbHVlID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorT3B0aW9uYWw8VD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKTsKIAotc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBpbnQzMl90JiB2YWx1ZSkKK3RlbXBsYXRl
PD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKKyAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJ1ZSIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInllcyIpIHx8ICFzdHJjbXAoc3Ry
aW5nLCAiMSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICJubyIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCit0ZW1wbGF0ZTw+CitP
cHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykK
IHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxOworICAgIGlu
dDMyX3QgdmFsdWU7CisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBib29sIFVOVVNFRF9GVU5DVElPTiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxvbmcmIHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlbHUiLCAmdmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlOworICAgIGlmIChzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBVTlVTRURfRlVOQ1RJT04g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKQordGVt
cGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlNpemU+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKIHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsbHUiLCAmdmFsdWUpOwor
ICAgIHNpemVfdCB2YWx1ZTsKKyAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkg
PT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9
CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkK
K3RlbXBsYXRlPD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpEb3VibGU+IHBhcnNlKGNvbnN0
IGNoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1
ZSkgPT0gMTsKKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlbGYi
LCAmdmFsdWUpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wdGlv
blJhbmdlJiB2YWx1ZSkKK3RlbXBsYXRlPD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRp
b25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIHJldHVybiB2YWx1ZS5p
bml0KHN0cmluZyk7CisgICAgT3B0aW9uUmFuZ2UgcmFuZ2U7CisgICAgaWYgKHJhbmdlLmluaXQo
c3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIHJhbmdlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciom
IHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmlu
Zz4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIGlmICghc3RybGVuKHN0cmluZykp
IHsKLSAgICAgICAgdmFsdWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
CisgICAgY29uc3QgY2hhciogdmFsdWUgPSBudWxscHRyOworICAgIGlmICghc3RybGVuKHN0cmlu
ZykpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNjkwNTc+OiBUaGlzIGNvdWxkIGxlYWsgaWYgdGhpcyBvcHRpb24gaXMgc2V0IG1v
cmUgdGhhbiBvbmNlLgogICAgIC8vIEdpdmVuIHRoYXQgT3B0aW9ucyBhcmUgdHlwaWNhbGx5IHVz
ZWQgZm9yIHRlc3RpbmcsIHRoaXMgaXNuJ3QgY29uc2lkZXJlZCB0byBiZSBhIHByb2JsZW0uCiAg
ICAgdmFsdWUgPSBXVEY6OmZhc3RTdHJEdXAoc3RyaW5nKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCit0ZW1wbGF0ZTw+CitPcHRpb25hbDxPcHRpb25z
U3RvcmFnZTo6R0NMb2dMZXZlbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJub25lIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm8iKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmYWxzZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7
Ci0gICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpOb25lOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIm5v
bmUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZhbHNlIikgfHwgIXN0cmNtcChz
dHJpbmcsICIwIikpCisgICAgICAgIHJldHVybiBHQ0xvZ2dpbmc6Ok5vbmU7CiAKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiYmFzaWMiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ0cnVlIikgfHwgIXN0cmNtcChzdHJpbmcsICIxIikpIHsK
LSAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OkJhc2ljOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImJh
c2ljIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAieWVzIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJ1ZSIpIHx8ICFzdHJjbXAo
c3RyaW5nLCAiMSIpKQorICAgICAgICByZXR1cm4gR0NMb2dnaW5nOjpCYXNpYzsKIAotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ2ZXJib3NlIikgfHwgIXN0
cmNtcChzdHJpbmcsICIyIikpIHsKLSAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OlZlcmJvc2U7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLCAidmVyYm9zZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMiIpKQor
ICAgICAgICByZXR1cm4gR0NMb2dnaW5nOjpWZXJib3NlOwogCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGJvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUo
T3B0aW9uczo6SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCkBAIC0y
ODMsOSArMjk0LDkgQEAgdm9pZCBPcHRpb25SYW5nZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQog
fQogCiAvLyBSZWFsaXplIHRoZSBuYW1lcyBmb3IgZWFjaCBvZiB0aGUgb3B0aW9uczoKLWNvbnN0
IE9wdGlvbnM6OkVudHJ5SW5mbyBPcHRpb25zOjpzX29wdGlvbnNJbmZvW09wdGlvbnM6Om51bWJl
ck9mT3B0aW9uc10gPSB7Citjb25zdCBPcHRpb25zOjpDb25zdE1ldGFEYXRhIE9wdGlvbnM6OnNf
Y29uc3RNZXRhRGF0YVtOdW1iZXJPZk9wdGlvbnNdID0gewogI2RlZmluZSBGSUxMX09QVElPTl9J
TkZPKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRp
b25fKSBcCi0gICAgeyAjbmFtZV8sIGRlc2NyaXB0aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8s
IEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyB9LAorICAgIHsgI25hbWVfLCBkZXNjcmlwdGlv
bl8sIE9wdGlvbnM6OlR5cGU6OnR5cGVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8sIG9m
ZnNldG9mKE9wdGlvbnNTdG9yYWdlLCBuYW1lXyksIG9mZnNldG9mKE9wdGlvbnNTdG9yYWdlLCBu
YW1lXyMjRGVmYXVsdCkgfSwKICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKEZJTExfT1BUSU9OX0lO
Rk8pCiAjdW5kZWYgRklMTF9PUFRJT05fSU5GTwogfTsKQEAgLTI5OCwyOCArMzA5LDE4IEBAIHN0
YXRpYyB2b2lkIHNjYWxlSklUUG9saWN5KCkKICAgICBlbHNlIGlmIChzY2FsZUZhY3RvciA8IDAu
MCkKICAgICAgICAgc2NhbGVGYWN0b3IgPSAwLjA7CiAKLSAgICBzdHJ1Y3QgT3B0aW9uVG9TY2Fs
ZSB7Ci0gICAgICAgIE9wdGlvbnM6OklEIGlkOwotICAgICAgICBpbnQzMl90IG1pblZhbDsKLSAg
ICB9OwotCi0gICAgc3RhdGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2NhbGVbXSA9
IHsKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElELCAwIH0s
Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0gICAgICAg
IHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0sCi0gICAg
ICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJRCwgMSB9
LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAxIH0sCi0g
ICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIgfSwKLSAg
ICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIDIg
fQorICAgIGF1dG8gc2NhbGVPcHRpb24gPSBbJl0gKGludDMyX3QmIG9wdGlvblZhbHVlLCBpbnQz
Ml90IG1pblZhbHVlKSB7CisgICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9yOworICAg
ICAgICBvcHRpb25WYWx1ZSA9IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBtaW5WYWx1ZSk7CiAgICAg
fTsKIAotICAgIGNvbnN0IGludCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlID0gc2l6ZW9mKG9wdGlv
bnNUb1NjYWxlKSAvIHNpemVvZihPcHRpb25Ub1NjYWxlKTsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bWJlck9mT3B0aW9uc1RvU2NhbGU7IGkrKykgewotICAgICAgICBPcHRpb24gb3B0aW9u
KG9wdGlvbnNUb1NjYWxlW2ldLmlkKTsKLSAgICAgICAgQVNTRVJUKG9wdGlvbi50eXBlKCkgPT0g
T3B0aW9uczo6VHlwZTo6SW50MzIpOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSAqPSBzY2Fs
ZUZhY3RvcjsKLSAgICAgICAgb3B0aW9uLmludDMyVmFsKCkgPSBzdGQ6Om1heChvcHRpb24uaW50
MzJWYWwoKSwgb3B0aW9uc1RvU2NhbGVbaV0ubWluVmFsKTsKLSAgICB9CisgICAgc2NhbGVPcHRp
b24oT3B0aW9uczo6dGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXAoKSwgMCk7CisgICAgc2NhbGVP
cHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbigpLCAwKTsKKyAgICBzY2FsZU9wdGlv
bihPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCksIDEpOworICAgIHNj
YWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCks
IDEpOworICAgIHNjYWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbigp
LCAxKTsKKyAgICBzY2FsZU9wdGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNv
b24oKSwgMik7CisgICAgc2NhbGVPcHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1p
emVBZnRlcldhcm1VcCgpLCAyKTsKIH0KIAogc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygp
CkBAIC00NDYsNyArNDQ3LDcgQEAgc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9u
cygpCiAgICAgaWYgKCFPcHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSkKICAgICAgICAgT3B0aW9u
czo6Y29sbGVjdENvbnRpbnVvdXNseSgpID0gZmFsc2U7CiAKLSAgICBpZiAoT3B0aW9uKE9wdGlv
bnM6OmppdFBvbGljeVNjYWxlSUQpLmlzT3ZlcnJpZGRlbigpKQorICAgIGlmIChPcHRpb25zOjpq
aXRQb2xpY3lTY2FsZSgpICE9IE9wdGlvbnM6OmppdFBvbGljeVNjYWxlRGVmYXVsdCgpKQogICAg
ICAgICBzY2FsZUpJVFBvbGljeSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpmb3JjZUVhZ2Vy
Q29tcGlsYXRpb24oKSkgewpAQCAtNTE2LDYgKzUxNywxOCBAQCBzdGF0aWMgdm9pZCByZWNvbXB1
dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICAgICAgT3B0aW9uczo6cmFuZG9tSW50ZWdyaXR5QXVk
aXRSYXRlKCkgPSAxLjA7CiB9CiAKK2lubGluZSB2b2lkKiBPcHRpb25zOjphZGRyZXNzT2ZPcHRp
b24oT3B0aW9uczo6SUQgaWQpCit7CisgICAgYXV0byBvZmZzZXQgPSBPcHRpb25zOjpzX2NvbnN0
TWV0YURhdGFbaWRdLm9mZnNldE9mT3B0aW9uOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmZ19qc2NDb25maWcub3B0aW9ucykgKyBvZmZzZXQ7Cit9CisKK2lubGluZSB2
b2lkKiBPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0KE9wdGlvbnM6OklEIGlkKQorewor
ICAgIGF1dG8gb2Zmc2V0ID0gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhW2lkXS5vZmZzZXRPZk9w
dGlvbkRlZmF1bHQ7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZnX2pz
Y0NvbmZpZy5vcHRpb25zKSArIG9mZnNldDsKK30KKwogdm9pZCBPcHRpb25zOjppbml0aWFsaXpl
KCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9wdGlvbnNPbmNlRmxh
ZzsKQEAgLTUyMywxMyArNTM2LDIzIEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAg
c3RkOjpjYWxsX29uY2UoCiAgICAgICAgIGluaXRpYWxpemVPcHRpb25zT25jZUZsYWcsCiAgICAg
ICAgIFtdIHsKKyAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayB0aGF0IG9wdGlvbnMgYWRkcmVz
cyBjb21wdXRhdGlvbiBpcyB3b3JraW5nLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0
aW9uczo6YWRkcmVzc09mT3B0aW9uKHVzZUtlcm5UQ1NNSUQpID09ICAmT3B0aW9uczo6dXNlS2Vy
blRDU00oKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjphZGRyZXNzT2ZP
cHRpb25EZWZhdWx0KHVzZUtlcm5UQ1NNSUQpID09ICAmT3B0aW9uczo6dXNlS2VyblRDU01EZWZh
dWx0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09mT3B0
aW9uKGdjTWF4SGVhcFNpemVJRCkgPT0gICZPcHRpb25zOjpnY01heEhlYXBTaXplKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uRGVmYXVsdChn
Y01heEhlYXBTaXplSUQpID09ICAmT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZURlZmF1bHQoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjphZGRyZXNzT2ZPcHRpb24oZm9yY2VP
U1JFeGl0VG9MTEludElEKSA9PSAgJk9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0
KGZvcmNlT1NSRXhpdFRvTExJbnRJRCkgPT0gICZPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50
RGVmYXVsdCgpKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIENvbmZpZzo6ZW5hYmxl
UmVzdHJpY3RlZE9wdGlvbnMoKTsKICNlbmRpZgogICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBl
YWNoIG9mIHRoZSBvcHRpb25zIHdpdGggdGhlaXIgZGVmYXVsdCB2YWx1ZXM6Ci0jZGVmaW5lIElO
SVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVz
Y3JpcHRpb25fKSBcCi0gICAgICAgICAgICBuYW1lXygpID0gZGVmYXVsdFZhbHVlXzsgXAotICAg
ICAgICAgICAgbmFtZV8jI0RlZmF1bHQoKSA9IGRlZmF1bHRWYWx1ZV87CisjZGVmaW5lIElOSVRf
T1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSB7IFwKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gZGVmYXVsdFZhbHVlXzsg
XAorICAgICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsgXAorICAgICAgICAgICAgICAgIG5h
bWVfIyNEZWZhdWx0KCkgPSB2YWx1ZTsgXAorICAgICAgICAgICAgfQogICAgICAgICAgICAgRk9S
X0VBQ0hfSlNDX09QVElPTihJTklUX09QVElPTikKICN1bmRlZiBJTklUX09QVElPTgogCkBAIC03
MzIsNyArNzU1LDcgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwog
CiAgICAgY29uc3QgY2hhciogdmFsdWVTdHIgPSBlcXVhbFN0ciArIDE7CiAKLSAgICAvLyBGb3Ig
ZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZ5IGFyZyBpcyBhIG1hdGNoLiBJZiBzbywg
c2V0IHRoZSBhcmcKKyAgICAvLyBGb3IgZWFjaCBvcHRpb24sIGNoZWNrIGlmIHRoZSBzcGVjaWZp
ZWQgYXJnIGlzIGEgbWF0Y2guIElmIHNvLCBzZXQgdGhlIGFyZwogICAgIC8vIGlmIHRoZSB2YWx1
ZSBtYWtlcyBzZW5zZS4gT3RoZXJ3aXNlLCBtb3ZlIG9uIHRvIGNoZWNraW5nIHRoZSBuZXh0IG9w
dGlvbi4KICNkZWZpbmUgU0VUX09QVElPTl9JRl9NQVRDSCh0eXBlXywgbmFtZV8sIGRlZmF1bHRW
YWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIGlmIChzdHJsZW4oI25h
bWVfKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVxdWFsU3RyIC0gYXJnKSAgICAgIFwKQEAgLTc0
MCwxMSArNzYzLDEwIEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNvbnMK
ICAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFpbGFiaWxpdHk6
Ok5vcm1hbCAgICAgXAogICAgICAgICAgICAgJiYgIWlzQXZhaWxhYmxlKG5hbWVfIyNJRCwgQXZh
aWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgXAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT3B0aW9u
RW50cnk6OnR5cGVfIHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHZhbHVlID0gKGRlZmF1bHRWYWx1ZV8pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lXygp
ID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6dHlwZV8+IHZhbHVlOyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdmFsdWUgPSBwYXJzZTxPcHRpb25zU3RvcmFnZTo6dHlwZV8+KHZhbHVl
U3RyKTsgICAgICAgICAgICBcCisgICAgICAgIGlmICh2YWx1ZSkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgbmFtZV8oKSA9IHZh
bHVlLnZhbHVlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IGNvcnJlY3RPcHRpb25zKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTc1OCwxMyArNzgwLDEyIEBAIGJvb2wgT3B0
aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKGNvbnMKICAgICByZXR1cm4gZmFsc2U7IC8vIE5v
IG9wdGlvbiBtYXRjaGVkLgogfQogCi1zdGF0aWMgYm9vbCBpbnZlcnRCb29sT3B0aW9uVmFsdWUo
Y29uc3QgY2hhciogdmFsdWVTdHIsIGNvbnN0IGNoYXIqJiBpbnZlcnRlZFZhbHVlU3RyKQorc3Rh
dGljIGNvbnN0IGNoYXIqIGludmVydEJvb2xPcHRpb25WYWx1ZShjb25zdCBjaGFyKiB2YWx1ZVN0
cikKIHsKLSAgICBib29sIGJvb2xWYWx1ZTsKLSAgICBpZiAoIXBhcnNlKHZhbHVlU3RyLCBib29s
VmFsdWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW52ZXJ0ZWRWYWx1ZVN0ciA9IGJv
b2xWYWx1ZSA/ICJmYWxzZSIgOiAidHJ1ZSI7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgT3B0aW9u
YWw8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+IHZhbHVlID0gcGFyc2U8T3B0aW9uc1N0b3JhZ2U6OkJv
b2w+KHZhbHVlU3RyKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gdmFsdWUudmFsdWUoKSA/ICJmYWxzZSIgOiAidHJ1ZSI7CiB9CiAKIApAQCAt
Nzg4LDggKzgwOSw4IEBAIGJvb2wgT3B0aW9uczo6c2V0QWxpYXNlZE9wdGlvbihjb25zdCBjaGEK
ICAgICAgICAgICAgIHVuYWxpYXNlZE9wdGlvbiA9IHVuYWxpYXNlZE9wdGlvbiArIGVxdWFsU3Ry
OyAgICAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIEFTU0VSVChl
cXVpdmFsZW5jZSA9PSBJbnZlcnRlZE9wdGlvbik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGludmVydGVkVmFsdWVTdHIgPSBudWxscHRyOyAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlmICghaW52ZXJ0Qm9vbE9wdGlvblZhbHVlKGVx
dWFsU3RyICsgMSwgaW52ZXJ0ZWRWYWx1ZVN0cikpIFwKKyAgICAgICAgICAgIGF1dG8qIGludmVy
dGVkVmFsdWVTdHIgPSBpbnZlcnRCb29sT3B0aW9uVmFsdWUoZXF1YWxTdHIgKyAxKTsgXAorICAg
ICAgICAgICAgaWYgKCFpbnZlcnRlZFZhbHVlU3RyKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgdW5hbGlhc2VkT3B0
aW9uID0gdW5hbGlhc2VkT3B0aW9uICsgIj0iICsgaW52ZXJ0ZWRWYWx1ZVN0cjsgXAogICAgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtODIxLDcgKzg0Miw3IEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlv
bnMoU3RyaW5nQnVpbGQKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCi0g
ICAgZm9yIChpbnQgaWQgPSAwOyBpZCA8IG51bWJlck9mT3B0aW9uczsgaWQrKykgeworICAgIGZv
ciAoc2l6ZV90IGlkID0gMDsgaWQgPCBOdW1iZXJPZk9wdGlvbnM7IGlkKyspIHsKICAgICAgICAg
aWYgKHNlcGFyYXRvciAmJiBpZCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNlcGFyYXRv
cik7CiAgICAgICAgIGR1bXBPcHRpb24oYnVpbGRlciwgbGV2ZWwsIHN0YXRpY19jYXN0PElEPihp
ZCksIG9wdGlvbkhlYWRlciwgb3B0aW9uRm9vdGVyLCBkdW1wRGVmYXVsdHNPcHRpb24pOwpAQCAt
ODQwLDEzICs4NjEsNTUgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyhGSUxFKiBzdHJl
YQogICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKK3N0cnVjdCBPcHRpb25SZWFkZXIgeworICAgIGNsYXNzIE9wdGlvbiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OworCisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIE9wdGlvbnM6OnNfY29uc3RNZXRhRGF0YVttX2lkXS5uYW1lOyB9CisgICAgICAgIGNv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19jb25zdE1l
dGFEYXRhW21faWRdLmRlc2NyaXB0aW9uOyB9CisgICAgICAgIE9wdGlvbnM6OlR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNfY29uc3RNZXRhRGF0YVttX2lkXS50eXBlOyB9Cisg
ICAgICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkoKSBjb25zdCB7IHJldHVy
biBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0uYXZhaWxhYmlsaXR5OyB9CisgICAgICAg
IGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gT3B0aW9uUmVhZGVy
OjpkZWZhdWx0Rm9yKG1faWQpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPcHRpb24oT3B0
aW9uczo6SUQgaWQsIHZvaWQqIGFkZHJlc3NPZlZhbHVlKQorICAgICAgICAgICAgOiBtX2lkKGlk
KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0VmFsdWUoYWRkcmVzc09mVmFsdWUpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBpbml0VmFsdWUodm9pZCogYWRkcmVzc09mVmFsdWUpOwor
CisgICAgICAgIE9wdGlvbnM6OklEIG1faWQ7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAg
IGJvb2wgbV9ib29sOworICAgICAgICAgICAgdW5zaWduZWQgbV91bnNpZ25lZDsKKyAgICAgICAg
ICAgIGRvdWJsZSBtX2RvdWJsZTsKKyAgICAgICAgICAgIGludDMyX3QgbV9pbnQzMjsKKyAgICAg
ICAgICAgIHNpemVfdCBtX3NpemU7CisgICAgICAgICAgICBPcHRpb25SYW5nZSBtX29wdGlvblJh
bmdlOworICAgICAgICAgICAgY29uc3QgY2hhciogbV9vcHRpb25TdHJpbmc7CisgICAgICAgICAg
ICBHQ0xvZ2dpbmc6OkxldmVsIG1fZ2NMb2dMZXZlbDsKKyAgICAgICAgfTsKKworICAgICAgICBm
cmllbmQgc3RydWN0IE9wdGlvblJlYWRlcjsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IE9w
dGlvbiBvcHRpb25Gb3IoT3B0aW9uczo6SUQpOworICAgIHN0YXRpYyBjb25zdCBPcHRpb24gZGVm
YXVsdEZvcihPcHRpb25zOjpJRCk7Cit9OworCiB2b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgRHVtcExldmVsIGxldmVsLCBPcHRpb25zOjpJRCBpZCwKICAg
ICBjb25zdCBjaGFyKiBoZWFkZXIsIGNvbnN0IGNoYXIqIGZvb3RlciwgRHVtcERlZmF1bHRzT3B0
aW9uIGR1bXBEZWZhdWx0c09wdGlvbikKIHsKLSAgICBpZiAoaWQgPj0gbnVtYmVyT2ZPcHRpb25z
KQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGlkKSA+PSBOdW1iZXJPZk9wdGlvbnMpCiAg
ICAgICAgIHJldHVybjsgLy8gSWxsZWdhbCBvcHRpb24uCiAKLSAgICBPcHRpb24gb3B0aW9uKGlk
KTsKKyAgICBhdXRvIG9wdGlvbiA9IE9wdGlvblJlYWRlcjo6b3B0aW9uRm9yKGlkKTsKICAgICBB
dmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5ID0gb3B0aW9uLmF2YWlsYWJpbGl0eSgpOwogICAgIGlm
IChhdmFpbGFiaWxpdHkgIT0gQXZhaWxhYmlsaXR5OjpOb3JtYWwgJiYgIWlzQXZhaWxhYmxlKGlk
LCBhdmFpbGFiaWxpdHkpKQogICAgICAgICByZXR1cm47CkBAIC04NjMsOCArOTI2LDkgQEAgdm9p
ZCBPcHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIAogICAgIG9wdGlvbi5kdW1wKGJ1
aWxkZXIpOwogCiAgICAgaWYgKHdhc092ZXJyaWRkZW4gJiYgKGR1bXBEZWZhdWx0c09wdGlvbiA9
PSBEdW1wRGVmYXVsdHMpKSB7CisgICAgICAgIGF1dG8gZGVmYXVsdE9wdGlvbiA9IE9wdGlvblJl
YWRlcjo6ZGVmYXVsdEZvcihpZCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChk
ZWZhdWx0OiAiKTsKLSAgICAgICAgb3B0aW9uLmRlZmF1bHRPcHRpb24oKS5kdW1wKGJ1aWxkZXIp
OworICAgICAgICBkZWZhdWx0T3B0aW9uLmR1bXAoYnVpbGRlcik7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKSIpOwogICAgIH0KIApAQCAtODg1LDI5ICs5NDksNzAgQEAgdm9pZCBP
cHRpb25zOjplbnN1cmVPcHRpb25zQXJlQ29oZXJlbnQoKQogICAgICAgICBDUkFTSCgpOwogfQog
Ci12b2lkIE9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorY29uc3Qg
T3B0aW9uUmVhZGVyOjpPcHRpb24gT3B0aW9uUmVhZGVyOjpvcHRpb25Gb3IoT3B0aW9uczo6SUQg
aWQpCit7CisgICAgcmV0dXJuIE9wdGlvbihpZCwgT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uKGlk
KSk7Cit9CisKK2NvbnN0IE9wdGlvblJlYWRlcjo6T3B0aW9uIE9wdGlvblJlYWRlcjo6ZGVmYXVs
dEZvcihPcHRpb25zOjpJRCBpZCkKK3sKKyAgICByZXR1cm4gT3B0aW9uKGlkLCBPcHRpb25zOjph
ZGRyZXNzT2ZPcHRpb25EZWZhdWx0KGlkKSk7Cit9CisKK3ZvaWQgT3B0aW9uUmVhZGVyOjpPcHRp
b246OmluaXRWYWx1ZSh2b2lkKiBhZGRyZXNzT2ZWYWx1ZSkKK3sKKyAgICBPcHRpb25zOjpUeXBl
IHR5cGUgPSBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0udHlwZTsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6CisgICAgICAgIG1lbWNweSgm
bV9ib29sLCBhZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpCb29sKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6CisgICAgICAg
IG1lbWNweSgmbV91bnNpZ25lZCwgYWRkcmVzc09mVmFsdWUsIHNpemVvZihPcHRpb25zU3RvcmFn
ZTo6VW5zaWduZWQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpE
b3VibGU6CisgICAgICAgIG1lbWNweSgmbV9kb3VibGUsIGFkZHJlc3NPZlZhbHVlLCBzaXplb2Yo
T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6OkludDMyOgorICAgICAgICBtZW1jcHkoJm1faW50MzIsIGFkZHJlc3NPZlZhbHVl
LCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6OkludDMyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKKyAgICAgICAgbWVtY3B5KCZtX3NpemUsIGFkZHJlc3NP
ZlZhbHVlLCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6OlNpemUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25SYW5nZToKKyAgICAgICAgbWVtY3B5KCZtX29w
dGlvblJhbmdlLCBhZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpPcHRpb25S
YW5nZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0
cmluZzoKKyAgICAgICAgbWVtY3B5KCZtX29wdGlvblN0cmluZywgYWRkcmVzc09mVmFsdWUsIHNp
emVvZihPcHRpb25zU3RvcmFnZTo6T3B0aW9uU3RyaW5nKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDoKKyAgICAgICAgbWVtY3B5KCZtX2djTG9n
TGV2ZWwsIGFkZHJlc3NPZlZhbHVlLCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6OkdDTG9nTGV2ZWwp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIE9wdGlvblJlYWRlcjo6T3B0aW9u
OjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBl
KCkpIHsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fZW50cnkudmFsQm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX2Jvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIobV9lbnRyeS52YWxVbnNpZ25lZCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
dW5zaWduZWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsU2l6ZSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fc2l6ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
T3B0aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1fZW50cnkudmFsRG91YmxlKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhl
ZFByZWNpc2lvbk51bWJlcihtX2RvdWJsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6SW50MzI6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fZW50cnku
dmFsSW50MzIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2ludDMyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25SYW5nZToKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQobV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQobV9vcHRpb25SYW5nZS5yYW5nZVN0cmluZygpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6IHsKLSAgICAg
ICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9lbnRyeS52YWxPcHRpb25TdHJpbmc7CisgICAgICAg
IGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fb3B0aW9uU3RyaW5nOwogICAgICAgICBpZiAoIW9wdGlv
bikKICAgICAgICAgICAgIG9wdGlvbiA9ICIiOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicp
OwpAQCAtOTE2LDMyICsxMDIxLDMyIEBAIHZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6
R0NMb2dMZXZlbDogewotICAgICAgICBidWlsZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNT
dHJpbmcobV9lbnRyeS52YWxHQ0xvZ0xldmVsKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdD
TG9nZ2luZzo6bGV2ZWxBc1N0cmluZyhtX2djTG9nTGV2ZWwpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIH0KIH0KIAotYm9vbCBPcHRpb246Om9wZXJhdG9yPT0oY29uc3QgT3B0aW9uJiBv
dGhlcikgY29uc3QKK2Jvb2wgT3B0aW9uUmVhZGVyOjpPcHRpb246Om9wZXJhdG9yPT0oY29uc3Qg
T3B0aW9uJiBvdGhlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2Ug
T3B0aW9uczo6VHlwZTo6Qm9vbDoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsQm9vbCA9PSBv
dGhlci5tX2VudHJ5LnZhbEJvb2w7CisgICAgICAgIHJldHVybiBtX2Jvb2wgPT0gb3RoZXIubV9i
b29sOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIHJldHVybiBt
X2VudHJ5LnZhbFVuc2lnbmVkID09IG90aGVyLm1fZW50cnkudmFsVW5zaWduZWQ7CisgICAgICAg
IHJldHVybiBtX3Vuc2lnbmVkID09IG90aGVyLm1fdW5zaWduZWQ7CiAgICAgY2FzZSBPcHRpb25z
OjpUeXBlOjpTaXplOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxTaXplID09IG90aGVyLm1f
ZW50cnkudmFsU2l6ZTsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZSA9PSBvdGhlci5tX3NpemU7CiAg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6Ci0gICAgICAgIHJldHVybiAobV9lbnRyeS52
YWxEb3VibGUgPT0gb3RoZXIubV9lbnRyeS52YWxEb3VibGUpIHx8IChzdGQ6OmlzbmFuKG1fZW50
cnkudmFsRG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fZW50cnkudmFsRG91YmxlKSk7Cisg
ICAgICAgIHJldHVybiAobV9kb3VibGUgPT0gb3RoZXIubV9kb3VibGUpIHx8IChzdGQ6OmlzbmFu
KG1fZG91YmxlKSAmJiBzdGQ6OmlzbmFuKG90aGVyLm1fZG91YmxlKSk7CiAgICAgY2FzZSBPcHRp
b25zOjpUeXBlOjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsSW50MzIgPT0gb3Ro
ZXIubV9lbnRyeS52YWxJbnQzMjsKKyAgICAgICAgcmV0dXJuIG1faW50MzIgPT0gb3RoZXIubV9p
bnQzMjsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAgICAgICByZXR1
cm4gbV9lbnRyeS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpID09IG90aGVyLm1fZW50cnku
dmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fb3B0aW9uUmFu
Z2UucmFuZ2VTdHJpbmcoKSA9PSBvdGhlci5tX29wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7CiAg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25TdHJpbmc6Ci0gICAgICAgIHJldHVybiAobV9l
bnRyeS52YWxPcHRpb25TdHJpbmcgPT0gb3RoZXIubV9lbnRyeS52YWxPcHRpb25TdHJpbmcpCi0g
ICAgICAgICAgICB8fCAobV9lbnRyeS52YWxPcHRpb25TdHJpbmcgJiYgb3RoZXIubV9lbnRyeS52
YWxPcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX2VudHJ5LnZhbE9wdGlvblN0cmluZywgb3RoZXIu
bV9lbnRyeS52YWxPcHRpb25TdHJpbmcpKTsKKyAgICAgICAgcmV0dXJuIChtX29wdGlvblN0cmlu
ZyA9PSBvdGhlci5tX29wdGlvblN0cmluZykKKyAgICAgICAgICAgIHx8IChtX29wdGlvblN0cmlu
ZyAmJiBvdGhlci5tX29wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fb3B0aW9uU3RyaW5nLCBvdGhl
ci5tX29wdGlvblN0cmluZykpOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6R0NMb2dMZXZlbDoK
LSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsR0NMb2dMZXZlbCA9PSBvdGhlci5tX2VudHJ5LnZh
bEdDTG9nTGV2ZWw7CisgICAgICAgIHJldHVybiBtX2djTG9nTGV2ZWwgPT0gb3RoZXIubV9nY0xv
Z0xldmVsOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyNTI1MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI4ICsz
OSwxNiBAQCB1c2luZyBXVEY6OlN0cmluZ0J1aWxkZXI7CiAKIG5hbWVzcGFjZSBKU0MgewogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNkZWZpbmUgTUFYSU1VTV9OVU1CRVJfT0ZfRlRMX0NP
TVBJTEVSX1RIUkVBRFMgMgotI2Vsc2UKLSNkZWZpbmUgTUFYSU1VTV9OVU1CRVJfT0ZfRlRMX0NP
TVBJTEVSX1RIUkVBRFMgOAotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFN
SU5HX0FQSSkKLWNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0g
dHJ1ZTsKLSNlbHNlCi1jb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0Fw
aSA9IGZhbHNlOwotI2VuZGlmCi0KIGNsYXNzIE9wdGlvbnMgewogcHVibGljOgotICAgIGVudW0g
Y2xhc3MgRHVtcExldmVsIHsKKyAgICBlbnVtIGNsYXNzIER1bXBMZXZlbCA6IHVpbnQ4X3Qgewog
ICAgICAgICBOb25lID0gMCwKICAgICAgICAgT3ZlcnJpZGRlbiwKICAgICAgICAgQWxsLAogICAg
ICAgICBWZXJib3NlCiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IHsKKyAg
ICBlbnVtIGNsYXNzIEF2YWlsYWJpbGl0eSA6IHVpbnQ4X3QgIHsKICAgICAgICAgTm9ybWFsID0g
MCwKICAgICAgICAgUmVzdHJpY3RlZCwKICAgICAgICAgQ29uZmlndXJhYmxlCkBAIC02OSwxMyAr
NTcsMTIgQEAgcHVibGljOgogI2RlZmluZSBERUNMQVJFX09QVElPTl9JRCh0eXBlXywgbmFtZV8s
IGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgIG5hbWVf
IyNJRCwKIAotICAgIGVudW0gSUQgeworICAgIGVudW0gSUQgOiB1aW50MTZfdCB7CiAgICAgICAg
IEZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9PUFRJT05fSUQpCi0gICAgICAgIG51bWJlck9m
T3B0aW9ucwogICAgIH07CiAjdW5kZWYgREVDTEFSRV9PUFRJT05fSUQKIAotICAgIGVudW0gY2xh
c3MgVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CiAgICAgICAgIEJvb2ws
CiAgICAgICAgIFVuc2lnbmVkLAogICAgICAgICBEb3VibGUsCkBAIC0xMDIsOCArODksOCBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZW5zdXJlT3B0aW9uc0Fy
ZUNvaGVyZW50KCk7CiAKICNkZWZpbmUgREVDTEFSRV9PUFRJT05fQUNDRVNTT1JTKHR5cGVfLCBu
YW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCi0gICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5cGVfJiBuYW1lXygpIHsgcmV0dXJu
IGdfanNjQ29uZmlnLm9wdGlvbnNbbmFtZV8jI0lEXS52YWwjI3R5cGVfOyB9ICBcCi0gICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgT3B0aW9uRW50cnk6OnR5cGVfJiBuYW1lXyMjRGVmYXVsdCgpIHsg
cmV0dXJuIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW25hbWVfIyNJRF0udmFsIyN0eXBlXzsg
fQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjp0eXBlXyYgbmFtZV8o
KSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zLm5hbWVfOyB9ICBcCisgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OnR5cGVfJiBuYW1lXyMjRGVmYXVsdCgpIHsgcmV0
dXJuIGdfanNjQ29uZmlnLm9wdGlvbnMubmFtZV8jI0RlZmF1bHQ7IH0KIAogICAgIEZPUl9FQUNI
X0pTQ19PUFRJT04oREVDTEFSRV9PUFRJT05fQUNDRVNTT1JTKQogI3VuZGVmIERFQ0xBUkVfT1BU
SU9OX0FDQ0VTU09SUwpAQCAtMTExLDEzICs5OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNBdmFpbGFibGUoSUQsIEF2YWlsYWJpbGl0eSk7CiAKIHByaXZhdGU6Ci0KLSAgICAvLyBG
b3Igc3RvcmluZyBjb25zdGFudCBtZXRhIGRhdGEgYWJvdXQgZWFjaCBvcHRpb246Ci0gICAgc3Ry
dWN0IEVudHJ5SW5mbyB7CisgICAgc3RydWN0IENvbnN0TWV0YURhdGEgewogICAgICAgICBjb25z
dCBjaGFyKiBuYW1lOwogICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsKICAgICAgICAg
VHlwZSB0eXBlOwogICAgICAgICBBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5OworICAgICAgICB1
aW50MTZfdCBvZmZzZXRPZk9wdGlvbjsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0T2ZPcHRpb25E
ZWZhdWx0OwogICAgIH07CiAKICAgICBPcHRpb25zKCk7CkBAIC0xMzYsMTE1ICsxMjMsMTIgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzZXRBbGlhc2VkT3B0aW9uKGNvbnN0IGNoYXIqIGFy
Zyk7CiAgICAgc3RhdGljIGJvb2wgb3ZlcnJpZGVBbGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyhj
b25zdCBjaGFyKiBuYW1lKTsKIAotICAgIHN0YXRpYyBjb25zdCBFbnRyeUluZm8gc19vcHRpb25z
SW5mb1tudW1iZXJPZk9wdGlvbnNdOworICAgIGlubGluZSBzdGF0aWMgdm9pZCogYWRkcmVzc09m
T3B0aW9uKE9wdGlvbnM6OklEKTsKKyAgICBpbmxpbmUgc3RhdGljIHZvaWQqIGFkZHJlc3NPZk9w
dGlvbkRlZmF1bHQoT3B0aW9uczo6SUQpOwogCi0gICAgZnJpZW5kIGNsYXNzIE9wdGlvbjsKLX07
CisgICAgc3RhdGljIGNvbnN0IENvbnN0TWV0YURhdGEgc19jb25zdE1ldGFEYXRhW051bWJlck9m
T3B0aW9uc107CiAKLWNsYXNzIE9wdGlvbiB7Ci1wdWJsaWM6Ci0gICAgT3B0aW9uKE9wdGlvbnM6
OklEIGlkKQotICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV9lbnRyeShnX2pzY0NvbmZp
Zy5vcHRpb25zW21faWRdKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFN0cmlu
Z0J1aWxkZXImKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAgICBPcHRpb25zOjpJRCBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7
Ci0gICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKLSAgICBPcHRpb25zOjpUeXBl
IHR5cGUoKSBjb25zdDsKLSAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdDsKLSAgICBjb25zdCBPcHRpb24g
ZGVmYXVsdE9wdGlvbigpIGNvbnN0OwotICAgIAotICAgIGJvb2wmIGJvb2xWYWwoKTsKLSAgICB1
bnNpZ25lZCYgdW5zaWduZWRWYWwoKTsKLSAgICBkb3VibGUmIGRvdWJsZVZhbCgpOwotICAgIGlu
dDMyX3QmIGludDMyVmFsKCk7Ci0gICAgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2VWYWwoKTsKLSAg
ICBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmdWYWwoKTsKLSAgICBHQ0xvZ2dpbmc6OkxldmVsJiBn
Y0xvZ0xldmVsVmFsKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIC8vIE9ubHkgdXNlZCBmb3IgY29u
c3RydWN0aW5nIGRlZmF1bHQgT3B0aW9ucy4KLSAgICBPcHRpb24oT3B0aW9uczo6SUQgaWQsIE9w
dGlvbkVudHJ5JiBlbnRyeSkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50cnko
ZW50cnkpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBPcHRpb25zOjpJRCBtX2lkOwotICAgIE9w
dGlvbkVudHJ5JiBtX2VudHJ5OworICAgIGZyaWVuZCBzdHJ1Y3QgT3B0aW9uUmVhZGVyOwogfTsK
IAotaW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bbV9pZF0ubmFtZTsKLX0KLQotaW5saW5lIGNvbnN0IGNo
YXIqIE9wdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpz
X29wdGlvbnNJbmZvW21faWRdLmRlc2NyaXB0aW9uOwotfQotCi1pbmxpbmUgT3B0aW9uczo6VHlw
ZSBPcHRpb246OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJ
bmZvW21faWRdLnR5cGU7Ci19Ci0KLWlubGluZSBPcHRpb25zOjpBdmFpbGFiaWxpdHkgT3B0aW9u
OjphdmFpbGFiaWxpdHkoKSBjb25zdAotewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJ
bmZvW21faWRdLmF2YWlsYWJpbGl0eTsKLX0KLQotaW5saW5lIGJvb2wgT3B0aW9uOjppc092ZXJy
aWRkZW4oKSBjb25zdAotewotICAgIHJldHVybiAqdGhpcyAhPSBkZWZhdWx0T3B0aW9uKCk7Ci19
Ci0KLWlubGluZSBjb25zdCBPcHRpb24gT3B0aW9uOjpkZWZhdWx0T3B0aW9uKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gT3B0aW9uKG1faWQsIGdfanNjQ29uZmlnLmRlZmF1bHRPcHRpb25zW21faWRd
KTsKLX0KLQotaW5saW5lIGJvb2wmIE9wdGlvbjo6Ym9vbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1f
ZW50cnkudmFsQm9vbDsKLX0KLQotaW5saW5lIHVuc2lnbmVkJiBPcHRpb246OnVuc2lnbmVkVmFs
KCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZDsKLX0KLQotaW5saW5lIGRvdWJs
ZSYgT3B0aW9uOjpkb3VibGVWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbERvdWJsZTsK
LX0KLQotaW5saW5lIGludDMyX3QmIE9wdGlvbjo6aW50MzJWYWwoKQotewotICAgIHJldHVybiBt
X2VudHJ5LnZhbEludDMyOwotfQotCi1pbmxpbmUgT3B0aW9uUmFuZ2UgT3B0aW9uOjpvcHRpb25S
YW5nZVZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2U7Ci19Ci0KLWlu
bGluZSBjb25zdCBjaGFyKiBPcHRpb246Om9wdGlvblN0cmluZ1ZhbCgpCi17Ci0gICAgcmV0dXJu
IG1fZW50cnkudmFsT3B0aW9uU3RyaW5nOwotfQotCi1pbmxpbmUgR0NMb2dnaW5nOjpMZXZlbCYg
T3B0aW9uOjpnY0xvZ0xldmVsVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xl
dmVsOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
MTkgKzI1LDM1IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR0NMb2dnaW5nLmgiCisK
K3VzaW5nIFdURjo6UHJpbnRTdHJlYW07CisKIG5hbWVzcGFjZSBKU0MgewogCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgTUFYSU1VTV9OVU1CRVJfT0ZfRlRMX0NPTVBJTEVSX1RI
UkVBRFMgMgorI2Vsc2UKKyNkZWZpbmUgTUFYSU1VTV9OVU1CRVJfT0ZfRlRMX0NPTVBJTEVSX1RI
UkVBRFMgOAorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkK
K2NvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKKyNl
bHNlCitjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNl
OworI2VuZGlmCisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigpIG1hY3JvIGJl
bG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCiAvLyBhbG9uZyB3
aXRoIHRoZWlyIHR5cGVzIGFuZCBkZWZhdWx0IHZhbHVlcy4gVGhlIG9wdGlvbnMgdmFsdWVzIGFy
ZSBhY3R1YWxseQotLy8gcmVhbGl6ZWQgYXMgYW4gYXJyYXkgb2YgT3B0aW9uRW50cnkgZWxlbWVu
dHMgaW4gSlNDOjpDb25maWcuCisvLyByZWFsaXplZCBhcyBmaWVsZHMgaW4gT3B0aW9uc1N0b3Jh
Z2UgZW1iZWRkZWQgaW4gSlNDOjpDb25maWcuCiAvLwotLy8gICAgIE9wdGlvbnM6OmluaXRpYWxp
emUoKSB3aWxsIGluaXRpYWxpemUgdGhlIGFycmF5IG9mIG9wdGlvbnMgdmFsdWVzIHdpdGgKLS8v
IHRoZSBkZWZhdWx0cyBzcGVjaWZpZWQgaW4gRk9SX0VBQ0hfSlNDX09QVElPTigpIGJlbG93LiBB
ZnRlciB0aGF0LCB0aGUgdmFsdWVzIGNhbgotLy8gYmUgcHJvZ3JhbW1hdGljYWxseSByZWFkIGFu
ZCB3cml0dGVuIHRvIHVzaW5nIGFuIGFjY2Vzc29yIG1ldGhvZCB3aXRoIHRoZQotLy8gc2FtZSBu
YW1lIGFzIHRoZSBvcHRpb24uIEZvciBleGFtcGxlLCB0aGUgb3B0aW9uICJ1c2VKSVQiIGNhbiBi
ZSByZWFkIGFuZAotLy8gc2V0IGxpa2Ugc286CisvLyAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgp
IHdpbGwgaW5pdGlhbGl6ZSB0aGUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBkZWZhdWx0cworLy8g
c3BlY2lmaWVkIGluIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBiZWxvdy4gQWZ0ZXIgdGhhdCwgdGhl
IHZhbHVlcyBjYW4gYmUKKy8vIHByb2dyYW1tYXRpY2FsbHkgcmVhZCBhbmQgd3JpdHRlbiB0byB1
c2luZyBhbiBhY2Nlc3NvciBtZXRob2Qgd2l0aCB0aGUgc2FtZQorLy8gbmFtZSBhcyB0aGUgb3B0
aW9uLiBGb3IgZXhhbXBsZSwgdGhlIG9wdGlvbiAidXNlSklUIiBjYW4gYmUgcmVhZCBhbmQgc2V0
IGxpa2UKKy8vIHNvOgogLy8KIC8vICAgICBib29sIGppdElzT24gPSBPcHRpb25zOjp1c2VKSVQo
KTsgIC8vIEdldCB0aGUgb3B0aW9uIHZhbHVlLgogLy8gICAgIE9wdGlvbnM6OnVzZUpJVCgpID0g
ZmFsc2U7ICAgICAgICAgLy8gU2V0cyB0aGUgb3B0aW9uIHZhbHVlLgpAQCAtNTQsNiArNzAsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBjaGVja3MgYXJlIGRvbmUgYWZ0ZXIgdGhlIG9wdGlvbiB2
YWx1ZXMgYXJlIHNldC4gSWYgeW91IGFsdGVyIHRoZSBvcHRpb24KIC8vIHZhbHVlcyBhZnRlciB0
aGUgc2FuaXR5IGNoZWNrcyAoZm9yIHlvdXIgb3duIHRlc3RpbmcpLCB0aGVuIHlvdSdyZSBsaWFi
bGUgdG8KIC8vIGVuc3VyZSB0aGF0IHRoZSBuZXcgdmFsdWVzIHNldCBhcmUgc2FuZSBhbmQgcmVh
c29uYWJsZSBmb3IgeW91ciBvd24gcnVuLgorLy8KKy8vIEFueSBtb2RpZmljYXRpb25zIHRvIG9w
dGlvbnMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgZmlyc3QgVk0gaXMgaW5zdGFudGlhdGUuCisv
LyBPbiBpbnN0YW50aWF0aW9uIG9mIHRoZSBmaXJzdCBWTSBpbnN0YW5jZSwgdGhlIE9wdGlvbnMg
d2lsbCBiZSB3cml0ZSBwcm90ZWN0ZWQKKy8vIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgdGhlcmVh
ZnRlci4KIAogI2RlZmluZSBGT1JfRUFDSF9KU0NfT1BUSU9OKHYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHYoQm9vbCwgdXNlS2VyblRDU00sIHRydWUs
IE5vcm1hbCwgIk5vdGU6IHRoaXMgbmVlZHMgdG8gZ28gYmVmb3JlIG90aGVyIG9wdGlvbnMgc2lu
Y2UgdGhleSBkZXBlbmQgb24gdGhpcyB2YWx1ZS4iKSBcCkBAIC01MjcsNSArNTQ3LDU0IEBAIGNv
bnN0ZXhwciBzaXplX3QgY291bnROdW1iZXJPZkpTQ09wdGlvbnMKIAogY29uc3RleHByIHNpemVf
dCBOdW1iZXJPZk9wdGlvbnMgPSBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpOwogCi19IC8vIG5h
bWVzcGFjZSBKU0MKK2NsYXNzIE9wdGlvblJhbmdlIHsKK3ByaXZhdGU6CisgICAgZW51bSBSYW5n
ZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07Citw
dWJsaWM6CisgICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPSAoY29uc3QgaW50JiByaHMpCisgICAg
eyAvLyBPbmx5IG5lZWRlZCBmb3IgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaWYgKCFyaHMpIHsK
KyAgICAgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOworICAgICAgICAgICAgbV9yYW5n
ZVN0cmluZyA9IDA7CisgICAgICAgICAgICBtX2xvd0xpbWl0ID0gMDsKKyAgICAgICAgICAgIG1f
aGlnaExpbWl0ID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsKKyAgICBib29sIGlzSW5SYW5nZSh1bnNpZ25l
ZCk7CisgICAgY29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiAobV9zdGF0
ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VTdHI7IH0KKyAgICAK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOworCisgICAgUmFuZ2VTdGF0
ZSBtX3N0YXRlOworICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7CisgICAgdW5zaWduZWQg
bV9sb3dMaW1pdDsKKyAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsKK307CisKK3N0cnVjdCBPcHRp
b25zU3RvcmFnZSB7CisgICAgdXNpbmcgQm9vbCA9IGJvb2w7CisgICAgdXNpbmcgVW5zaWduZWQg
PSB1bnNpZ25lZDsKKyAgICB1c2luZyBEb3VibGUgPSBkb3VibGU7CisgICAgdXNpbmcgSW50MzIg
PSBpbnQzMl90OworICAgIHVzaW5nIFNpemUgPSBzaXplX3Q7CisgICAgdXNpbmcgT3B0aW9uUmFu
Z2UgPSBKU0M6Ok9wdGlvblJhbmdlOworICAgIHVzaW5nIE9wdGlvblN0cmluZyA9IGNvbnN0IGNo
YXIqOworICAgIHVzaW5nIEdDTG9nTGV2ZWwgPSBHQ0xvZ2dpbmc6OkxldmVsOworCisjZGVmaW5l
IERFQ0xBUkVfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5
XywgZGVzY3JpcHRpb25fKSBcCisgICAgdHlwZV8gbmFtZV87IFwKKyAgICB0eXBlXyBuYW1lXyMj
RGVmYXVsdDsKK0ZPUl9FQUNIX0pTQ19PUFRJT04oREVDTEFSRV9PUFRJT04pCisjdW5kZWYgREVD
TEFSRV9PUFRJT04KK307CiAKKy8vIE9wdGlvbnM6Ok1ldGFkYXRhJ3Mgb2Zmc2V0T2ZPcHRpb24g
YW5kIG9mZnNldE9mT3B0aW9uRGVmYXVsdCByZWxpZXMgb24gdGhpcy4KK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKE9wdGlvbnNTdG9yYWdlKSA8PSAxNiAqIEtCKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383712</attachid>
            <date>2019-11-16 19:08:03 -0800</date>
            <delta_ts>2019-11-16 19:29:58 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-202105c.patch</filename>
            <type>text/plain</type>
            <size>46811</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyNTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxOS0xMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTY0MTA0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb25zIHVzZWQgdG8gYmUgc3RvcmVkIGFzIGFuIGFy
cmF5IG9mIHVuaW9ucyBvZiBhbGwgb3B0aW9uIHR5cGVzLCB3aGVyZSB0aGUKKyAgICAgICAgc2l6
ZSBvZiB0aGUgYXJyYXkgaXMgYXJvdW5kIDM0OSBlbGVtZW50cy4gIFdlIGFsc28gbmVlZGVkIGEg
c2Vjb25kIGFycmF5IGZvciB0aGUKKyAgICAgICAgZGVmYXVsdCBvcHRpb24gdmFsdWUuICBXZSBu
b3cgc3RvcmUgZWFjaCBvcHRpb24gKGFuZCBpdHMgZGVmYXVsdCB2YWx1ZSkgYXMgYSB0eXBlCisg
ICAgICAgIHNwZWNpZmljIGZpZWxkIGluIGFuIE9wdGlvbnNTdG9yYWdlIHN0cnVjdC4gIFRoaXMg
cmVkdWNlcyB0aGUgc2l6ZSBvZiBzdG9yYWdlIGZvcgorICAgICAgICBPcHRpb25zIGZyb20gMTY3
NTIgdG8gMjE5MiBieXRlcy4gIFRoaXMsIGluIHR1cm4sIGFsbG93cyBKU0M6OkNvbmZpZyB0byBm
aXQgaW4gYQorICAgICAgICBzaW5nbGUgcGFnZS4KKyAKKyAgICAgICAgVGhlIHJlYXNvbiB3ZSBw
cmV2aW91c2x5IHN0b3JlZCBvcHRpb25zIGluIGFuIGFycmF5IG9mIHVuaW9ucyBpcyB0byBhbGxv
dyB1cyB0bworICAgICAgICByYW5kb21seSBhY2Nlc3MgZWFjaCBvcHRpb24gYnkgaXRzIGlkLiAg
V2Ugbm93IHN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIG9wdGlvbgorICAgICAgICBmaWVsZCBpbiB0
aGUgT3B0aW9uczo6c19jb25zdE1ldGFEYXRhIGFycmF5IChwcmV2aW91c2x5IGNhbGxlZCBzX29w
dGlvbnNJbmZvKS4KKyAgICAgICAgV2l0aCB0aGlzIG9mZnNldCwgd2UgY2FuIGNvbXB1dGUgdGhl
IGFkZHJlc3Mgb2YgdGhlIG9wdGlvbiB2YWx1ZSBmaWVsZCBpbgorICAgICAgICB0aGUgT3B0aW9u
c1N0b3JhZ2Ugc3RydWN0IGluIHRoZSBKU0M6OkNvbmZpZy4KKyAKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgYWxzbzoKKworICAgICAgICAxLiBSZW5hbWVkIE9wdGlvbnM6OnNfb3B0aW9uc0lu
Zm8gdG8gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhLgorCisgICAgICAgIDIuIFJlZmFjdG9yIHRo
ZSBPcHRpb24gY2xhc3MgaW50byB0aGUgT3B0aW9uUmVhZGVyOjpPcHRpb24gY2xhc3MuCisKKyAg
ICAgICAgICAgUHJldmlvdXNseSwgdGhlIE9wdGlvbiBjbGFzcyBwcm92aWRlZCBhbm90aGVyIHdh
eSB0byBhY2Nlc3Mgb3B0aW9uIHZhbHVlcywKKyAgICAgICAgICAgc3BlY2lmaWNhbGx5IHdoZW4g
d2UgbmVlZCB0byBhY2Nlc3MgdGhlbSBieSBpZC4gIEl0IGFsc28gcHJvdmlkZWQgYSBtZWFucyB0
bworICAgICAgICAgICBjaGFuZ2UgdGhhdCBvcHRpb24gdmFsdWUuICBIb3dldmVyLCBpdCBwcmFj
dGljZSwgd2UgY2FuIGRvIHdpdGhvdXQgdGhpcywgYW5kCisgICAgICAgICAgIHJlbW92ZSBhIGxv
dCBvZiB0aGUgY29kZS4gIFRoaXMgY2xhc3Mgbm93IGV4aXN0cyBhcyBPcHRpb25SZWFkZXI6Ok9w
dGlvbiB3aGljaAorICAgICAgICAgICBvbmx5IHByb3ZpZGVzIGEgbWVhbnMgdG8gcmVhZCBpbmZv
cm1hdGlvbiBhYm91dCBvcHRpb25zLCBidXQgbm90IGNoYW5nZSB0aGVtCisgICAgICAgICAgIFRo
ZSBvbmx5IGNsaWVudCBmb3IgdGhpcyBjbGFzcyBpcyB0aGUgZHVtcE9wdGlvbigpIGZ1bmN0aW9u
LgorCisgICAgICAgIDMuIFJlbW92ZWQgdGhlIE9wdGlvbkVudHJ5IGNsYXNzLiAgSXQgcHJldmlv
dXNseSBzZXJ2ZWQgMiBwdXJwb3NlOgorICAgICAgICAgICBhLiBEZWZpbmUgdGhlIG9wdGlvbiB0
eXBlcy4gIFRoZSB0eXBlcyBhcmUgbm93IGRlZmluZWQgaW4gT3B0aW9uc1N0b3JhZ2UuCisgICAg
ICAgICAgIGIuIERlZmluZSBhIHVuaW9uIGFic3RyYWN0IHR5cGUgbGFyZ2UgZW5vdWdoIHRvIHN0
b3JlIGFueSBvcHRpb24gdmFsdWUuCisgICAgICAgICAgICAgIFRoaXMgaXMgbm93IGV4cHJlc3Nl
ZCBhcyBhIHVuaW9uIG1lbWJlciBpbiBPcHRpb25SZWFkZXI6Ok9wdGlvbi4KKyAKKyAgICAgICAg
ICAgT3B0aW9uRW50cnkuaCBhbHNvIGRlZmluZXMgdGhlIE9wdGlvblJhbmdlIGNsYXNzLiAgT3B0
aW9uUmFuZ2UgaXMgbm93IG1vdmVkCisgICAgICAgICAgIHRvIE9wdGlvbnNMaXN0LmguCisgCisg
ICAgICAgIDQuIENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvcHRpb24gdmFsdWUg
cGFyc2UgZnVuY3Rpb25zIHRvIHJldHVybgorICAgICAgICAgICBPcHRpb25hbCB2YWx1ZXMgaW5z
dGVhZCBvZiB0YWtpbmcgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlLiAgVGhpcyBtYWtlcyB0aGUK
KyAgICAgICAgICAgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gcmVhZCBvbiB0aGUgY2xpZW50
IHNpZGUuCisKKyAgICAgICAgNS4gRml4ZWQgc2NhbGVKSVRQb2xpY3koKSB0byBub3QgcmVseSBv
biB0aGUgT3B0aW9uIGNsYXNzIChzZWUgMiBhYm92ZSksIGFuZCB1c2UKKyAgICAgICAgICAgdGhl
IGNhbm9uaWNhbCB3YXkgdG8gcmVhZCBhbmQgd3JpdGUgb3B0aW9uIHZhbHVlcyBpbnN0ZWFkIGku
ZS4gdmlhIHRoZQorICAgICAgICAgICBPcHRpb25zOjo8b3B0aW9uTmFtZT4oKSBhY2Nlc3NvcnMu
CisKKyAgICAgICAgNi4gRml4ZWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpIHRvIHJlbHkg
b24gdGhlIE9wdGlvbiBjbGFzcyAoc2VlIDIgYWJvdmUpLgorICAgICAgICAgICBXZSBjYW4gY29t
cGFyZSB0aGUgb3B0aW9uIGFnYWluc3QgaXRzIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlIGNhbm9u
aWNhbAorICAgICAgICAgICBhY2Nlc3NvcnMuCisKKyAgICAgICAgNy4gRml4ZWQgT3B0aW9uczo6
aW5pdGlhbGl6ZSgpIHRvIG9ubHkgY29tcHV0ZSB0aGUgZGVmYXVsdCBvcHRpb24gdmFsdWUgb25j
ZS4KKyAgICAgICAgICAgVGhlICJkZWZhdWx0IiB2YWx1ZSBtYXkgYWN0dWFsbHkgYmUgYSBmdW5j
dGlvbiBjYWxsLiAgVGhvdWdoIGN1cnJlbnQgdXNlcyBkb2VzCisgICAgICAgICAgIG5vdCBoYXZl
IHNpZGUgZWZmZWN0cyBpZiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0IGlzIGJlc3QgdG8gbm90
IGFzc3VtZSB0aGlzLgorCisgICAgICAgIDguIE1vdmVkIHRoZSBkZWZpbml0aW9uIG9mICBNQVhJ
TVVNX05VTUJFUl9PRl9GVExfQ09NUElMRVJfVEhSRUFEUyBhbmQKKyAgICAgICAgICAgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgIGZyb20gT3B0aW9ucy5oIHRvIE9wdGlvbnNMaXN0Lmgg
YmVjYXVzZSB0aGV5IGFyZQorICAgICAgICAgICB1c2VkIHRoZXJlIGZpcnN0LgorCisgICAgICAg
IDkuIFJlZHVjZWQgdGhlIHNpemUgb2YgdGhlIEpTQzo6Q29uZmlnIHRvIDEgUGFnZVNpemUuCisg
CisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHA6CisgICAgICAgIChqc2NPcHRpb25z
U2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9uc0dldFZhbHVlKToKKyAgICAgICAgKGpzY19v
cHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGlt
ZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbkVudHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgor
ICAgICAgICAoSlNDOjpzY2FsZUpJVFBvbGljeSk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURl
cGVuZGVudE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb24p
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0KToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNl
dE9wdGlvbldpdGhvdXRBbGlhcyk6CisgICAgICAgIChKU0M6OmludmVydEJvb2xPcHRpb25WYWx1
ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldEFsaWFzZWRPcHRpb24pOgorICAgICAgICAo
SlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRl
cjo6T3B0aW9uOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVy
OjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjphdmFp
bGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6aXNP
dmVycmlkZGVuIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVyOjpPcHRpb246Ok9w
dGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlND
OjpPcHRpb25SZWFkZXI6Om9wdGlvbkZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6
ZGVmYXVsdEZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjppbml0VmFs
dWUpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjpkdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnMuaDoKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpPcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPcHRpb246OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpuYW1l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZXNjcmlwdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6dHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6YXZhaWxhYmlsaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjppc092ZXJyaWRkZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246OmRlZmF1bHRPcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpPcHRpb246OmJvb2xWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OnVu
c2lnbmVkVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkb3VibGVWYWwpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OmludDMyVmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9u
OjpnY0xvZ0xldmVsVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpvcGVyYXRvcj0gKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uUmFuZ2U6OnJhbmdlU3RyaW5nIGNvbnN0KToKKwogMjAxOS0xMS0xNSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBpbmRl
eC1tYXNraW5nIG9uIFNjb3BlZEFyZ3VtZW50cyBhbmQgcHV0IGl0IGluIElzb1N1YnNwYWNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTI1MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk0Myw3ICs5NDMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
CiAgICAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKICAgICBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oCiAgICAgcnVudGltZS9PcGVyYXRpb25zLmgKLSAgICBydW50aW1lL09w
dGlvbkVudHJ5LmgKICAgICBydW50aW1lL09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xp
c3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNTZXRWYWx1ZShjb25z
dAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25h
bWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIE9wdGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvU2V0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghdmFsdWVGcm9t
R1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVfKCkgPSB2YWx1ZVRvU2V0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBHRVRfT1BUSU9O
X1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2
YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCisgICAgICAgIE9w
dGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVUb0dldCwgdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBUUlVFOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAt
NjE3LDcgKzYxNyw3IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFjaChKU0NPcHRpb25zRnVuYyAK
ICNkZWZpbmUgVklTSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxh
YmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6
YXZhaWxhYmlsaXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCiAgICAgICAg
IHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBl
XyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IE9wdGlvbnNTdG9yYWdlOjp0eXBlXyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGF1dG8gb3B0aW9uVHlwZSA9IGpzY09wdGlvbnNUeXBlKGRl
ZmF1bHRWYWx1ZSk7ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChmdW5jdGlvbiAoI25h
bWVfLCBvcHRpb25UeXBlLCBkZXNjcmlwdGlvbl8sIHVzZXJEYXRhKSkgICAgICBcCiAgICAgICAg
ICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUy
NTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzgsNyArMTg3OCw2IEBACiAJCUZF
MzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8q
IFZNSW5zcGVjdG9yLmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJF
ODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
Mzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbnNMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgfTsKQEAg
LTUwOTgsNyArNTA5Nyw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25z
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNv
ZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91
cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0
Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1l
dGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIzMjRENTFB
MDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzEy
MzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDIzLDcgKzc0MjEsNiBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMw
MDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICov
LAogCQkJCUY2OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQlGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0
MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBP
cHRpb25zTGlzdC5oICovLApAQCAtOTk1Miw3ICs5OTQ5LDYgQEAKIAkJCQkwRjJCREMyQzE1MUZE
RTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdB
MEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCShyZXZpc2lvbiAyNTI1MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIk9wdGlvbkVudHJ5LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQwLDcgKzM5LDcgQEAgY29u
c3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7CiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VT
aXplID0gNCAqIEtCOwogI2VuZGlmCiAKLWNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJv
dGVjdCA9IDMyICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBQ
YWdlU2l6ZTsKIAogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKIHVzaW5nIEpJVFdyaXRl
U2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3QsIGNvbnN0IHZvaWQqLCBzaXpl
X3QpOwpAQCAtODIsOCArODEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgICAgIGJvb2wg
dXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKLSAgICAgICAgICAgIE9wdGlvbkVu
dHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IGRl
ZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107CisgICAgICAgICAgICBPcHRpb25zU3RvcmFn
ZSBvcHRpb25zOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6
ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uRW50cnkuaAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgT3B0aW9uUmFuZ2UgewotcHJpdmF0ZToKLSAg
ICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52
ZXJ0ZWQgfTsKLXB1YmxpYzoKLSAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChjb25zdCBpbnQm
IHJocykKLSAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgotICAgICAgICBp
ZiAoIXJocykgewotICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7Ci0gICAgICAg
ICAgICBtX3JhbmdlU3RyaW5nID0gMDsKLSAgICAgICAgICAgIG1fbG93TGltaXQgPSAwOwotICAg
ICAgICAgICAgbV9oaWdoTGltaXQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoY29uc3QgY2hhciopOwotICAgIGJvb2wgaXNJblJh
bmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251bGxSYW5nZVN0
cjsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VTdHI7Ci0KLSAg
ICBSYW5nZVN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgY2hhciogbV9yYW5nZVN0cmluZzsKLSAg
ICB1bnNpZ25lZCBtX2xvd0xpbWl0OwotICAgIHVuc2lnbmVkIG1faGlnaExpbWl0OwotfTsKLQot
Ly8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKLXVuaW9uIE9wdGlvbkVudHJ5IHsK
LSAgICB1c2luZyBCb29sID0gYm9vbDsKLSAgICB1c2luZyBVbnNpZ25lZCA9IHVuc2lnbmVkOwot
ICAgIHVzaW5nIERvdWJsZSA9IGRvdWJsZTsKLSAgICB1c2luZyBJbnQzMiA9IGludDMyX3Q7Ci0g
ICAgdXNpbmcgU2l6ZSA9IHNpemVfdDsKLSAgICB1c2luZyBPcHRpb25SYW5nZSA9IEpTQzo6T3B0
aW9uUmFuZ2U7Ci0gICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3QgY2hhcio7Ci0gICAgdXNp
bmcgR0NMb2dMZXZlbCA9IEdDTG9nZ2luZzo6TGV2ZWw7Ci0KLSAgICBib29sIHZhbEJvb2w7Ci0g
ICAgdW5zaWduZWQgdmFsVW5zaWduZWQ7Ci0gICAgZG91YmxlIHZhbERvdWJsZTsKLSAgICBpbnQz
Ml90IHZhbEludDMyOwotICAgIHNpemVfdCB2YWxTaXplOwotICAgIE9wdGlvblJhbmdlIHZhbE9w
dGlvblJhbmdlOwotICAgIGNvbnN0IGNoYXIqIHZhbE9wdGlvblN0cmluZzsKLSAgICBHQ0xvZ2dp
bmc6OkxldmVsIHZhbEdDTG9nTGV2ZWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTI1
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC01Niw4MCArNTcsOTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgYm9vbCYgdmFsdWUpCi17Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY21wKHN0
cmluZywgIjEiKSkgewotICAgICAgICB2YWx1ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAi
ZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8
ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7Ci0gICAgICAgIHZhbHVlID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorT3B0aW9uYWw8VD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKTsKIAotc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBpbnQzMl90JiB2YWx1ZSkKK3RlbXBsYXRl
PD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKKyAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJ1ZSIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInllcyIpIHx8ICFzdHJjbXAoc3Ry
aW5nLCAiMSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICJubyIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCit0ZW1wbGF0ZTw+CitP
cHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykK
IHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxOworICAgIGlu
dDMyX3QgdmFsdWU7CisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBib29sIFVOVVNFRF9GVU5DVElPTiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxvbmcmIHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlbHUiLCAmdmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlOworICAgIGlmIChzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBVTlVTRURfRlVOQ1RJT04g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKQordGVt
cGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlNpemU+IHBhcnNlKGNvbnN0IGNoYXIq
IHN0cmluZykKIHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsbHUiLCAmdmFsdWUpOwor
ICAgIHNpemVfdCB2YWx1ZTsKKyAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkg
PT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9
CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkK
K3RlbXBsYXRlPD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpEb3VibGU+IHBhcnNlKGNvbnN0
IGNoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1
ZSkgPT0gMTsKKyAgICBkb3VibGUgdmFsdWU7CisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlbGYi
LCAmdmFsdWUpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIE9wdGlv
blJhbmdlJiB2YWx1ZSkKK3RlbXBsYXRlPD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRp
b25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIHJldHVybiB2YWx1ZS5p
bml0KHN0cmluZyk7CisgICAgT3B0aW9uUmFuZ2UgcmFuZ2U7CisgICAgaWYgKHJhbmdlLmluaXQo
c3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIHJhbmdlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciom
IHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmlu
Zz4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIGlmICghc3RybGVuKHN0cmluZykp
IHsKLSAgICAgICAgdmFsdWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
CisgICAgY29uc3QgY2hhciogdmFsdWUgPSBudWxscHRyOworICAgIGlmICghc3RybGVuKHN0cmlu
ZykpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNjkwNTc+OiBUaGlzIGNvdWxkIGxlYWsgaWYgdGhpcyBvcHRpb24gaXMgc2V0IG1v
cmUgdGhhbiBvbmNlLgogICAgIC8vIEdpdmVuIHRoYXQgT3B0aW9ucyBhcmUgdHlwaWNhbGx5IHVz
ZWQgZm9yIHRlc3RpbmcsIHRoaXMgaXNuJ3QgY29uc2lkZXJlZCB0byBiZSBhIHByb2JsZW0uCiAg
ICAgdmFsdWUgPSBXVEY6OmZhc3RTdHJEdXAoc3RyaW5nKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgR0NMb2dnaW5nOjpMZXZlbCYgdmFsdWUpCit0ZW1wbGF0ZTw+CitPcHRpb25hbDxPcHRpb25z
U3RvcmFnZTo6R0NMb2dMZXZlbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJub25lIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm8iKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmYWxzZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7
Ci0gICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpOb25lOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgIm5v
bmUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZhbHNlIikgfHwgIXN0cmNtcChz
dHJpbmcsICIwIikpCisgICAgICAgIHJldHVybiBHQ0xvZ2dpbmc6Ok5vbmU7CiAKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiYmFzaWMiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ0cnVlIikgfHwgIXN0cmNtcChzdHJpbmcsICIxIikpIHsK
LSAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OkJhc2ljOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImJh
c2ljIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAieWVzIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJ1ZSIpIHx8ICFzdHJjbXAo
c3RyaW5nLCAiMSIpKQorICAgICAgICByZXR1cm4gR0NMb2dnaW5nOjpCYXNpYzsKIAotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ2ZXJib3NlIikgfHwgIXN0
cmNtcChzdHJpbmcsICIyIikpIHsKLSAgICAgICAgdmFsdWUgPSBHQ0xvZ2dpbmc6OlZlcmJvc2U7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLCAidmVyYm9zZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMiIpKQor
ICAgICAgICByZXR1cm4gR0NMb2dnaW5nOjpWZXJib3NlOwogCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGJvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUo
T3B0aW9uczo6SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCkBAIC0x
NjgsOCArMTc5LDEzIEBAIGJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKFQmIHZhcmkK
ICAgICBpZiAoIXN0cmluZ1ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
aWYgKGF2YWlsYWJsZSAmJiBwYXJzZShzdHJpbmdWYWx1ZSwgdmFyaWFibGUpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYXZhaWxhYmxlKSB7CisgICAgICAgIE9wdGlvbmFsPFQ+IHZh
bHVlID0gcGFyc2U8VD4oc3RyaW5nVmFsdWUpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAg
ICAgICAgIHZhcmlhYmxlID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzog
ZmFpbGVkIHRvIHBhcnNlICVzPSVzXG4iLCBuYW1lLCBzdHJpbmdWYWx1ZSk7CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjgzLDkgKzI5OSw5IEBAIHZvaWQgT3B0aW9uUmFuZ2U6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkKIH0KIAogLy8gUmVhbGl6ZSB0aGUgbmFtZXMgZm9yIGVhY2ggb2YgdGhlIG9w
dGlvbnM6Ci1jb25zdCBPcHRpb25zOjpFbnRyeUluZm8gT3B0aW9uczo6c19vcHRpb25zSW5mb1tP
cHRpb25zOjpudW1iZXJPZk9wdGlvbnNdID0geworY29uc3QgT3B0aW9uczo6Q29uc3RNZXRhRGF0
YSBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbTnVtYmVyT2ZPcHRpb25zXSA9IHsKICNkZWZpbmUg
RklMTF9PUFRJT05fSU5GTyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0
eV8sIGRlc2NyaXB0aW9uXykgXAotICAgIHsgI25hbWVfLCBkZXNjcmlwdGlvbl8sIE9wdGlvbnM6
OlR5cGU6OnR5cGVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gfSwKKyAgICB7ICNuYW1l
XywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBlXywgQXZhaWxhYmlsaXR5OjphdmFp
bGFiaWxpdHlfLCBvZmZzZXRvZihPcHRpb25zU3RvcmFnZSwgbmFtZV8pLCBvZmZzZXRvZihPcHRp
b25zU3RvcmFnZSwgbmFtZV8jI0RlZmF1bHQpIH0sCiAgICAgRk9SX0VBQ0hfSlNDX09QVElPTihG
SUxMX09QVElPTl9JTkZPKQogI3VuZGVmIEZJTExfT1BUSU9OX0lORk8KIH07CkBAIC0yOTgsMjgg
KzMxNCwxOCBAQCBzdGF0aWMgdm9pZCBzY2FsZUpJVFBvbGljeSgpCiAgICAgZWxzZSBpZiAoc2Nh
bGVGYWN0b3IgPCAwLjApCiAgICAgICAgIHNjYWxlRmFjdG9yID0gMC4wOwogCi0gICAgc3RydWN0
IE9wdGlvblRvU2NhbGUgewotICAgICAgICBPcHRpb25zOjpJRCBpZDsKLSAgICAgICAgaW50MzJf
dCBtaW5WYWw7CisgICAgYXV0byBzY2FsZU9wdGlvbiA9IFsmXSAoaW50MzJfdCYgb3B0aW9uVmFs
dWUsIGludDMyX3QgbWluVmFsdWUpIHsKKyAgICAgICAgb3B0aW9uVmFsdWUgKj0gc2NhbGVGYWN0
b3I7CisgICAgICAgIG9wdGlvblZhbHVlID0gc3RkOjptYXgob3B0aW9uVmFsdWUsIG1pblZhbHVl
KTsKICAgICB9OwogCi0gICAgc3RhdGljIGNvbnN0IE9wdGlvblRvU2NhbGUgb3B0aW9uc1RvU2Nh
bGVbXSA9IHsKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElE
LCAwIH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbklELCAwIH0sCi0g
ICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcElELCAxIH0s
Ci0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXBJ
RCwgMSB9LAotICAgICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplU29vbklELCAx
IH0sCi0gICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uSUQsIDIg
fSwKLSAgICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
SUQsIDIgfQotICAgIH07Ci0KLSAgICBjb25zdCBpbnQgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZSA9
IHNpemVvZihvcHRpb25zVG9TY2FsZSkgLyBzaXplb2YoT3B0aW9uVG9TY2FsZSk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZk9wdGlvbnNUb1NjYWxlOyBpKyspIHsKLSAgICAgICAg
T3B0aW9uIG9wdGlvbihvcHRpb25zVG9TY2FsZVtpXS5pZCk7Ci0gICAgICAgIEFTU0VSVChvcHRp
b24udHlwZSgpID09IE9wdGlvbnM6OlR5cGU6OkludDMyKTsKLSAgICAgICAgb3B0aW9uLmludDMy
VmFsKCkgKj0gc2NhbGVGYWN0b3I7Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpID0gc3RkOjpt
YXgob3B0aW9uLmludDMyVmFsKCksIG9wdGlvbnNUb1NjYWxlW2ldLm1pblZhbCk7Ci0gICAgfQor
ICAgIHNjYWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwKCksIDAp
OworICAgIHNjYWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb24oKSwgMCk7Cisg
ICAgc2NhbGVPcHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgp
LCAxKTsKKyAgICBzY2FsZU9wdGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcCgpLCAxKTsKKyAgICBzY2FsZU9wdGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb24oKSwgMSk7CisgICAgc2NhbGVPcHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9y
RlRMT3B0aW1pemVTb29uKCksIDIpOworICAgIHNjYWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9s
ZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXAoKSwgMik7CiB9CiAKIHN0YXRpYyB2b2lkIG92ZXJy
aWRlRGVmYXVsdHMoKQpAQCAtNDQ2LDcgKzQ1Miw3IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURl
cGVuZGVudE9wdGlvbnMoKQogICAgIGlmICghT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpCiAg
ICAgICAgIE9wdGlvbnM6OmNvbGxlY3RDb250aW51b3VzbHkoKSA9IGZhbHNlOwogCi0gICAgaWYg
KE9wdGlvbihPcHRpb25zOjpqaXRQb2xpY3lTY2FsZUlEKS5pc092ZXJyaWRkZW4oKSkKKyAgICBp
ZiAoT3B0aW9uczo6aml0UG9saWN5U2NhbGUoKSAhPSBPcHRpb25zOjpqaXRQb2xpY3lTY2FsZURl
ZmF1bHQoKSkKICAgICAgICAgc2NhbGVKSVRQb2xpY3koKTsKICAgICAKICAgICBpZiAoT3B0aW9u
czo6Zm9yY2VFYWdlckNvbXBpbGF0aW9uKCkpIHsKQEAgLTUxNiw2ICs1MjIsMTggQEAgc3RhdGlj
IHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgICAgIE9wdGlvbnM6OnJhbmRv
bUludGVncml0eUF1ZGl0UmF0ZSgpID0gMS4wOwogfQogCitpbmxpbmUgdm9pZCogT3B0aW9uczo6
YWRkcmVzc09mT3B0aW9uKE9wdGlvbnM6OklEIGlkKQoreworICAgIGF1dG8gb2Zmc2V0ID0gT3B0
aW9uczo6c19jb25zdE1ldGFEYXRhW2lkXS5vZmZzZXRPZk9wdGlvbjsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmdfanNjQ29uZmlnLm9wdGlvbnMpICsgb2Zmc2V0Owor
fQorCitpbmxpbmUgdm9pZCogT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uRGVmYXVsdChPcHRpb25z
OjpJRCBpZCkKK3sKKyAgICBhdXRvIG9mZnNldCA9IE9wdGlvbnM6OnNfY29uc3RNZXRhRGF0YVtp
ZF0ub2Zmc2V0T2ZPcHRpb25EZWZhdWx0OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmZ19qc2NDb25maWcub3B0aW9ucykgKyBvZmZzZXQ7Cit9CisKIHZvaWQgT3B0aW9u
czo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVP
cHRpb25zT25jZUZsYWc7CkBAIC01MjMsMTMgKzU0MSwyMyBAQCB2b2lkIE9wdGlvbnM6OmluaXRp
YWxpemUoKQogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAgICBpbml0aWFsaXplT3B0aW9uc09u
Y2VGbGFnLAogICAgICAgICBbXSB7CisgICAgICAgICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBv
cHRpb25zIGFkZHJlc3MgY29tcHV0YXRpb24gaXMgd29ya2luZy4KKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbih1c2VLZXJuVENTTUlEKSA9PSAgJk9w
dGlvbnM6OnVzZUtlcm5UQ1NNKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9u
czo6YWRkcmVzc09mT3B0aW9uRGVmYXVsdCh1c2VLZXJuVENTTUlEKSA9PSAgJk9wdGlvbnM6OnVz
ZUtlcm5UQ1NNRGVmYXVsdCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6
OmFkZHJlc3NPZk9wdGlvbihnY01heEhlYXBTaXplSUQpID09ICAmT3B0aW9uczo6Z2NNYXhIZWFw
U2l6ZSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFkZHJlc3NPZk9w
dGlvbkRlZmF1bHQoZ2NNYXhIZWFwU2l6ZUlEKSA9PSAgJk9wdGlvbnM6OmdjTWF4SGVhcFNpemVE
ZWZhdWx0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09m
T3B0aW9uKGZvcmNlT1NSRXhpdFRvTExJbnRJRCkgPT0gICZPcHRpb25zOjpmb3JjZU9TUkV4aXRU
b0xMSW50KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09m
T3B0aW9uRGVmYXVsdChmb3JjZU9TUkV4aXRUb0xMSW50SUQpID09ICAmT3B0aW9uczo6Zm9yY2VP
U1JFeGl0VG9MTEludERlZmF1bHQoKSk7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBD
b25maWc6OmVuYWJsZVJlc3RyaWN0ZWRPcHRpb25zKCk7CiAjZW5kaWYKICAgICAgICAgICAgIC8v
IEluaXRpYWxpemUgZWFjaCBvZiB0aGUgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVz
OgotI2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWls
YWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAotICAgICAgICAgICAgbmFtZV8oKSA9IGRlZmF1bHRW
YWx1ZV87IFwKLSAgICAgICAgICAgIG5hbWVfIyNEZWZhdWx0KCkgPSBkZWZhdWx0VmFsdWVfOwor
I2RlZmluZSBJTklUX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJp
bGl0eV8sIGRlc2NyaXB0aW9uXykgeyBcCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGRl
ZmF1bHRWYWx1ZV87IFwKKyAgICAgICAgICAgICAgICBuYW1lXygpID0gdmFsdWU7IFwKKyAgICAg
ICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gdmFsdWU7IFwKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oSU5JVF9PUFRJT04pCiAjdW5kZWYgSU5JVF9P
UFRJT04KIApAQCAtNzMyLDcgKzc2MCw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0aG91
dEFsaWFzKGNvbnMKIAogICAgIGNvbnN0IGNoYXIqIHZhbHVlU3RyID0gZXF1YWxTdHIgKyAxOwog
Ci0gICAgLy8gRm9yIGVhY2ggb3B0aW9uLCBjaGVjayBpZiB0aGUgc3BlY2lmeSBhcmcgaXMgYSBt
YXRjaC4gSWYgc28sIHNldCB0aGUgYXJnCisgICAgLy8gRm9yIGVhY2ggb3B0aW9uLCBjaGVjayBp
ZiB0aGUgc3BlY2lmaWVkIGFyZyBpcyBhIG1hdGNoLiBJZiBzbywgc2V0IHRoZSBhcmcKICAgICAv
LyBpZiB0aGUgdmFsdWUgbWFrZXMgc2Vuc2UuIE90aGVyd2lzZSwgbW92ZSBvbiB0byBjaGVja2lu
ZyB0aGUgbmV4dCBvcHRpb24uCiAjZGVmaW5lIFNFVF9PUFRJT05fSUZfTUFUQ0godHlwZV8sIG5h
bWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKICAgICBp
ZiAoc3RybGVuKCNuYW1lXykgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihlcXVhbFN0ciAtIGFyZykg
ICAgICBcCkBAIC03NDAsMTEgKzc2OCwxMCBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhv
dXRBbGlhcyhjb25zCiAgICAgICAgIGlmIChBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8gIT0g
QXZhaWxhYmlsaXR5OjpOb3JtYWwgICAgIFwKICAgICAgICAgICAgICYmICFpc0F2YWlsYWJsZShu
YW1lXyMjSUQsIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XykpIFwKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICB2YWx1ZSA9IChkZWZhdWx0VmFsdWVfKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFyc2UodmFs
dWVTdHIsIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdWNjZXNz
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICAgICAgbmFtZV8oKSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OnR5cGVfPiB2YWx1ZTsgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZhbHVlID0gcGFyc2U8T3B0aW9uc1N0b3JhZ2U6
OnR5cGVfPih2YWx1ZVN0cik7ICAgICAgICAgICAgXAorICAgICAgICBpZiAodmFsdWUpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IG5hbWVfKCkgPSB2YWx1ZS52YWx1ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICBjb3JyZWN0T3B0aW9ucygpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICAgICAgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03NTgsMTMgKzc4NSwx
MiBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zCiAgICAgcmV0dXJu
IGZhbHNlOyAvLyBObyBvcHRpb24gbWF0Y2hlZC4KIH0KIAotc3RhdGljIGJvb2wgaW52ZXJ0Qm9v
bE9wdGlvblZhbHVlKGNvbnN0IGNoYXIqIHZhbHVlU3RyLCBjb25zdCBjaGFyKiYgaW52ZXJ0ZWRW
YWx1ZVN0cikKK3N0YXRpYyBjb25zdCBjaGFyKiBpbnZlcnRCb29sT3B0aW9uVmFsdWUoY29uc3Qg
Y2hhciogdmFsdWVTdHIpCiB7Ci0gICAgYm9vbCBib29sVmFsdWU7Ci0gICAgaWYgKCFwYXJzZSh2
YWx1ZVN0ciwgYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGludmVydGVk
VmFsdWVTdHIgPSBib29sVmFsdWUgPyAiZmFsc2UiIDogInRydWUiOwotICAgIHJldHVybiB0cnVl
OworICAgIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiB2YWx1ZSA9IHBhcnNlPE9wdGlv
bnNTdG9yYWdlOjpCb29sPih2YWx1ZVN0cik7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCkgPyAiZmFsc2UiIDogInRydWUi
OwogfQogCiAKQEAgLTc4OCw4ICs4MTQsOCBAQCBib29sIE9wdGlvbnM6OnNldEFsaWFzZWRPcHRp
b24oY29uc3QgY2hhCiAgICAgICAgICAgICB1bmFsaWFzZWRPcHRpb24gPSB1bmFsaWFzZWRPcHRp
b24gKyBlcXVhbFN0cjsgICAgICAgICAgICAgICBcCiAgICAgICAgIGVsc2UgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
ICAgICBBU1NFUlQoZXF1aXZhbGVuY2UgPT0gSW52ZXJ0ZWRPcHRpb24pOyAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICBjb25zdCBjaGFyKiBpbnZlcnRlZFZhbHVlU3RyID0gbnVs
bHB0cjsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAoIWludmVydEJvb2xP
cHRpb25WYWx1ZShlcXVhbFN0ciArIDEsIGludmVydGVkVmFsdWVTdHIpKSBcCisgICAgICAgICAg
ICBhdXRvKiBpbnZlcnRlZFZhbHVlU3RyID0gaW52ZXJ0Qm9vbE9wdGlvblZhbHVlKGVxdWFsU3Ry
ICsgMSk7IFwKKyAgICAgICAgICAgIGlmICghaW52ZXJ0ZWRWYWx1ZVN0cikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IHVuYWxpYXNlZE9wdGlvbiA9IHVuYWxpYXNlZE9wdGlvbiArICI9IiArIGludmVydGVkVmFsdWVT
dHI7IFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTgyMSw3ICs4NDcsNyBAQCB2b2lkIE9wdGlvbnM6
OmR1bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxkCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwogICAgIH0KIAotICAgIGZvciAoaW50IGlkID0gMDsgaWQgPCBudW1iZXJPZk9wdGlvbnM7IGlk
KyspIHsKKyAgICBmb3IgKHNpemVfdCBpZCA9IDA7IGlkIDwgTnVtYmVyT2ZPcHRpb25zOyBpZCsr
KSB7CiAgICAgICAgIGlmIChzZXBhcmF0b3IgJiYgaWQpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChzZXBhcmF0b3IpOwogICAgICAgICBkdW1wT3B0aW9uKGJ1aWxkZXIsIGxldmVsLCBzdGF0
aWNfY2FzdDxJRD4oaWQpLCBvcHRpb25IZWFkZXIsIG9wdGlvbkZvb3RlciwgZHVtcERlZmF1bHRz
T3B0aW9uKTsKQEAgLTg0MCwxMyArODY2LDU1IEBAIHZvaWQgT3B0aW9uczo6ZHVtcEFsbE9wdGlv
bnMoRklMRSogc3RyZWEKICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgYnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCitzdHJ1Y3QgT3B0aW9uUmVhZGVyIHsKKyAgICBjbGFz
cyBPcHRpb24geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBkdW1wKFN0cmluZ0J1aWxkZXIm
KSBjb25zdDsKKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uJiBvdGhlcikg
Y29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWUoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0ubmFtZTsg
fQorICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlv
bnM6OnNfY29uc3RNZXRhRGF0YVttX2lkXS5kZXNjcmlwdGlvbjsgfQorICAgICAgICBPcHRpb25z
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9p
ZF0udHlwZTsgfQorICAgICAgICBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KCkg
Y29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhW21faWRdLmF2YWlsYWJpbGl0
eTsgfQorICAgICAgICBib29sIGlzT3ZlcnJpZGRlbigpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9
IE9wdGlvblJlYWRlcjo6ZGVmYXVsdEZvcihtX2lkKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgT3B0aW9uKE9wdGlvbnM6OklEIGlkLCB2b2lkKiBhZGRyZXNzT2ZWYWx1ZSkKKyAgICAgICAg
ICAgIDogbV9pZChpZCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5pdFZhbHVlKGFkZHJlc3NP
ZlZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgaW5pdFZhbHVlKHZvaWQqIGFkZHJl
c3NPZlZhbHVlKTsKKworICAgICAgICBPcHRpb25zOjpJRCBtX2lkOworICAgICAgICB1bmlvbiB7
CisgICAgICAgICAgICBib29sIG1fYm9vbDsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1fdW5zaWdu
ZWQ7CisgICAgICAgICAgICBkb3VibGUgbV9kb3VibGU7CisgICAgICAgICAgICBpbnQzMl90IG1f
aW50MzI7CisgICAgICAgICAgICBzaXplX3QgbV9zaXplOworICAgICAgICAgICAgT3B0aW9uUmFu
Z2UgbV9vcHRpb25SYW5nZTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1fb3B0aW9uU3RyaW5n
OworICAgICAgICAgICAgR0NMb2dnaW5nOjpMZXZlbCBtX2djTG9nTGV2ZWw7CisgICAgICAgIH07
CisKKyAgICAgICAgZnJpZW5kIHN0cnVjdCBPcHRpb25SZWFkZXI7CisgICAgfTsKKworICAgIHN0
YXRpYyBjb25zdCBPcHRpb24gb3B0aW9uRm9yKE9wdGlvbnM6OklEKTsKKyAgICBzdGF0aWMgY29u
c3QgT3B0aW9uIGRlZmF1bHRGb3IoT3B0aW9uczo6SUQpOworfTsKKwogdm9pZCBPcHRpb25zOjpk
dW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZlbCwgT3B0aW9u
czo6SUQgaWQsCiAgICAgY29uc3QgY2hhciogaGVhZGVyLCBjb25zdCBjaGFyKiBmb290ZXIsIER1
bXBEZWZhdWx0c09wdGlvbiBkdW1wRGVmYXVsdHNPcHRpb24pCiB7Ci0gICAgaWYgKGlkID49IG51
bWJlck9mT3B0aW9ucykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpZCkgPj0gTnVtYmVy
T2ZPcHRpb25zKQogICAgICAgICByZXR1cm47IC8vIElsbGVnYWwgb3B0aW9uLgogCi0gICAgT3B0
aW9uIG9wdGlvbihpZCk7CisgICAgYXV0byBvcHRpb24gPSBPcHRpb25SZWFkZXI6Om9wdGlvbkZv
cihpZCk7CiAgICAgQXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSA9IG9wdGlvbi5hdmFpbGFiaWxp
dHkoKTsKICAgICBpZiAoYXZhaWxhYmlsaXR5ICE9IEF2YWlsYWJpbGl0eTo6Tm9ybWFsICYmICFp
c0F2YWlsYWJsZShpZCwgYXZhaWxhYmlsaXR5KSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYzLDgg
KzkzMSw5IEBAIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiAKICAgICBv
cHRpb24uZHVtcChidWlsZGVyKTsKIAogICAgIGlmICh3YXNPdmVycmlkZGVuICYmIChkdW1wRGVm
YXVsdHNPcHRpb24gPT0gRHVtcERlZmF1bHRzKSkgeworICAgICAgICBhdXRvIGRlZmF1bHRPcHRp
b24gPSBPcHRpb25SZWFkZXI6OmRlZmF1bHRGb3IoaWQpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiAoZGVmYXVsdDogIik7Ci0gICAgICAgIG9wdGlvbi5kZWZhdWx0T3B0aW9uKCku
ZHVtcChidWlsZGVyKTsKKyAgICAgICAgZGVmYXVsdE9wdGlvbi5kdW1wKGJ1aWxkZXIpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikiKTsKICAgICB9CiAKQEAgLTg4NSwyOSArOTU0
LDcwIEBAIHZvaWQgT3B0aW9uczo6ZW5zdXJlT3B0aW9uc0FyZUNvaGVyZW50KCkKICAgICAgICAg
Q1JBU0goKTsKIH0KIAotdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikg
Y29uc3QKK2NvbnN0IE9wdGlvblJlYWRlcjo6T3B0aW9uIE9wdGlvblJlYWRlcjo6b3B0aW9uRm9y
KE9wdGlvbnM6OklEIGlkKQoreworICAgIHJldHVybiBPcHRpb24oaWQsIE9wdGlvbnM6OmFkZHJl
c3NPZk9wdGlvbihpZCkpOworfQorCitjb25zdCBPcHRpb25SZWFkZXI6Ok9wdGlvbiBPcHRpb25S
ZWFkZXI6OmRlZmF1bHRGb3IoT3B0aW9uczo6SUQgaWQpCit7CisgICAgcmV0dXJuIE9wdGlvbihp
ZCwgT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uRGVmYXVsdChpZCkpOworfQorCit2b2lkIE9wdGlv
blJlYWRlcjo6T3B0aW9uOjppbml0VmFsdWUodm9pZCogYWRkcmVzc09mVmFsdWUpCit7CisgICAg
T3B0aW9uczo6VHlwZSB0eXBlID0gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhW21faWRdLnR5cGU7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgorICAg
ICAgICBtZW1jcHkoJm1fYm9vbCwgYWRkcmVzc09mVmFsdWUsIHNpemVvZihPcHRpb25zU3RvcmFn
ZTo6Qm9vbCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlVuc2ln
bmVkOgorICAgICAgICBtZW1jcHkoJm1fdW5zaWduZWQsIGFkZHJlc3NPZlZhbHVlLCBzaXplb2Yo
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6RG91YmxlOgorICAgICAgICBtZW1jcHkoJm1fZG91YmxlLCBhZGRyZXNzT2ZW
YWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpEb3VibGUpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpJbnQzMjoKKyAgICAgICAgbWVtY3B5KCZtX2ludDMyLCBh
ZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpJbnQzMikpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlNpemU6CisgICAgICAgIG1lbWNweSgmbV9z
aXplLCBhZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpTaXplKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6CisgICAgICAg
IG1lbWNweSgmbV9vcHRpb25SYW5nZSwgYWRkcmVzc09mVmFsdWUsIHNpemVvZihPcHRpb25zU3Rv
cmFnZTo6T3B0aW9uUmFuZ2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcHRpb25zOjpU
eXBlOjpPcHRpb25TdHJpbmc6CisgICAgICAgIG1lbWNweSgmbV9vcHRpb25TdHJpbmcsIGFkZHJl
c3NPZlZhbHVlLCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6CisgICAgICAgIG1l
bWNweSgmbV9nY0xvZ0xldmVsLCBhZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9yYWdl
OjpHQ0xvZ0xldmVsKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBPcHRpb25S
ZWFkZXI6Ok9wdGlvbjo6ZHVtcChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAgICAg
ICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbEJvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQobV9ib29sID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6VW5zaWduZWQ6Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fZW50cnkudmFsVW5zaWduZWQpOworICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihtX3Vuc2lnbmVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcHRpb25z
OjpUeXBlOjpTaXplOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJ5LnZhbFNp
emUpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3NpemUpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2VudHJ5LnZhbERvdWJsZSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9kb3VibGUpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2VudHJ5LnZhbEludDMyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9p
bnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFu
Z2U6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VT
dHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fb3B0aW9uUmFuZ2UucmFuZ2VTdHJp
bmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3Ry
aW5nOiB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG9wdGlvbiA9IG1fZW50cnkudmFsT3B0aW9uU3Ry
aW5nOworICAgICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX29wdGlvblN0cmluZzsKICAgICAg
ICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBvcHRpb24gPSAiIjsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyInKTsKQEAgLTkxNiwzMiArMTAyNiwzMiBAQCB2b2lkIE9wdGlvbjo6ZHVtcChT
dHJpbmdCdWlsZGVyJiBidWlsZGVyCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE9w
dGlvbnM6OlR5cGU6OkdDTG9nTGV2ZWw6IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoR0NMb2dn
aW5nOjpsZXZlbEFzU3RyaW5nKG1fZW50cnkudmFsR0NMb2dMZXZlbCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZChHQ0xvZ2dpbmc6OmxldmVsQXNTdHJpbmcobV9nY0xvZ0xldmVsKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICB9CiB9CiAKLWJvb2wgT3B0aW9uOjpvcGVyYXRvcj09KGNv
bnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0Citib29sIE9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVy
YXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkp
IHsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkJvb2w6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5
LnZhbEJvb2wgPT0gb3RoZXIubV9lbnRyeS52YWxCb29sOworICAgICAgICByZXR1cm4gbV9ib29s
ID09IG90aGVyLm1fYm9vbDsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAg
ICAgICByZXR1cm4gbV9lbnRyeS52YWxVbnNpZ25lZCA9PSBvdGhlci5tX2VudHJ5LnZhbFVuc2ln
bmVkOworICAgICAgICByZXR1cm4gbV91bnNpZ25lZCA9PSBvdGhlci5tX3Vuc2lnbmVkOwogICAg
IGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6ZToKLSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsU2l6
ZSA9PSBvdGhlci5tX2VudHJ5LnZhbFNpemU7CisgICAgICAgIHJldHVybiBtX3NpemUgPT0gb3Ro
ZXIubV9zaXplOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6RG91YmxlOgotICAgICAgICByZXR1
cm4gKG1fZW50cnkudmFsRG91YmxlID09IG90aGVyLm1fZW50cnkudmFsRG91YmxlKSB8fCAoc3Rk
Ojppc25hbihtX2VudHJ5LnZhbERvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX2VudHJ5LnZh
bERvdWJsZSkpOworICAgICAgICByZXR1cm4gKG1fZG91YmxlID09IG90aGVyLm1fZG91YmxlKSB8
fCAoc3RkOjppc25hbihtX2RvdWJsZSkgJiYgc3RkOjppc25hbihvdGhlci5tX2RvdWJsZSkpOwog
ICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6SW50MzI6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZh
bEludDMyID09IG90aGVyLm1fZW50cnkudmFsSW50MzI7CisgICAgICAgIHJldHVybiBtX2ludDMy
ID09IG90aGVyLm1faW50MzI7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpPcHRpb25SYW5nZToK
LSAgICAgICAgcmV0dXJuIG1fZW50cnkudmFsT3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKSA9PSBv
dGhlci5tX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCk7CisgICAgICAgIHJldHVy
biBtX29wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9vcHRpb25SYW5nZS5yYW5n
ZVN0cmluZygpOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uU3RyaW5nOgotICAgICAg
ICByZXR1cm4gKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nID09IG90aGVyLm1fZW50cnkudmFsT3B0
aW9uU3RyaW5nKQotICAgICAgICAgICAgfHwgKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmIG90
aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV9lbnRyeS52YWxPcHRpb25T
dHJpbmcsIG90aGVyLm1fZW50cnkudmFsT3B0aW9uU3RyaW5nKSk7CisgICAgICAgIHJldHVybiAo
bV9vcHRpb25TdHJpbmcgPT0gb3RoZXIubV9vcHRpb25TdHJpbmcpCisgICAgICAgICAgICB8fCAo
bV9vcHRpb25TdHJpbmcgJiYgb3RoZXIubV9vcHRpb25TdHJpbmcgJiYgIXN0cmNtcChtX29wdGlv
blN0cmluZywgb3RoZXIubV9vcHRpb25TdHJpbmcpKTsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkdDTG9nTGV2ZWw6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9nTGV2ZWwgPT0gb3Ro
ZXIubV9lbnRyeS52YWxHQ0xvZ0xldmVsOworICAgICAgICByZXR1cm4gbV9nY0xvZ0xldmVsID09
IG90aGVyLm1fZ2NMb2dMZXZlbDsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjUyNTI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwyOCArMzksMTYgQEAgdXNpbmcgV1RGOjpTdHJpbmdCdWlsZGVyOwogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jZGVmaW5lIE1BWElNVU1fTlVN
QkVSX09GX0ZUTF9DT01QSUxFUl9USFJFQURTIDIKLSNlbHNlCi0jZGVmaW5lIE1BWElNVU1fTlVN
QkVSX09GX0ZUTF9DT01QSUxFUl9USFJFQURTIDgKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkFT
U0VNQkxZX1NUUkVBTUlOR19BUEkpCi1jb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0
cmVhbWluZ0FwaSA9IHRydWU7Ci0jZWxzZQotY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1i
bHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKLSNlbmRpZgotCiBjbGFzcyBPcHRpb25zIHsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIER1bXBMZXZlbCB7CisgICAgZW51bSBjbGFzcyBEdW1wTGV2ZWwg
OiB1aW50OF90IHsKICAgICAgICAgTm9uZSA9IDAsCiAgICAgICAgIE92ZXJyaWRkZW4sCiAgICAg
ICAgIEFsbCwKICAgICAgICAgVmVyYm9zZQogICAgIH07CiAKLSAgICBlbnVtIGNsYXNzIEF2YWls
YWJpbGl0eSB7CisgICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgOiB1aW50OF90ICB7CiAgICAg
ICAgIE5vcm1hbCA9IDAsCiAgICAgICAgIFJlc3RyaWN0ZWQsCiAgICAgICAgIENvbmZpZ3VyYWJs
ZQpAQCAtNjksMTMgKzU3LDEyIEBAIHB1YmxpYzoKICNkZWZpbmUgREVDTEFSRV9PUFRJT05fSUQo
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IFwKICAgICBuYW1lXyMjSUQsCiAKLSAgICBlbnVtIElEIHsKKyAgICBlbnVtIElEIDogdWludDE2
X3QgewogICAgICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0lEKQotICAg
ICAgICBudW1iZXJPZk9wdGlvbnMKICAgICB9OwogI3VuZGVmIERFQ0xBUkVfT1BUSU9OX0lECiAK
LSAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qgewog
ICAgICAgICBCb29sLAogICAgICAgICBVbnNpZ25lZCwKICAgICAgICAgRG91YmxlLApAQCAtMTAy
LDggKzg5LDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGVu
c3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpOwogCiAjZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0FDQ0VT
U09SUyh0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0
aW9uXykgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFt
ZV8oKSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zW25hbWVfIyNJRF0udmFsIyN0eXBlXzsg
fSAgXAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbkVudHJ5Ojp0eXBlXyYgbmFtZV8j
I0RlZmF1bHQoKSB7IHJldHVybiBnX2pzY0NvbmZpZy5kZWZhdWx0T3B0aW9uc1tuYW1lXyMjSURd
LnZhbCMjdHlwZV87IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
dHlwZV8mIG5hbWVfKCkgeyByZXR1cm4gZ19qc2NDb25maWcub3B0aW9ucy5uYW1lXzsgfSAgXAor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjp0eXBlXyYgbmFtZV8jI0Rl
ZmF1bHQoKSB7IHJldHVybiBnX2pzY0NvbmZpZy5vcHRpb25zLm5hbWVfIyNEZWZhdWx0OyB9CiAK
ICAgICBGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9OX0FDQ0VTU09SUykKICN1bmRl
ZiBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMKQEAgLTExMSwxMyArOTgsMTMgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKElELCBBdmFpbGFiaWxpdHkpOwogCiBwcml2YXRl
OgotCi0gICAgLy8gRm9yIHN0b3JpbmcgY29uc3RhbnQgbWV0YSBkYXRhIGFib3V0IGVhY2ggb3B0
aW9uOgotICAgIHN0cnVjdCBFbnRyeUluZm8geworICAgIHN0cnVjdCBDb25zdE1ldGFEYXRhIHsK
ICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRp
b247CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAgQXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0
eTsKKyAgICAgICAgdWludDE2X3Qgb2Zmc2V0T2ZPcHRpb247CisgICAgICAgIHVpbnQxNl90IG9m
ZnNldE9mT3B0aW9uRGVmYXVsdDsKICAgICB9OwogCiAgICAgT3B0aW9ucygpOwpAQCAtMTM2LDEx
NSArMTIzLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2V0QWxpYXNlZE9wdGlvbihj
b25zdCBjaGFyKiBhcmcpOwogICAgIHN0YXRpYyBib29sIG92ZXJyaWRlQWxpYXNlZE9wdGlvbldp
dGhIZXVyaXN0aWMoY29uc3QgY2hhciogbmFtZSk7CiAKLSAgICBzdGF0aWMgY29uc3QgRW50cnlJ
bmZvIHNfb3B0aW9uc0luZm9bbnVtYmVyT2ZPcHRpb25zXTsKKyAgICBpbmxpbmUgc3RhdGljIHZv
aWQqIGFkZHJlc3NPZk9wdGlvbihPcHRpb25zOjpJRCk7CisgICAgaW5saW5lIHN0YXRpYyB2b2lk
KiBhZGRyZXNzT2ZPcHRpb25EZWZhdWx0KE9wdGlvbnM6OklEKTsKIAotICAgIGZyaWVuZCBjbGFz
cyBPcHRpb247Ci19OworICAgIHN0YXRpYyBjb25zdCBDb25zdE1ldGFEYXRhIHNfY29uc3RNZXRh
RGF0YVtOdW1iZXJPZk9wdGlvbnNdOwogCi1jbGFzcyBPcHRpb24gewotcHVibGljOgotICAgIE9w
dGlvbihPcHRpb25zOjpJRCBpZCkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fZW50
cnkoZ19qc2NDb25maWcub3B0aW9uc1ttX2lkXSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgZHVtcChTdHJpbmdCdWlsZGVyJikgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgT3B0aW9uJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlv
biYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgCi0gICAg
T3B0aW9uczo6SUQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgY29uc3QgY2hhciog
bmFtZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0gICAg
T3B0aW9uczo6VHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2
YWlsYWJpbGl0eSgpIGNvbnN0OwotICAgIGJvb2wgaXNPdmVycmlkZGVuKCkgY29uc3Q7Ci0gICAg
Y29uc3QgT3B0aW9uIGRlZmF1bHRPcHRpb24oKSBjb25zdDsKLSAgICAKLSAgICBib29sJiBib29s
VmFsKCk7Ci0gICAgdW5zaWduZWQmIHVuc2lnbmVkVmFsKCk7Ci0gICAgZG91YmxlJiBkb3VibGVW
YWwoKTsKLSAgICBpbnQzMl90JiBpbnQzMlZhbCgpOwotICAgIE9wdGlvblJhbmdlIG9wdGlvblJh
bmdlVmFsKCk7Ci0gICAgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nVmFsKCk7Ci0gICAgR0NMb2dn
aW5nOjpMZXZlbCYgZ2NMb2dMZXZlbFZhbCgpOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBPbmx5
IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMuCi0gICAgT3B0aW9uKE9wdGlv
bnM6OklEIGlkLCBPcHRpb25FbnRyeSYgZW50cnkpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAg
ICAgLCBtX2VudHJ5KGVudHJ5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgT3B0aW9uczo6SUQg
bV9pZDsKLSAgICBPcHRpb25FbnRyeSYgbV9lbnRyeTsKKyAgICBmcmllbmQgc3RydWN0IE9wdGlv
blJlYWRlcjsKIH07CiAKLWlubGluZSBjb25zdCBjaGFyKiBPcHRpb246Om5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiBPcHRpb25zOjpzX29wdGlvbnNJbmZvW21faWRdLm5hbWU7Ci19Ci0KLWlu
bGluZSBjb25zdCBjaGFyKiBPcHRpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1ttX2lkXS5kZXNjcmlwdGlvbjsKLX0KLQotaW5saW5l
IE9wdGlvbnM6OlR5cGUgT3B0aW9uOjp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9u
czo6c19vcHRpb25zSW5mb1ttX2lkXS50eXBlOwotfQotCi1pbmxpbmUgT3B0aW9uczo6QXZhaWxh
YmlsaXR5IE9wdGlvbjo6YXZhaWxhYmlsaXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gT3B0aW9u
czo6c19vcHRpb25zSW5mb1ttX2lkXS5hdmFpbGFiaWxpdHk7Ci19Ci0KLWlubGluZSBib29sIE9w
dGlvbjo6aXNPdmVycmlkZGVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKnRoaXMgIT0gZGVmYXVs
dE9wdGlvbigpOwotfQotCi1pbmxpbmUgY29uc3QgT3B0aW9uIE9wdGlvbjo6ZGVmYXVsdE9wdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbihtX2lkLCBnX2pzY0NvbmZpZy5kZWZhdWx0
T3B0aW9uc1ttX2lkXSk7Ci19Ci0KLWlubGluZSBib29sJiBPcHRpb246OmJvb2xWYWwoKQotewot
ICAgIHJldHVybiBtX2VudHJ5LnZhbEJvb2w7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCYgT3B0aW9u
Ojp1bnNpZ25lZFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsVW5zaWduZWQ7Ci19Ci0K
LWlubGluZSBkb3VibGUmIE9wdGlvbjo6ZG91YmxlVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRy
eS52YWxEb3VibGU7Ci19Ci0KLWlubGluZSBpbnQzMl90JiBPcHRpb246OmludDMyVmFsKCkKLXsK
LSAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMjsKLX0KLQotaW5saW5lIE9wdGlvblJhbmdlIE9w
dGlvbjo6b3B0aW9uUmFuZ2VWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblJh
bmdlOwotfQotCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpvcHRpb25TdHJpbmdWYWwoKQot
ewotICAgIHJldHVybiBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKLX0KLQotaW5saW5lIEdDTG9n
Z2luZzo6TGV2ZWwmIE9wdGlvbjo6Z2NMb2dMZXZlbFZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50
cnkudmFsR0NMb2dMZXZlbDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1MjUyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDE5ICsyNSwzNSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkdD
TG9nZ2luZy5oIgorCit1c2luZyBXVEY6OlByaW50U3RyZWFtOworCiBuYW1lc3BhY2UgSlNDIHsK
IAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZU
TF9DT01QSUxFUl9USFJFQURTIDIKKyNlbHNlCisjZGVmaW5lIE1BWElNVU1fTlVNQkVSX09GX0ZU
TF9DT01QSUxFUl9USFJFQURTIDgKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZX1NU
UkVBTUlOR19BUEkpCitjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0Fw
aSA9IHRydWU7CisjZWxzZQorY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGkgPSBmYWxzZTsKKyNlbmRpZgorCiAvLyBIb3cgZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8K
IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gVGhlIEZPUl9FQUNIX0pTQ19PUFRJ
T04oKSBtYWNybyBiZWxvdyBkZWZpbmVzIGEgbGlzdCBvZiBhbGwgSlNDIG9wdGlvbnMgaW4gdXNl
LAogLy8gYWxvbmcgd2l0aCB0aGVpciB0eXBlcyBhbmQgZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRp
b25zIHZhbHVlcyBhcmUgYWN0dWFsbHkKLS8vIHJlYWxpemVkIGFzIGFuIGFycmF5IG9mIE9wdGlv
bkVudHJ5IGVsZW1lbnRzIGluIEpTQzo6Q29uZmlnLgorLy8gcmVhbGl6ZWQgYXMgZmllbGRzIGlu
IE9wdGlvbnNTdG9yYWdlIGVtYmVkZGVkIGluIEpTQzo6Q29uZmlnLgogLy8KLS8vICAgICBPcHRp
b25zOjppbml0aWFsaXplKCkgd2lsbCBpbml0aWFsaXplIHRoZSBhcnJheSBvZiBvcHRpb25zIHZh
bHVlcyB3aXRoCi0vLyB0aGUgZGVmYXVsdHMgc3BlY2lmaWVkIGluIEZPUl9FQUNIX0pTQ19PUFRJ
T04oKSBiZWxvdy4gQWZ0ZXIgdGhhdCwgdGhlIHZhbHVlcyBjYW4KLS8vIGJlIHByb2dyYW1tYXRp
Y2FsbHkgcmVhZCBhbmQgd3JpdHRlbiB0byB1c2luZyBhbiBhY2Nlc3NvciBtZXRob2Qgd2l0aCB0
aGUKLS8vIHNhbWUgbmFtZSBhcyB0aGUgb3B0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIG9wdGlvbiAi
dXNlSklUIiBjYW4gYmUgcmVhZCBhbmQKLS8vIHNldCBsaWtlIHNvOgorLy8gICAgIE9wdGlvbnM6
OmluaXRpYWxpemUoKSB3aWxsIGluaXRpYWxpemUgdGhlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUg
ZGVmYXVsdHMKKy8vIHNwZWNpZmllZCBpbiBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cuIEFm
dGVyIHRoYXQsIHRoZSB2YWx1ZXMgY2FuIGJlCisvLyBwcm9ncmFtbWF0aWNhbGx5IHJlYWQgYW5k
IHdyaXR0ZW4gdG8gdXNpbmcgYW4gYWNjZXNzb3IgbWV0aG9kIHdpdGggdGhlIHNhbWUKKy8vIG5h
bWUgYXMgdGhlIG9wdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2FuIGJl
IHJlYWQgYW5kIHNldCBsaWtlCisvLyBzbzoKIC8vCiAvLyAgICAgYm9vbCBqaXRJc09uID0gT3B0
aW9uczo6dXNlSklUKCk7ICAvLyBHZXQgdGhlIG9wdGlvbiB2YWx1ZS4KIC8vICAgICBPcHRpb25z
Ojp1c2VKSVQoKSA9IGZhbHNlOyAgICAgICAgIC8vIFNldHMgdGhlIG9wdGlvbiB2YWx1ZS4KQEAg
LTU0LDYgKzcwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogLy8gY2hlY2tzIGFyZSBkb25lIGFmdGVy
IHRoZSBvcHRpb24gdmFsdWVzIGFyZSBzZXQuIElmIHlvdSBhbHRlciB0aGUgb3B0aW9uCiAvLyB2
YWx1ZXMgYWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgKGZvciB5b3VyIG93biB0ZXN0aW5nKSwgdGhl
biB5b3UncmUgbGlhYmxlIHRvCiAvLyBlbnN1cmUgdGhhdCB0aGUgbmV3IHZhbHVlcyBzZXQgYXJl
IHNhbmUgYW5kIHJlYXNvbmFibGUgZm9yIHlvdXIgb3duIHJ1bi4KKy8vCisvLyBBbnkgbW9kaWZp
Y2F0aW9ucyB0byBvcHRpb25zIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIGZpcnN0IFZNIGlzIGlu
c3RhbnRpYXRlLgorLy8gT24gaW5zdGFudGlhdGlvbiBvZiB0aGUgZmlyc3QgVk0gaW5zdGFuY2Us
IHRoZSBPcHRpb25zIHdpbGwgYmUgd3JpdGUgcHJvdGVjdGVkCisvLyBhbmQgY2Fubm90IGJlIG1v
ZGlmaWVkIHRoZXJlYWZ0ZXIuCiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX09QVElPTih2KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2KEJvb2wsIHVzZUtl
cm5UQ1NNLCB0cnVlLCBOb3JtYWwsICJOb3RlOiB0aGlzIG5lZWRzIHRvIGdvIGJlZm9yZSBvdGhl
ciBvcHRpb25zIHNpbmNlIHRoZXkgZGVwZW5kIG9uIHRoaXMgdmFsdWUuIikgXApAQCAtNTI3LDUg
KzU0Nyw1NCBAQCBjb25zdGV4cHIgc2l6ZV90IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zCiAKIGNv
bnN0ZXhwciBzaXplX3QgTnVtYmVyT2ZPcHRpb25zID0gY291bnROdW1iZXJPZkpTQ09wdGlvbnMo
KTsKIAotfSAvLyBuYW1lc3BhY2UgSlNDCitjbGFzcyBPcHRpb25SYW5nZSB7Citwcml2YXRlOgor
ICAgIGVudW0gUmFuZ2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIEluaXRFcnJvciwgTm9ybWFsLCBJ
bnZlcnRlZCB9OworcHVibGljOgorICAgIE9wdGlvblJhbmdlJiBvcGVyYXRvcj0gKGNvbnN0IGlu
dCYgcmhzKQorICAgIHsgLy8gT25seSBuZWVkZWQgZm9yIGluaXRpYWxpemF0aW9uCisgICAgICAg
IGlmICghcmhzKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFsaXplZDsKKyAgICAg
ICAgICAgIG1fcmFuZ2VTdHJpbmcgPSAwOworICAgICAgICAgICAgbV9sb3dMaW1pdCA9IDA7Cisg
ICAgICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIGJvb2wgaW5pdChjb25zdCBjaGFyKik7CisgICAgYm9vbCBpc0lu
UmFuZ2UodW5zaWduZWQpOworICAgIGNvbnN0IGNoYXIqIHJhbmdlU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gKG1fc3RhdGUgPiBJbml0RXJyb3IpID8gbV9yYW5nZVN0cmluZyA6IHNfbnVsbFJhbmdl
U3RyOyB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCitw
cml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX251bGxSYW5nZVN0cjsKKwor
ICAgIFJhbmdlU3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBjaGFyKiBtX3JhbmdlU3RyaW5nOwor
ICAgIHVuc2lnbmVkIG1fbG93TGltaXQ7CisgICAgdW5zaWduZWQgbV9oaWdoTGltaXQ7Cit9Owor
CitzdHJ1Y3QgT3B0aW9uc1N0b3JhZ2UgeworICAgIHVzaW5nIEJvb2wgPSBib29sOworICAgIHVz
aW5nIFVuc2lnbmVkID0gdW5zaWduZWQ7CisgICAgdXNpbmcgRG91YmxlID0gZG91YmxlOworICAg
IHVzaW5nIEludDMyID0gaW50MzJfdDsKKyAgICB1c2luZyBTaXplID0gc2l6ZV90OworICAgIHVz
aW5nIE9wdGlvblJhbmdlID0gSlNDOjpPcHRpb25SYW5nZTsKKyAgICB1c2luZyBPcHRpb25TdHJp
bmcgPSBjb25zdCBjaGFyKjsKKyAgICB1c2luZyBHQ0xvZ0xldmVsID0gR0NMb2dnaW5nOjpMZXZl
bDsKKworI2RlZmluZSBERUNMQVJFX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1bHRWYWx1ZV8s
IGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAorICAgIHR5cGVfIG5hbWVfOyBcCisgICAg
dHlwZV8gbmFtZV8jI0RlZmF1bHQ7CitGT1JfRUFDSF9KU0NfT1BUSU9OKERFQ0xBUkVfT1BUSU9O
KQorI3VuZGVmIERFQ0xBUkVfT1BUSU9OCit9OwogCisvLyBPcHRpb25zOjpNZXRhZGF0YSdzIG9m
ZnNldE9mT3B0aW9uIGFuZCBvZmZzZXRPZk9wdGlvbkRlZmF1bHQgcmVsaWVzIG9uIHRoaXMuCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihPcHRpb25zU3RvcmFnZSkgPD0gMTYgKiBLQik7CisKK30gLy8g
bmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383713</attachid>
            <date>2019-11-16 19:29:58 -0800</date>
            <delta_ts>2019-11-18 11:18:10 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-202105c.patch</filename>
            <type>text/plain</type>
            <size>46857</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyNTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxOS0xMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBzdG9yZSBPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTA1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTY0MTA0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpb25zIHVzZWQgdG8gYmUgc3RvcmVkIGFzIGFuIGFy
cmF5IG9mIHVuaW9ucyBvZiBhbGwgb3B0aW9uIHR5cGVzLCB3aGVyZSB0aGUKKyAgICAgICAgc2l6
ZSBvZiB0aGUgYXJyYXkgaXMgYXJvdW5kIDM0OSBlbGVtZW50cy4gIFdlIGFsc28gbmVlZGVkIGEg
c2Vjb25kIGFycmF5IGZvciB0aGUKKyAgICAgICAgZGVmYXVsdCBvcHRpb24gdmFsdWUuICBXZSBu
b3cgc3RvcmUgZWFjaCBvcHRpb24gKGFuZCBpdHMgZGVmYXVsdCB2YWx1ZSkgYXMgYSB0eXBlCisg
ICAgICAgIHNwZWNpZmljIGZpZWxkIGluIGFuIE9wdGlvbnNTdG9yYWdlIHN0cnVjdC4gIFRoaXMg
cmVkdWNlcyB0aGUgc2l6ZSBvZiBzdG9yYWdlIGZvcgorICAgICAgICBPcHRpb25zIGZyb20gMTY3
NTIgdG8gMjE5MiBieXRlcy4gIFRoaXMsIGluIHR1cm4sIGFsbG93cyBKU0M6OkNvbmZpZyB0byBm
aXQgaW4gYQorICAgICAgICBzaW5nbGUgcGFnZS4KKyAKKyAgICAgICAgVGhlIHJlYXNvbiB3ZSBw
cmV2aW91c2x5IHN0b3JlZCBvcHRpb25zIGluIGFuIGFycmF5IG9mIHVuaW9ucyBpcyB0byBhbGxv
dyB1cyB0bworICAgICAgICByYW5kb21seSBhY2Nlc3MgZWFjaCBvcHRpb24gYnkgaXRzIGlkLiAg
V2Ugbm93IHN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIG9wdGlvbgorICAgICAgICBmaWVsZCBpbiB0
aGUgT3B0aW9uczo6c19jb25zdE1ldGFEYXRhIGFycmF5IChwcmV2aW91c2x5IGNhbGxlZCBzX29w
dGlvbnNJbmZvKS4KKyAgICAgICAgV2l0aCB0aGlzIG9mZnNldCwgd2UgY2FuIGNvbXB1dGUgdGhl
IGFkZHJlc3Mgb2YgdGhlIG9wdGlvbiB2YWx1ZSBmaWVsZCBpbgorICAgICAgICB0aGUgT3B0aW9u
c1N0b3JhZ2Ugc3RydWN0IGluIHRoZSBKU0M6OkNvbmZpZy4KKyAKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgYWxzbzoKKworICAgICAgICAxLiBSZW5hbWVkIE9wdGlvbnM6OnNfb3B0aW9uc0lu
Zm8gdG8gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhLgorCisgICAgICAgIDIuIFJlZmFjdG9yIHRo
ZSBPcHRpb24gY2xhc3MgaW50byB0aGUgT3B0aW9uUmVhZGVyOjpPcHRpb24gY2xhc3MuCisKKyAg
ICAgICAgICAgUHJldmlvdXNseSwgdGhlIE9wdGlvbiBjbGFzcyBwcm92aWRlZCBhbm90aGVyIHdh
eSB0byBhY2Nlc3Mgb3B0aW9uIHZhbHVlcywKKyAgICAgICAgICAgc3BlY2lmaWNhbGx5IHdoZW4g
d2UgbmVlZCB0byBhY2Nlc3MgdGhlbSBieSBpZC4gIEl0IGFsc28gcHJvdmlkZWQgYSBtZWFucyB0
bworICAgICAgICAgICBjaGFuZ2UgdGhhdCBvcHRpb24gdmFsdWUuICBIb3dldmVyLCBpdCBwcmFj
dGljZSwgd2UgY2FuIGRvIHdpdGhvdXQgdGhpcywgYW5kCisgICAgICAgICAgIHJlbW92ZSBhIGxv
dCBvZiB0aGUgY29kZS4gIFRoaXMgY2xhc3Mgbm93IGV4aXN0cyBhcyBPcHRpb25SZWFkZXI6Ok9w
dGlvbiB3aGljaAorICAgICAgICAgICBvbmx5IHByb3ZpZGVzIGEgbWVhbnMgdG8gcmVhZCBpbmZv
cm1hdGlvbiBhYm91dCBvcHRpb25zLCBidXQgbm90IGNoYW5nZSB0aGVtCisgICAgICAgICAgIFRo
ZSBvbmx5IGNsaWVudCBmb3IgdGhpcyBjbGFzcyBpcyB0aGUgZHVtcE9wdGlvbigpIGZ1bmN0aW9u
LgorCisgICAgICAgIDMuIFJlbW92ZWQgdGhlIE9wdGlvbkVudHJ5IGNsYXNzLiAgSXQgcHJldmlv
dXNseSBzZXJ2ZWQgMiBwdXJwb3NlOgorICAgICAgICAgICBhLiBEZWZpbmUgdGhlIG9wdGlvbiB0
eXBlcy4gIFRoZSB0eXBlcyBhcmUgbm93IGRlZmluZWQgaW4gT3B0aW9uc1N0b3JhZ2UuCisgICAg
ICAgICAgIGIuIERlZmluZSBhIHVuaW9uIGFic3RyYWN0IHR5cGUgbGFyZ2UgZW5vdWdoIHRvIHN0
b3JlIGFueSBvcHRpb24gdmFsdWUuCisgICAgICAgICAgICAgIFRoaXMgaXMgbm93IGV4cHJlc3Nl
ZCBhcyBhIHVuaW9uIG1lbWJlciBpbiBPcHRpb25SZWFkZXI6Ok9wdGlvbi4KKyAKKyAgICAgICAg
ICAgT3B0aW9uRW50cnkuaCBhbHNvIGRlZmluZXMgdGhlIE9wdGlvblJhbmdlIGNsYXNzLiAgT3B0
aW9uUmFuZ2UgaXMgbm93IG1vdmVkCisgICAgICAgICAgIHRvIE9wdGlvbnNMaXN0LmguCisgCisg
ICAgICAgIDQuIENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvcHRpb24gdmFsdWUg
cGFyc2UgZnVuY3Rpb25zIHRvIHJldHVybgorICAgICAgICAgICBPcHRpb25hbCB2YWx1ZXMgaW5z
dGVhZCBvZiB0YWtpbmcgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlLiAgVGhpcyBtYWtlcyB0aGUK
KyAgICAgICAgICAgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gcmVhZCBvbiB0aGUgY2xpZW50
IHNpZGUuCisKKyAgICAgICAgNS4gRml4ZWQgc2NhbGVKSVRQb2xpY3koKSB0byBub3QgcmVseSBv
biB0aGUgT3B0aW9uIGNsYXNzIChzZWUgMiBhYm92ZSksIGFuZCB1c2UKKyAgICAgICAgICAgdGhl
IGNhbm9uaWNhbCB3YXkgdG8gcmVhZCBhbmQgd3JpdGUgb3B0aW9uIHZhbHVlcyBpbnN0ZWFkIGku
ZS4gdmlhIHRoZQorICAgICAgICAgICBPcHRpb25zOjo8b3B0aW9uTmFtZT4oKSBhY2Nlc3NvcnMu
CisKKyAgICAgICAgNi4gRml4ZWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpIHRvIHJlbHkg
b24gdGhlIE9wdGlvbiBjbGFzcyAoc2VlIDIgYWJvdmUpLgorICAgICAgICAgICBXZSBjYW4gY29t
cGFyZSB0aGUgb3B0aW9uIGFnYWluc3QgaXRzIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlIGNhbm9u
aWNhbAorICAgICAgICAgICBhY2Nlc3NvcnMuCisKKyAgICAgICAgNy4gRml4ZWQgT3B0aW9uczo6
aW5pdGlhbGl6ZSgpIHRvIG9ubHkgY29tcHV0ZSB0aGUgZGVmYXVsdCBvcHRpb24gdmFsdWUgb25j
ZS4KKyAgICAgICAgICAgVGhlICJkZWZhdWx0IiB2YWx1ZSBtYXkgYWN0dWFsbHkgYmUgYSBmdW5j
dGlvbiBjYWxsLiAgVGhvdWdoIGN1cnJlbnQgdXNlcyBkb2VzCisgICAgICAgICAgIG5vdCBoYXZl
IHNpZGUgZWZmZWN0cyBpZiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0IGlzIGJlc3QgdG8gbm90
IGFzc3VtZSB0aGlzLgorCisgICAgICAgIDguIE1vdmVkIHRoZSBkZWZpbml0aW9uIG9mICBNQVhJ
TVVNX05VTUJFUl9PRl9GVExfQ09NUElMRVJfVEhSRUFEUyBhbmQKKyAgICAgICAgICAgZW5hYmxl
V2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgIGZyb20gT3B0aW9ucy5oIHRvIE9wdGlvbnNMaXN0Lmgg
YmVjYXVzZSB0aGV5IGFyZQorICAgICAgICAgICB1c2VkIHRoZXJlIGZpcnN0LgorCisgICAgICAg
IDkuIFJlZHVjZWQgdGhlIHNpemUgb2YgdGhlIEpTQzo6Q29uZmlnIHRvIDEgUGFnZVNpemUuCisg
CisgICAgICAgICogQVBJL2dsaWIvSlNDT3B0aW9ucy5jcHA6CisgICAgICAgIChqc2NPcHRpb25z
U2V0VmFsdWUpOgorICAgICAgICAoanNjT3B0aW9uc0dldFZhbHVlKToKKyAgICAgICAgKGpzY19v
cHRpb25zX2ZvcmVhY2gpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGlt
ZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbkVudHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgor
ICAgICAgICAoSlNDOjpzY2FsZUpJVFBvbGljeSk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURl
cGVuZGVudE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb24p
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0KToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNl
dE9wdGlvbldpdGhvdXRBbGlhcyk6CisgICAgICAgIChKU0M6OmludmVydEJvb2xPcHRpb25WYWx1
ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OnNldEFsaWFzZWRPcHRpb24pOgorICAgICAgICAo
SlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRl
cjo6T3B0aW9uOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVy
OjpPcHRpb246Om5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlv
bjo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjphdmFp
bGFiaWxpdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6aXNP
dmVycmlkZGVuIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T3B0aW9uUmVhZGVyOjpPcHRpb246Ok9w
dGlvbik6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBPcHRpb24pOgorICAgICAgICAoSlND
OjpPcHRpb25SZWFkZXI6Om9wdGlvbkZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6
ZGVmYXVsdEZvcik6CisgICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjppbml0VmFs
dWUpOgorICAgICAgICAoSlNDOjpPcHRpb25SZWFkZXI6Ok9wdGlvbjo6ZHVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjpkdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
T3B0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnMuaDoKKyAgICAgICAgKEpTQzo6T3B0aW9uOjpPcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPcHRpb246OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpuYW1l
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkZXNjcmlwdGlvbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9wdGlvbjo6dHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok9wdGlvbjo6YXZhaWxhYmlsaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T3B0aW9uOjppc092ZXJyaWRkZW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPcHRpb246OmRlZmF1bHRPcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpPcHRpb246OmJvb2xWYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OnVu
c2lnbmVkVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9uOjpkb3VibGVWYWwpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpPcHRpb246OmludDMyVmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6T3B0aW9uOjpvcHRpb25SYW5nZVZhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Ok9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T3B0aW9u
OjpnY0xvZ0xldmVsVmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0
Lmg6CisgICAgICAgIChKU0M6Ok9wdGlvblJhbmdlOjpvcGVyYXRvcj0gKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uUmFuZ2U6OnJhbmdlU3RyaW5nIGNvbnN0KToKKwogMjAxOS0xMS0xNSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBpbmRl
eC1tYXNraW5nIG9uIFNjb3BlZEFyZ3VtZW50cyBhbmQgcHV0IGl0IGluIElzb1N1YnNwYWNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTI1MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk0Myw3ICs5NDMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
CiAgICAgcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKICAgICBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oCiAgICAgcnVudGltZS9PcGVyYXRpb25zLmgKLSAgICBydW50aW1lL09w
dGlvbkVudHJ5LmgKICAgICBydW50aW1lL09wdGlvbnMuaAogICAgIHJ1bnRpbWUvT3B0aW9uc0xp
c3QuaAogICAgIHJ1bnRpbWUvUGFyc2VJbnQuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NPcHRpb25zLmNwcAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGdib29sZWFuIGpzY09wdGlvbnNTZXRWYWx1ZShjb25z
dAogewogI2RlZmluZSBTRVRfT1BUSU9OX1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVl
XywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25h
bWVfLCBvcHRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2YWx1ZVRvU2V0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIE9wdGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvU2V0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICghdmFsdWVGcm9t
R1ZhbHVlKHZhbHVlLCB2YWx1ZVRvU2V0KSkgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIE9wdGlvbnM6Om5hbWVfKCkgPSB2YWx1ZVRvU2V0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IGdib29sZWFuIGpzY09wdGlvbnNHZXRWYWx1ZShjb25zdAogewogI2RlZmluZSBHRVRfT1BUSU9O
X1ZBTFVFKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3Jp
cHRpb25fKSBcCiAgICAgaWYgKCFnX3N0cmNtcDAoI25hbWVfLCBvcHRpb24pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBlXyB2
YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAgICAgICAgICBcCisgICAgICAgIE9w
dGlvbnNTdG9yYWdlOjp0eXBlXyB2YWx1ZVRvR2V0ID0gT3B0aW9uczo6bmFtZV8oKTsgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHZhbHVlVG9HVmFsdWUodmFsdWVUb0dldCwgdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBUUlVFOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAt
NjE3LDcgKzYxNyw3IEBAIHZvaWQganNjX29wdGlvbnNfZm9yZWFjaChKU0NPcHRpb25zRnVuYyAK
ICNkZWZpbmUgVklTSVRfT1BUSU9OKHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxh
YmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6
YXZhaWxhYmlsaXR5XyA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6Ok5vcm1hbCBcCiAgICAgICAg
IHx8IE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6Om5hbWVfIyNJRCwgT3B0aW9uczo6QXZh
aWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgeyBcCi0gICAgICAgIE9wdGlvbkVudHJ5Ojp0eXBl
XyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IE9wdGlvbnNTdG9yYWdlOjp0eXBlXyBkZWZhdWx0VmFsdWUgeyB9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIGF1dG8gb3B0aW9uVHlwZSA9IGpzY09wdGlvbnNUeXBlKGRl
ZmF1bHRWYWx1ZSk7ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChmdW5jdGlvbiAoI25h
bWVfLCBvcHRpb25UeXBlLCBkZXNjcmlwdGlvbl8sIHVzZXJEYXRhKSkgICAgICBcCiAgICAgICAg
ICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUy
NTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NzgsNyArMTg3OCw2IEBACiAJCUZF
MzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8q
IFZNSW5zcGVjdG9yLmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJF
ODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTM4NDIzMjIzMjRE
NTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
Mzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURENDQ1IC8q
IE9wdGlvbnNMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgfTsKQEAg
LTUwOTgsNyArNTA5Nyw2IEBACiAJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25z
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNv
ZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91
cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0
Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1l
dGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM4NDIzMDIzMjRENTFB
MDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzEy
MzI0RDUxQjAwOURENDQ1IC8qIE9wdGlvbnNMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wdGlvbnNMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDIzLDcgKzc0MjEsNiBAQAogCQkJCUUzOUVFQUYyMjI4MTI0NEMw
MDg0NzRGNCAvKiBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICov
LAogCQkJCUY2OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJ
CQlGNjkyQTg3ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAotCQkJCUZFMzg0
MjMwMjMyNEQ1MUEwMDlERDQ0NSAvKiBPcHRpb25FbnRyeS5oICovLAogCQkJCTBGRTIyOEVBMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKIAkJCQkwRkUyMjhFQjE0MzZBQjIzMDAx
OTZDNDggLyogT3B0aW9ucy5oICovLAogCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBP
cHRpb25zTGlzdC5oICovLApAQCAtOTk1Miw3ICs5OTQ5LDYgQEAKIAkJCQkwRjJCREMyQzE1MUZE
RTkxMDBDRDg5MTAgLyogT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDQ0N0VBMTdB
MEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDQ4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlGRTM4NDIzMjIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uRW50cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzNTY5ODcyMjI4NDExODcwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0Nv
bmZpZy5oCShyZXZpc2lvbiAyNTI1MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIk9wdGlvbkVudHJ5LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQwLDcgKzM5LDcgQEAgY29u
c3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7CiBjb25zdGV4cHIgc2l6ZV90IFBhZ2VT
aXplID0gNCAqIEtCOwogI2VuZGlmCiAKLWNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJv
dGVjdCA9IDMyICogS0I7Citjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBQ
YWdlU2l6ZTsKIAogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKIHVzaW5nIEpJVFdyaXRl
U2VwYXJhdGVIZWFwc0Z1bmN0aW9uID0gdm9pZCAoKikob2ZmX3QsIGNvbnN0IHZvaWQqLCBzaXpl
X3QpOwpAQCAtODIsOCArODEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgICAgIGJvb2wg
dXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKLSAgICAgICAgICAgIE9wdGlvbkVu
dHJ5IG9wdGlvbnNbTnVtYmVyT2ZPcHRpb25zXTsKLSAgICAgICAgICAgIE9wdGlvbkVudHJ5IGRl
ZmF1bHRPcHRpb25zW051bWJlck9mT3B0aW9uc107CisgICAgICAgICAgICBPcHRpb25zU3RvcmFn
ZSBvcHRpb25zOwogICAgICAgICB9OwogICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6
ZVRvUHJvdGVjdF07CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uRW50cnkuaAkocmV2aXNpb24gMjUyNTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uRW50cnkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkdDTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgT3B0aW9uUmFuZ2UgewotcHJpdmF0ZToKLSAg
ICBlbnVtIFJhbmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52
ZXJ0ZWQgfTsKLXB1YmxpYzoKLSAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChjb25zdCBpbnQm
IHJocykKLSAgICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgotICAgICAgICBp
ZiAoIXJocykgewotICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7Ci0gICAgICAg
ICAgICBtX3JhbmdlU3RyaW5nID0gMDsKLSAgICAgICAgICAgIG1fbG93TGltaXQgPSAwOwotICAg
ICAgICAgICAgbV9oaWdoTGltaXQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICBib29sIGluaXQoY29uc3QgY2hhciopOwotICAgIGJvb2wgaXNJblJh
bmdlKHVuc2lnbmVkKTsKLSAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIChtX3N0YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251bGxSYW5nZVN0
cjsgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VTdHI7Ci0KLSAg
ICBSYW5nZVN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgY2hhciogbV9yYW5nZVN0cmluZzsKLSAg
ICB1bnNpZ25lZCBtX2xvd0xpbWl0OwotICAgIHVuc2lnbmVkIG1faGlnaExpbWl0OwotfTsKLQot
Ly8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKLXVuaW9uIE9wdGlvbkVudHJ5IHsK
LSAgICB1c2luZyBCb29sID0gYm9vbDsKLSAgICB1c2luZyBVbnNpZ25lZCA9IHVuc2lnbmVkOwot
ICAgIHVzaW5nIERvdWJsZSA9IGRvdWJsZTsKLSAgICB1c2luZyBJbnQzMiA9IGludDMyX3Q7Ci0g
ICAgdXNpbmcgU2l6ZSA9IHNpemVfdDsKLSAgICB1c2luZyBPcHRpb25SYW5nZSA9IEpTQzo6T3B0
aW9uUmFuZ2U7Ci0gICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3QgY2hhcio7Ci0gICAgdXNp
bmcgR0NMb2dMZXZlbCA9IEdDTG9nZ2luZzo6TGV2ZWw7Ci0KLSAgICBib29sIHZhbEJvb2w7Ci0g
ICAgdW5zaWduZWQgdmFsVW5zaWduZWQ7Ci0gICAgZG91YmxlIHZhbERvdWJsZTsKLSAgICBpbnQz
Ml90IHZhbEludDMyOwotICAgIHNpemVfdCB2YWxTaXplOwotICAgIE9wdGlvblJhbmdlIHZhbE9w
dGlvblJhbmdlOwotICAgIGNvbnN0IGNoYXIqIHZhbE9wdGlvblN0cmluZzsKLSAgICBHQ0xvZ2dp
bmc6OkxldmVsIHZhbEdDTG9nTGV2ZWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNTI1
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC01Niw4MCArNTcsOTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgYm9vbCYgdmFsdWUpCi17Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ5ZXMiKSB8fCAhc3RyY21wKHN0
cmluZywgIjEiKSkgewotICAgICAgICB2YWx1ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAi
ZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8
ICFzdHJjbXAoc3RyaW5nLCAiMCIpKSB7Ci0gICAgICAgIHZhbHVlID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorT3B0aW9uYWw8VD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKTsKIAotc3RhdGlj
IGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBpbnQzMl90JiB2YWx1ZSkKK3RlbXBsYXRl
PD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpCb29sPiBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKKyAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJ1ZSIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInllcyIpIHx8ICFzdHJjbXAoc3Ry
aW5nLCAiMSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcsICJubyIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCit0ZW1wbGF0ZTw+CitP
cHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykK
IHsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxOworICAgIGlu
dDMyX3QgdmFsdWU7CisgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBib29sIFVOVVNFRF9GVU5DVElPTiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxvbmcmIHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlbHUiLCAmdmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlOworICAgIGlmIChzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBVTlVTRURfRlVOQ1RJT04g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKQorI2lm
IENQVShBRERSRVNTNjQpCit0ZW1wbGF0ZTw+CitPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6
ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5n
LCAiJWxsdSIsICZ2YWx1ZSk7CisgICAgc2l6ZV90IHZhbHVlOworICAgIGlmIChzc2NhbmYoc3Ry
aW5nLCAiJXp1IiwgJnZhbHVlKSA9PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KKyNlbmRpZiAvLyBDUFUoQUREUkVTUzY0KQogCi1zdGF0aWMg
Ym9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGRvdWJsZSYgdmFsdWUpCit0ZW1wbGF0ZTw+
CitPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6RG91YmxlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlbGYiLCAmdmFsdWUpID09IDE7Cisg
ICAgZG91YmxlIHZhbHVlOworICAgIGlmIChzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9
PSAxKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
IAotc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBPcHRpb25SYW5nZSYgdmFs
dWUpCit0ZW1wbGF0ZTw+CitPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6T3B0aW9uUmFuZ2U+IHBh
cnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4gdmFsdWUuaW5pdChzdHJpbmcp
OworICAgIE9wdGlvblJhbmdlIHJhbmdlOworICAgIGlmIChyYW5nZS5pbml0KHN0cmluZykpCisg
ICAgICAgIHJldHVybiByYW5nZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0
aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGNvbnN0IGNoYXIqJiB2YWx1ZSkKK3Rl
bXBsYXRlPD4KK09wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmc+IHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZykKIHsKLSAgICBpZiAoIXN0cmxlbihzdHJpbmcpKSB7Ci0gICAgICAg
IHZhbHVlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGNvbnN0
IGNoYXIqIHZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAoIXN0cmxlbihzdHJpbmcpKQorICAgICAg
ICByZXR1cm4gdmFsdWU7CiAKICAgICAvLyBGSVhNRSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY5
MDU3PjogVGhpcyBjb3VsZCBsZWFrIGlmIHRoaXMgb3B0aW9uIGlzIHNldCBtb3JlIHRoYW4gb25j
ZS4KICAgICAvLyBHaXZlbiB0aGF0IE9wdGlvbnMgYXJlIHR5cGljYWxseSB1c2VkIGZvciB0ZXN0
aW5nLCB0aGlzIGlzbid0IGNvbnNpZGVyZWQgdG8gYmUgYSBwcm9ibGVtLgogICAgIHZhbHVlID0g
V1RGOjpmYXN0U3RyRHVwKHN0cmluZyk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHZh
bHVlOwogfQogCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIEdDTG9nZ2lu
Zzo6TGV2ZWwmIHZhbHVlKQordGVtcGxhdGU8PgorT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkdD
TG9nTGV2ZWw+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKLSAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm9uZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHN0cmluZywgIm5vIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nLCAiZmFsc2UiKSB8fCAhc3RyY21wKHN0cmluZywgIjAiKSkgewotICAgICAgICB2
YWx1ZSA9IEdDTG9nZ2luZzo6Tm9uZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJub25lIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm8iKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJmYWxzZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIp
KQorICAgICAgICByZXR1cm4gR0NMb2dnaW5nOjpOb25lOwogCi0gICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImJhc2ljIikgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLCAieWVzIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc3RyaW5nLCAidHJ1ZSIpIHx8ICFzdHJjbXAoc3RyaW5nLCAiMSIpKSB7Ci0gICAgICAgIHZh
bHVlID0gR0NMb2dnaW5nOjpCYXNpYzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJiYXNpYyIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInllcyIpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRydWUiKSB8fCAhc3RyY21wKHN0cmluZywgIjEi
KSkKKyAgICAgICAgcmV0dXJuIEdDTG9nZ2luZzo6QmFzaWM7CiAKLSAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidmVyYm9zZSIpIHx8ICFzdHJjbXAoc3RyaW5n
LCAiMiIpKSB7Ci0gICAgICAgIHZhbHVlID0gR0NMb2dnaW5nOjpWZXJib3NlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZywgInZlcmJvc2UiKSB8fCAhc3RyY21wKHN0cmluZywgIjIiKSkKKyAgICAgICAgcmV0
dXJuIEdDTG9nZ2luZzo6VmVyYm9zZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogfQogCiBib29sIE9wdGlvbnM6OmlzQXZhaWxhYmxlKE9wdGlvbnM6OklE
IGlkLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQpAQCAtMTY4LDggKzE4MSwx
MyBAQCBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpCiAgICAgaWYgKCFz
dHJpbmdWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChhdmFpbGFi
bGUgJiYgcGFyc2Uoc3RyaW5nVmFsdWUsIHZhcmlhYmxlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKGF2YWlsYWJsZSkgeworICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZSA9IHBhcnNl
PFQ+KHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICB2YXJp
YWJsZSA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KICAgICAKICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBw
YXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwogICAgIHJldHVybiBmYWxzZTsKQEAg
LTI4Myw5ICszMDEsOSBAQCB2b2lkIE9wdGlvblJhbmdlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
CiB9CiAKIC8vIFJlYWxpemUgdGhlIG5hbWVzIGZvciBlYWNoIG9mIHRoZSBvcHRpb25zOgotY29u
c3QgT3B0aW9uczo6RW50cnlJbmZvIE9wdGlvbnM6OnNfb3B0aW9uc0luZm9bT3B0aW9uczo6bnVt
YmVyT2ZPcHRpb25zXSA9IHsKK2NvbnN0IE9wdGlvbnM6OkNvbnN0TWV0YURhdGEgT3B0aW9uczo6
c19jb25zdE1ldGFEYXRhW051bWJlck9mT3B0aW9uc10gPSB7CiAjZGVmaW5lIEZJTExfT1BUSU9O
X0lORk8odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlw
dGlvbl8pIFwKLSAgICB7ICNuYW1lXywgZGVzY3JpcHRpb25fLCBPcHRpb25zOjpUeXBlOjp0eXBl
XywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfIH0sCisgICAgeyAjbmFtZV8sIGRlc2NyaXB0
aW9uXywgT3B0aW9uczo6VHlwZTo6dHlwZV8sIEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5Xywg
b2Zmc2V0b2YoT3B0aW9uc1N0b3JhZ2UsIG5hbWVfKSwgb2Zmc2V0b2YoT3B0aW9uc1N0b3JhZ2Us
IG5hbWVfIyNEZWZhdWx0KSB9LAogICAgIEZPUl9FQUNIX0pTQ19PUFRJT04oRklMTF9PUFRJT05f
SU5GTykKICN1bmRlZiBGSUxMX09QVElPTl9JTkZPCiB9OwpAQCAtMjk4LDI4ICszMTYsMTggQEAg
c3RhdGljIHZvaWQgc2NhbGVKSVRQb2xpY3koKQogICAgIGVsc2UgaWYgKHNjYWxlRmFjdG9yIDwg
MC4wKQogICAgICAgICBzY2FsZUZhY3RvciA9IDAuMDsKIAotICAgIHN0cnVjdCBPcHRpb25Ub1Nj
YWxlIHsKLSAgICAgICAgT3B0aW9uczo6SUQgaWQ7Ci0gICAgICAgIGludDMyX3QgbWluVmFsOwor
ICAgIGF1dG8gc2NhbGVPcHRpb24gPSBbJl0gKGludDMyX3QmIG9wdGlvblZhbHVlLCBpbnQzMl90
IG1pblZhbHVlKSB7CisgICAgICAgIG9wdGlvblZhbHVlICo9IHNjYWxlRmFjdG9yOworICAgICAg
ICBvcHRpb25WYWx1ZSA9IHN0ZDo6bWF4KG9wdGlvblZhbHVlLCBtaW5WYWx1ZSk7CiAgICAgfTsK
IAotICAgIHN0YXRpYyBjb25zdCBPcHRpb25Ub1NjYWxlIG9wdGlvbnNUb1NjYWxlW10gPSB7Ci0g
ICAgICAgIHsgT3B0aW9uczo6dGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXBJRCwgMCB9LAotICAg
ICAgICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb25JRCwgMCB9LAotICAgICAgICB7IE9w
dGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXBJRCwgMSB9LAotICAgICAgICB7
IE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwSUQsIDEgfSwKLSAg
ICAgICAgeyBPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb25JRCwgMSB9LAotICAgICAg
ICB7IE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbklELCAyIH0sCi0gICAgICAg
IHsgT3B0aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcElELCAyIH0KLSAg
ICB9OwotCi0gICAgY29uc3QgaW50IG51bWJlck9mT3B0aW9uc1RvU2NhbGUgPSBzaXplb2Yob3B0
aW9uc1RvU2NhbGUpIC8gc2l6ZW9mKE9wdGlvblRvU2NhbGUpOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtYmVyT2ZPcHRpb25zVG9TY2FsZTsgaSsrKSB7Ci0gICAgICAgIE9wdGlvbiBvcHRp
b24ob3B0aW9uc1RvU2NhbGVbaV0uaWQpOwotICAgICAgICBBU1NFUlQob3B0aW9uLnR5cGUoKSA9
PSBPcHRpb25zOjpUeXBlOjpJbnQzMik7Ci0gICAgICAgIG9wdGlvbi5pbnQzMlZhbCgpICo9IHNj
YWxlRmFjdG9yOwotICAgICAgICBvcHRpb24uaW50MzJWYWwoKSA9IHN0ZDo6bWF4KG9wdGlvbi5p
bnQzMlZhbCgpLCBvcHRpb25zVG9TY2FsZVtpXS5taW5WYWwpOwotICAgIH0KKyAgICBzY2FsZU9w
dGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcCgpLCAwKTsKKyAgICBzY2Fs
ZU9wdGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCksIDApOworICAgIHNjYWxlT3B0
aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSwgMSk7CisgICAg
c2NhbGVPcHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAo
KSwgMSk7CisgICAgc2NhbGVPcHRpb24oT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29u
KCksIDEpOworICAgIHNjYWxlT3B0aW9uKE9wdGlvbnM6OnRocmVzaG9sZEZvckZUTE9wdGltaXpl
U29vbigpLCAyKTsKKyAgICBzY2FsZU9wdGlvbihPcHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRp
bWl6ZUFmdGVyV2FybVVwKCksIDIpOwogfQogCiBzdGF0aWMgdm9pZCBvdmVycmlkZURlZmF1bHRz
KCkKQEAgLTQ0Niw3ICs0NTQsNyBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRp
b25zKCkKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKQogICAgICAgICBPcHRp
b25zOjpjb2xsZWN0Q29udGludW91c2x5KCkgPSBmYWxzZTsKIAotICAgIGlmIChPcHRpb24oT3B0
aW9uczo6aml0UG9saWN5U2NhbGVJRCkuaXNPdmVycmlkZGVuKCkpCisgICAgaWYgKE9wdGlvbnM6
OmppdFBvbGljeVNjYWxlKCkgIT0gT3B0aW9uczo6aml0UG9saWN5U2NhbGVEZWZhdWx0KCkpCiAg
ICAgICAgIHNjYWxlSklUUG9saWN5KCk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRWFn
ZXJDb21waWxhdGlvbigpKSB7CkBAIC01MTYsNiArNTI0LDE4IEBAIHN0YXRpYyB2b2lkIHJlY29t
cHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgICAgICBPcHRpb25zOjpyYW5kb21JbnRlZ3JpdHlB
dWRpdFJhdGUoKSA9IDEuMDsKIH0KIAoraW5saW5lIHZvaWQqIE9wdGlvbnM6OmFkZHJlc3NPZk9w
dGlvbihPcHRpb25zOjpJRCBpZCkKK3sKKyAgICBhdXRvIG9mZnNldCA9IE9wdGlvbnM6OnNfY29u
c3RNZXRhRGF0YVtpZF0ub2Zmc2V0T2ZPcHRpb247CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZnX2pzY0NvbmZpZy5vcHRpb25zKSArIG9mZnNldDsKK30KKworaW5saW5l
IHZvaWQqIE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbkRlZmF1bHQoT3B0aW9uczo6SUQgaWQpCit7
CisgICAgYXV0byBvZmZzZXQgPSBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbaWRdLm9mZnNldE9m
T3B0aW9uRGVmYXVsdDsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmdf
anNjQ29uZmlnLm9wdGlvbnMpICsgb2Zmc2V0OworfQorCiB2b2lkIE9wdGlvbnM6OmluaXRpYWxp
emUoKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT3B0aW9uc09uY2VG
bGFnOwpAQCAtNTIzLDEzICs1NDMsMjMgQEAgdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKICAg
ICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgaW5pdGlhbGl6ZU9wdGlvbnNPbmNlRmxhZywKICAg
ICAgICAgW10geworICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgb3B0aW9ucyBhZGRy
ZXNzIGNvbXB1dGF0aW9uIGlzIHdvcmtpbmcuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChP
cHRpb25zOjphZGRyZXNzT2ZPcHRpb24odXNlS2VyblRDU01JRCkgPT0gICZPcHRpb25zOjp1c2VL
ZXJuVENTTSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFkZHJlc3NP
Zk9wdGlvbkRlZmF1bHQodXNlS2VyblRDU01JRCkgPT0gICZPcHRpb25zOjp1c2VLZXJuVENTTURl
ZmF1bHQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjphZGRyZXNzT2ZP
cHRpb24oZ2NNYXhIZWFwU2l6ZUlEKSA9PSAgJk9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjphZGRyZXNzT2ZPcHRpb25EZWZhdWx0
KGdjTWF4SGVhcFNpemVJRCkgPT0gICZPcHRpb25zOjpnY01heEhlYXBTaXplRGVmYXVsdCgpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbihmb3Jj
ZU9TUkV4aXRUb0xMSW50SUQpID09ICAmT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbkRlZmF1
bHQoZm9yY2VPU1JFeGl0VG9MTEludElEKSA9PSAgJk9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJ
bnREZWZhdWx0KCkpOworCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgQ29uZmlnOjplbmFi
bGVSZXN0cmljdGVkT3B0aW9ucygpOwogI2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXpl
IGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKLSNkZWZpbmUg
SU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBk
ZXNjcmlwdGlvbl8pIFwKLSAgICAgICAgICAgIG5hbWVfKCkgPSBkZWZhdWx0VmFsdWVfOyBcCi0g
ICAgICAgICAgICBuYW1lXyMjRGVmYXVsdCgpID0gZGVmYXVsdFZhbHVlXzsKKyNkZWZpbmUgSU5J
VF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNj
cmlwdGlvbl8pIHsgXAorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVf
OyBcCisgICAgICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyBcCisgICAgICAgICAgICAgICAg
bmFtZV8jI0RlZmF1bHQoKSA9IHZhbHVlOyBcCisgICAgICAgICAgICB9CiAgICAgICAgICAgICBG
T1JfRUFDSF9KU0NfT1BUSU9OKElOSVRfT1BUSU9OKQogI3VuZGVmIElOSVRfT1BUSU9OCiAKQEAg
LTczMiw3ICs3NjIsNyBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25z
CiAKICAgICBjb25zdCBjaGFyKiB2YWx1ZVN0ciA9IGVxdWFsU3RyICsgMTsKIAotICAgIC8vIEZv
ciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNpZnkgYXJnIGlzIGEgbWF0Y2guIElmIHNv
LCBzZXQgdGhlIGFyZworICAgIC8vIEZvciBlYWNoIG9wdGlvbiwgY2hlY2sgaWYgdGhlIHNwZWNp
ZmllZCBhcmcgaXMgYSBtYXRjaC4gSWYgc28sIHNldCB0aGUgYXJnCiAgICAgLy8gaWYgdGhlIHZh
bHVlIG1ha2VzIHNlbnNlLiBPdGhlcndpc2UsIG1vdmUgb24gdG8gY2hlY2tpbmcgdGhlIG5leHQg
b3B0aW9uLgogI2RlZmluZSBTRVRfT1BUSU9OX0lGX01BVENIKHR5cGVfLCBuYW1lXywgZGVmYXVs
dFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgaWYgKHN0cmxlbigj
bmFtZV8pID09IHN0YXRpY19jYXN0PHNpemVfdD4oZXF1YWxTdHIgLSBhcmcpICAgICAgXApAQCAt
NzQwLDExICs3NzAsMTAgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29u
cwogICAgICAgICBpZiAoQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfICE9IEF2YWlsYWJpbGl0
eTo6Tm9ybWFsICAgICBcCiAgICAgICAgICAgICAmJiAhaXNBdmFpbGFibGUobmFtZV8jI0lELCBB
dmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pKSBcCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBPcHRp
b25FbnRyeTo6dHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgdmFsdWUgPSAoZGVmYXVsdFZhbHVlXyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3RyLCB2YWx1
ZSk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3VjY2VzcykgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVf
KCkgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjp0eXBlXz4gdmFsdWU7ICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB2YWx1ZSA9IHBhcnNlPE9wdGlvbnNTdG9yYWdlOjp0eXBlXz4odmFs
dWVTdHIpOyAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHZhbHVlKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBuYW1lXygpID0g
dmFsdWUudmFsdWUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAg
ICAgY29ycmVjdE9wdGlvbnMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzU4LDEzICs3ODcsMTIgQEAgYm9vbCBP
cHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29ucwogICAgIHJldHVybiBmYWxzZTsgLy8g
Tm8gb3B0aW9uIG1hdGNoZWQuCiB9CiAKLXN0YXRpYyBib29sIGludmVydEJvb2xPcHRpb25WYWx1
ZShjb25zdCBjaGFyKiB2YWx1ZVN0ciwgY29uc3QgY2hhciomIGludmVydGVkVmFsdWVTdHIpCitz
dGF0aWMgY29uc3QgY2hhciogaW52ZXJ0Qm9vbE9wdGlvblZhbHVlKGNvbnN0IGNoYXIqIHZhbHVl
U3RyKQogewotICAgIGJvb2wgYm9vbFZhbHVlOwotICAgIGlmICghcGFyc2UodmFsdWVTdHIsIGJv
b2xWYWx1ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnZlcnRlZFZhbHVlU3RyID0g
Ym9vbFZhbHVlID8gImZhbHNlIiA6ICJ0cnVlIjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBPcHRp
b25hbDxPcHRpb25zU3RvcmFnZTo6Qm9vbD4gdmFsdWUgPSBwYXJzZTxPcHRpb25zU3RvcmFnZTo6
Qm9vbD4odmFsdWVTdHIpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpID8gImZhbHNlIiA6ICJ0cnVlIjsKIH0KIAogCkBA
IC03ODgsOCArODE2LDggQEAgYm9vbCBPcHRpb25zOjpzZXRBbGlhc2VkT3B0aW9uKGNvbnN0IGNo
YQogICAgICAgICAgICAgdW5hbGlhc2VkT3B0aW9uID0gdW5hbGlhc2VkT3B0aW9uICsgZXF1YWxT
dHI7ICAgICAgICAgICAgICAgXAogICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgQVNTRVJU
KGVxdWl2YWxlbmNlID09IEludmVydGVkT3B0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICAgICAgY29uc3QgY2hhciogaW52ZXJ0ZWRWYWx1ZVN0ciA9IG51bGxwdHI7ICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaWYgKCFpbnZlcnRCb29sT3B0aW9uVmFsdWUo
ZXF1YWxTdHIgKyAxLCBpbnZlcnRlZFZhbHVlU3RyKSkgXAorICAgICAgICAgICAgYXV0byogaW52
ZXJ0ZWRWYWx1ZVN0ciA9IGludmVydEJvb2xPcHRpb25WYWx1ZShlcXVhbFN0ciArIDEpOyBcCisg
ICAgICAgICAgICBpZiAoIWludmVydGVkVmFsdWVTdHIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICB1bmFsaWFzZWRP
cHRpb24gPSB1bmFsaWFzZWRPcHRpb24gKyAiPSIgKyBpbnZlcnRlZFZhbHVlU3RyOyBcCiAgICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC04MjEsNyArODQ5LDcgQEAgdm9pZCBPcHRpb25zOjpkdW1wQWxsT3B0
aW9ucyhTdHJpbmdCdWlsZAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAK
LSAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVyT2ZPcHRpb25zOyBpZCsrKSB7CisgICAg
Zm9yIChzaXplX3QgaWQgPSAwOyBpZCA8IE51bWJlck9mT3B0aW9uczsgaWQrKykgewogICAgICAg
ICBpZiAoc2VwYXJhdG9yICYmIGlkKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yKTsKICAgICAgICAgZHVtcE9wdGlvbihidWlsZGVyLCBsZXZlbCwgc3RhdGljX2Nhc3Q8SUQ+
KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIsIGR1bXBEZWZhdWx0c09wdGlvbik7CkBA
IC04NDAsMTMgKzg2OCw1NSBAQCB2b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKEZJTEUqIHN0
cmVhCiAgICAgZnByaW50ZihzdHJlYW0sICIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KIAorc3RydWN0IE9wdGlvblJlYWRlciB7CisgICAgY2xhc3MgT3B0aW9uIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgZHVtcChTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisK
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0OworICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgICAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhW21faWRdLm5hbWU7IH0KKyAgICAgICAg
Y29uc3QgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX2NvbnN0
TWV0YURhdGFbbV9pZF0uZGVzY3JpcHRpb247IH0KKyAgICAgICAgT3B0aW9uczo6VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19jb25zdE1ldGFEYXRhW21faWRdLnR5cGU7IH0K
KyAgICAgICAgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSgpIGNvbnN0IHsgcmV0
dXJuIE9wdGlvbnM6OnNfY29uc3RNZXRhRGF0YVttX2lkXS5hdmFpbGFiaWxpdHk7IH0KKyAgICAg
ICAgYm9vbCBpc092ZXJyaWRkZW4oKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBPcHRpb25SZWFk
ZXI6OmRlZmF1bHRGb3IobV9pZCk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE9wdGlvbihP
cHRpb25zOjpJRCBpZCwgdm9pZCogYWRkcmVzc09mVmFsdWUpCisgICAgICAgICAgICA6IG1faWQo
aWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRWYWx1ZShhZGRyZXNzT2ZWYWx1ZSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGluaXRWYWx1ZSh2b2lkKiBhZGRyZXNzT2ZWYWx1ZSk7
CisKKyAgICAgICAgT3B0aW9uczo6SUQgbV9pZDsKKyAgICAgICAgdW5pb24geworICAgICAgICAg
ICAgYm9vbCBtX2Jvb2w7CisgICAgICAgICAgICB1bnNpZ25lZCBtX3Vuc2lnbmVkOworICAgICAg
ICAgICAgZG91YmxlIG1fZG91YmxlOworICAgICAgICAgICAgaW50MzJfdCBtX2ludDMyOworICAg
ICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICAgICAgICAgIE9wdGlvblJhbmdlIG1fb3B0aW9u
UmFuZ2U7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBtX29wdGlvblN0cmluZzsKKyAgICAgICAg
ICAgIEdDTG9nZ2luZzo6TGV2ZWwgbV9nY0xvZ0xldmVsOworICAgICAgICB9OworCisgICAgICAg
IGZyaWVuZCBzdHJ1Y3QgT3B0aW9uUmVhZGVyOworICAgIH07CisKKyAgICBzdGF0aWMgY29uc3Qg
T3B0aW9uIG9wdGlvbkZvcihPcHRpb25zOjpJRCk7CisgICAgc3RhdGljIGNvbnN0IE9wdGlvbiBk
ZWZhdWx0Rm9yKE9wdGlvbnM6OklEKTsKK307CisKIHZvaWQgT3B0aW9uczo6ZHVtcE9wdGlvbihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBEdW1wTGV2ZWwgbGV2ZWwsIE9wdGlvbnM6OklEIGlkLAog
ICAgIGNvbnN0IGNoYXIqIGhlYWRlciwgY29uc3QgY2hhciogZm9vdGVyLCBEdW1wRGVmYXVsdHNP
cHRpb24gZHVtcERlZmF1bHRzT3B0aW9uKQogewotICAgIGlmIChpZCA+PSBudW1iZXJPZk9wdGlv
bnMpCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaWQpID49IE51bWJlck9mT3B0aW9ucykK
ICAgICAgICAgcmV0dXJuOyAvLyBJbGxlZ2FsIG9wdGlvbi4KIAotICAgIE9wdGlvbiBvcHRpb24o
aWQpOworICAgIGF1dG8gb3B0aW9uID0gT3B0aW9uUmVhZGVyOjpvcHRpb25Gb3IoaWQpOwogICAg
IEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkgPSBvcHRpb24uYXZhaWxhYmlsaXR5KCk7CiAgICAg
aWYgKGF2YWlsYWJpbGl0eSAhPSBBdmFpbGFiaWxpdHk6Ok5vcm1hbCAmJiAhaXNBdmFpbGFibGUo
aWQsIGF2YWlsYWJpbGl0eSkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2Myw4ICs5MzMsOSBAQCB2
b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYgCiAgICAgb3B0aW9uLmR1bXAo
YnVpbGRlcik7CiAKICAgICBpZiAod2FzT3ZlcnJpZGRlbiAmJiAoZHVtcERlZmF1bHRzT3B0aW9u
ID09IER1bXBEZWZhdWx0cykpIHsKKyAgICAgICAgYXV0byBkZWZhdWx0T3B0aW9uID0gT3B0aW9u
UmVhZGVyOjpkZWZhdWx0Rm9yKGlkKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
KGRlZmF1bHQ6ICIpOwotICAgICAgICBvcHRpb24uZGVmYXVsdE9wdGlvbigpLmR1bXAoYnVpbGRl
cik7CisgICAgICAgIGRlZmF1bHRPcHRpb24uZHVtcChidWlsZGVyKTsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIik7CiAgICAgfQogCkBAIC04ODUsMjkgKzk1Niw3MCBAQCB2b2lk
IE9wdGlvbnM6OmVuc3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIENSQVNIKCk7CiB9
CiAKLXZvaWQgT3B0aW9uOjpkdW1wKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0Citjb25z
dCBPcHRpb25SZWFkZXI6Ok9wdGlvbiBPcHRpb25SZWFkZXI6Om9wdGlvbkZvcihPcHRpb25zOjpJ
RCBpZCkKK3sKKyAgICByZXR1cm4gT3B0aW9uKGlkLCBPcHRpb25zOjphZGRyZXNzT2ZPcHRpb24o
aWQpKTsKK30KKworY29uc3QgT3B0aW9uUmVhZGVyOjpPcHRpb24gT3B0aW9uUmVhZGVyOjpkZWZh
dWx0Rm9yKE9wdGlvbnM6OklEIGlkKQoreworICAgIHJldHVybiBPcHRpb24oaWQsIE9wdGlvbnM6
OmFkZHJlc3NPZk9wdGlvbkRlZmF1bHQoaWQpKTsKK30KKwordm9pZCBPcHRpb25SZWFkZXI6Ok9w
dGlvbjo6aW5pdFZhbHVlKHZvaWQqIGFkZHJlc3NPZlZhbHVlKQoreworICAgIE9wdGlvbnM6OlR5
cGUgdHlwZSA9IE9wdGlvbnM6OnNfY29uc3RNZXRhRGF0YVttX2lkXS50eXBlOworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9vbDoKKyAgICAgICAgbWVtY3B5
KCZtX2Jvb2wsIGFkZHJlc3NPZlZhbHVlLCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6OkJvb2wpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKKyAgICAg
ICAgbWVtY3B5KCZtX3Vuc2lnbmVkLCBhZGRyZXNzT2ZWYWx1ZSwgc2l6ZW9mKE9wdGlvbnNTdG9y
YWdlOjpVbnNpZ25lZCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6
OkRvdWJsZToKKyAgICAgICAgbWVtY3B5KCZtX2RvdWJsZSwgYWRkcmVzc09mVmFsdWUsIHNpemVv
ZihPcHRpb25zU3RvcmFnZTo6RG91YmxlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3B0
aW9uczo6VHlwZTo6SW50MzI6CisgICAgICAgIG1lbWNweSgmbV9pbnQzMiwgYWRkcmVzc09mVmFs
dWUsIHNpemVvZihPcHRpb25zU3RvcmFnZTo6SW50MzIpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBPcHRpb25zOjpUeXBlOjpTaXplOgorICAgICAgICBtZW1jcHkoJm1fc2l6ZSwgYWRkcmVz
c09mVmFsdWUsIHNpemVvZihPcHRpb25zU3RvcmFnZTo6U2l6ZSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgorICAgICAgICBtZW1jcHkoJm1f
b3B0aW9uUmFuZ2UsIGFkZHJlc3NPZlZhbHVlLCBzaXplb2YoT3B0aW9uc1N0b3JhZ2U6Ok9wdGlv
blJhbmdlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9u
U3RyaW5nOgorICAgICAgICBtZW1jcHkoJm1fb3B0aW9uU3RyaW5nLCBhZGRyZXNzT2ZWYWx1ZSwg
c2l6ZW9mKE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVsOgorICAgICAgICBtZW1jcHkoJm1fZ2NM
b2dMZXZlbCwgYWRkcmVzc09mVmFsdWUsIHNpemVvZihPcHRpb25zU3RvcmFnZTo6R0NMb2dMZXZl
bCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgT3B0aW9uUmVhZGVyOjpPcHRp
b246OmR1bXAoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5
cGUoKSkgewogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6Qm9vbDoKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9lbnRyeS52YWxCb29sID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fYm9vbCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE9wdGlvbnM6OlR5cGU6OlVuc2lnbmVkOgotICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2VudHJ5LnZhbFVuc2lnbmVkKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
bV91bnNpZ25lZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6U2l6
ZToKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyeS52YWxTaXplKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9zaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBPcHRpb25zOjpUeXBlOjpEb3VibGU6Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIobV9lbnRyeS52YWxEb3VibGUpOworICAgICAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKG1fZG91YmxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBP
cHRpb25zOjpUeXBlOjpJbnQzMjoKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRy
eS52YWxJbnQzMik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1faW50MzIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblJhbmdlOgotICAgICAg
ICBidWlsZGVyLmFwcGVuZChtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChtX29wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0cmluZzogewotICAg
ICAgICBjb25zdCBjaGFyKiBvcHRpb24gPSBtX2VudHJ5LnZhbE9wdGlvblN0cmluZzsKKyAgICAg
ICAgY29uc3QgY2hhciogb3B0aW9uID0gbV9vcHRpb25TdHJpbmc7CiAgICAgICAgIGlmICghb3B0
aW9uKQogICAgICAgICAgICAgb3B0aW9uID0gIiI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCci
Jyk7CkBAIC05MTYsMzIgKzEwMjgsMzIgQEAgdm9pZCBPcHRpb246OmR1bXAoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlcgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBPcHRpb25zOjpUeXBl
OjpHQ0xvZ0xldmVsOiB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdDTG9nZ2luZzo6bGV2ZWxB
c1N0cmluZyhtX2VudHJ5LnZhbEdDTG9nTGV2ZWwpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
R0NMb2dnaW5nOjpsZXZlbEFzU3RyaW5nKG1fZ2NMb2dMZXZlbCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgfQogfQogCi1ib29sIE9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24m
IG90aGVyKSBjb25zdAorYm9vbCBPcHRpb25SZWFkZXI6Ok9wdGlvbjo6b3BlcmF0b3I9PShjb25z
dCBPcHRpb24mIG90aGVyKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2Fz
ZSBPcHRpb25zOjpUeXBlOjpCb29sOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxCb29sID09
IG90aGVyLm1fZW50cnkudmFsQm9vbDsKKyAgICAgICAgcmV0dXJuIG1fYm9vbCA9PSBvdGhlci5t
X2Jvb2w7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpVbnNpZ25lZDoKLSAgICAgICAgcmV0dXJu
IG1fZW50cnkudmFsVW5zaWduZWQgPT0gb3RoZXIubV9lbnRyeS52YWxVbnNpZ25lZDsKKyAgICAg
ICAgcmV0dXJuIG1fdW5zaWduZWQgPT0gb3RoZXIubV91bnNpZ25lZDsKICAgICBjYXNlIE9wdGlv
bnM6OlR5cGU6OlNpemU6Ci0gICAgICAgIHJldHVybiBtX2VudHJ5LnZhbFNpemUgPT0gb3RoZXIu
bV9lbnRyeS52YWxTaXplOworICAgICAgICByZXR1cm4gbV9zaXplID09IG90aGVyLm1fc2l6ZTsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6OkRvdWJsZToKLSAgICAgICAgcmV0dXJuIChtX2VudHJ5
LnZhbERvdWJsZSA9PSBvdGhlci5tX2VudHJ5LnZhbERvdWJsZSkgfHwgKHN0ZDo6aXNuYW4obV9l
bnRyeS52YWxEb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV9lbnRyeS52YWxEb3VibGUpKTsK
KyAgICAgICAgcmV0dXJuIChtX2RvdWJsZSA9PSBvdGhlci5tX2RvdWJsZSkgfHwgKHN0ZDo6aXNu
YW4obV9kb3VibGUpICYmIHN0ZDo6aXNuYW4ob3RoZXIubV9kb3VibGUpKTsKICAgICBjYXNlIE9w
dGlvbnM6OlR5cGU6OkludDMyOgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxJbnQzMiA9PSBv
dGhlci5tX2VudHJ5LnZhbEludDMyOworICAgICAgICByZXR1cm4gbV9pbnQzMiA9PSBvdGhlci5t
X2ludDMyOwogICAgIGNhc2UgT3B0aW9uczo6VHlwZTo6T3B0aW9uUmFuZ2U6Ci0gICAgICAgIHJl
dHVybiBtX2VudHJ5LnZhbE9wdGlvblJhbmdlLnJhbmdlU3RyaW5nKCkgPT0gb3RoZXIubV9lbnRy
eS52YWxPcHRpb25SYW5nZS5yYW5nZVN0cmluZygpOworICAgICAgICByZXR1cm4gbV9vcHRpb25S
YW5nZS5yYW5nZVN0cmluZygpID09IG90aGVyLm1fb3B0aW9uUmFuZ2UucmFuZ2VTdHJpbmcoKTsK
ICAgICBjYXNlIE9wdGlvbnM6OlR5cGU6Ok9wdGlvblN0cmluZzoKLSAgICAgICAgcmV0dXJuICht
X2VudHJ5LnZhbE9wdGlvblN0cmluZyA9PSBvdGhlci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZykK
LSAgICAgICAgICAgIHx8IChtX2VudHJ5LnZhbE9wdGlvblN0cmluZyAmJiBvdGhlci5tX2VudHJ5
LnZhbE9wdGlvblN0cmluZyAmJiAhc3RyY21wKG1fZW50cnkudmFsT3B0aW9uU3RyaW5nLCBvdGhl
ci5tX2VudHJ5LnZhbE9wdGlvblN0cmluZykpOworICAgICAgICByZXR1cm4gKG1fb3B0aW9uU3Ry
aW5nID09IG90aGVyLm1fb3B0aW9uU3RyaW5nKQorICAgICAgICAgICAgfHwgKG1fb3B0aW9uU3Ry
aW5nICYmIG90aGVyLm1fb3B0aW9uU3RyaW5nICYmICFzdHJjbXAobV9vcHRpb25TdHJpbmcsIG90
aGVyLm1fb3B0aW9uU3RyaW5nKSk7CiAgICAgY2FzZSBPcHRpb25zOjpUeXBlOjpHQ0xvZ0xldmVs
OgotICAgICAgICByZXR1cm4gbV9lbnRyeS52YWxHQ0xvZ0xldmVsID09IG90aGVyLm1fZW50cnku
dmFsR0NMb2dMZXZlbDsKKyAgICAgICAgcmV0dXJuIG1fZ2NMb2dMZXZlbCA9PSBvdGhlci5tX2dj
TG9nTGV2ZWw7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI1MjUyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjgg
KzM5LDE2IEBAIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2RlZmluZSBNQVhJTVVNX05VTUJFUl9PRl9GVExf
Q09NUElMRVJfVEhSRUFEUyAyCi0jZWxzZQotI2RlZmluZSBNQVhJTVVNX05VTUJFUl9PRl9GVExf
Q09NUElMRVJfVEhSRUFEUyA4Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJF
QU1JTkdfQVBJKQotY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkg
PSB0cnVlOwotI2Vsc2UKLWNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5n
QXBpID0gZmFsc2U7Ci0jZW5kaWYKLQogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Ci0gICAgZW51
bSBjbGFzcyBEdW1wTGV2ZWwgeworICAgIGVudW0gY2xhc3MgRHVtcExldmVsIDogdWludDhfdCB7
CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBPdmVycmlkZGVuLAogICAgICAgICBBbGwsCiAg
ICAgICAgIFZlcmJvc2UKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBBdmFpbGFiaWxpdHkgewor
ICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IDogdWludDhfdCAgewogICAgICAgICBOb3JtYWwg
PSAwLAogICAgICAgICBSZXN0cmljdGVkLAogICAgICAgICBDb25maWd1cmFibGUKQEAgLTY5LDEz
ICs1NywxMiBAQCBwdWJsaWM6CiAjZGVmaW5lIERFQ0xBUkVfT1BUSU9OX0lEKHR5cGVfLCBuYW1l
XywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25fKSBcCiAgICAgbmFt
ZV8jI0lELAogCi0gICAgZW51bSBJRCB7CisgICAgZW51bSBJRCA6IHVpbnQxNl90IHsKICAgICAg
ICAgRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9JRCkKLSAgICAgICAgbnVtYmVy
T2ZPcHRpb25zCiAgICAgfTsKICN1bmRlZiBERUNMQVJFX09QVElPTl9JRAogCi0gICAgZW51bSBj
bGFzcyBUeXBlIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgQm9v
bCwKICAgICAgICAgVW5zaWduZWQsCiAgICAgICAgIERvdWJsZSwKQEAgLTEwMiw4ICs4OSw4IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBlbnN1cmVPcHRpb25z
QXJlQ29oZXJlbnQoKTsKIAogI2RlZmluZSBERUNMQVJFX09QVElPTl9BQ0NFU1NPUlModHlwZV8s
IG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8pIFwKLSAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25FbnRyeTo6dHlwZV8mIG5hbWVfKCkgeyByZXR1
cm4gZ19qc2NDb25maWcub3B0aW9uc1tuYW1lXyMjSURdLnZhbCMjdHlwZV87IH0gIFwKLSAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBPcHRpb25FbnRyeTo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCkg
eyByZXR1cm4gZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbmFtZV8jI0lEXS52YWwjI3R5cGVf
OyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OnR5cGVfJiBuYW1l
XygpIHsgcmV0dXJuIGdfanNjQ29uZmlnLm9wdGlvbnMubmFtZV87IH0gIFwKKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6dHlwZV8mIG5hbWVfIyNEZWZhdWx0KCkgeyBy
ZXR1cm4gZ19qc2NDb25maWcub3B0aW9ucy5uYW1lXyMjRGVmYXVsdDsgfQogCiAgICAgRk9SX0VB
Q0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTl9BQ0NFU1NPUlMpCiAjdW5kZWYgREVDTEFSRV9P
UFRJT05fQUNDRVNTT1JTCkBAIC0xMTEsMTMgKzk4LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBpc0F2YWlsYWJsZShJRCwgQXZhaWxhYmlsaXR5KTsKIAogcHJpdmF0ZToKLQotICAgIC8v
IEZvciBzdG9yaW5nIGNvbnN0YW50IG1ldGEgZGF0YSBhYm91dCBlYWNoIG9wdGlvbjoKLSAgICBz
dHJ1Y3QgRW50cnlJbmZvIHsKKyAgICBzdHJ1Y3QgQ29uc3RNZXRhRGF0YSB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWU7CiAgICAgICAgIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uOwogICAgICAg
ICBUeXBlIHR5cGU7CiAgICAgICAgIEF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHk7CisgICAgICAg
IHVpbnQxNl90IG9mZnNldE9mT3B0aW9uOworICAgICAgICB1aW50MTZfdCBvZmZzZXRPZk9wdGlv
bkRlZmF1bHQ7CiAgICAgfTsKIAogICAgIE9wdGlvbnMoKTsKQEAgLTEzNiwxMTUgKzEyMywxMiBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNldEFsaWFzZWRPcHRpb24oY29uc3QgY2hhciog
YXJnKTsKICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZUFsaWFzZWRPcHRpb25XaXRoSGV1cmlzdGlj
KGNvbnN0IGNoYXIqIG5hbWUpOwogCi0gICAgc3RhdGljIGNvbnN0IEVudHJ5SW5mbyBzX29wdGlv
bnNJbmZvW251bWJlck9mT3B0aW9uc107CisgICAgaW5saW5lIHN0YXRpYyB2b2lkKiBhZGRyZXNz
T2ZPcHRpb24oT3B0aW9uczo6SUQpOworICAgIGlubGluZSBzdGF0aWMgdm9pZCogYWRkcmVzc09m
T3B0aW9uRGVmYXVsdChPcHRpb25zOjpJRCk7CiAKLSAgICBmcmllbmQgY2xhc3MgT3B0aW9uOwot
fTsKKyAgICBzdGF0aWMgY29uc3QgQ29uc3RNZXRhRGF0YSBzX2NvbnN0TWV0YURhdGFbTnVtYmVy
T2ZPcHRpb25zXTsKIAotY2xhc3MgT3B0aW9uIHsKLXB1YmxpYzoKLSAgICBPcHRpb24oT3B0aW9u
czo6SUQgaWQpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX2VudHJ5KGdfanNjQ29u
ZmlnLm9wdGlvbnNbbV9pZF0pCi0gICAgewotICAgIH0KLSAgICAKLSAgICB2b2lkIGR1bXAoU3Ry
aW5nQnVpbGRlciYpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYg
b3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIAotICAgIE9wdGlvbnM6OklE
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIE9wdGlvbnM6OlR5
cGUgdHlwZSgpIGNvbnN0OwotICAgIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHko
KSBjb25zdDsKLSAgICBib29sIGlzT3ZlcnJpZGRlbigpIGNvbnN0OwotICAgIGNvbnN0IE9wdGlv
biBkZWZhdWx0T3B0aW9uKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCYgYm9vbFZhbCgpOwotICAg
IHVuc2lnbmVkJiB1bnNpZ25lZFZhbCgpOwotICAgIGRvdWJsZSYgZG91YmxlVmFsKCk7Ci0gICAg
aW50MzJfdCYgaW50MzJWYWwoKTsKLSAgICBPcHRpb25SYW5nZSBvcHRpb25SYW5nZVZhbCgpOwot
ICAgIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZ1ZhbCgpOwotICAgIEdDTG9nZ2luZzo6TGV2ZWwm
IGdjTG9nTGV2ZWxWYWwoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgLy8gT25seSB1c2VkIGZvciBj
b25zdHJ1Y3RpbmcgZGVmYXVsdCBPcHRpb25zLgotICAgIE9wdGlvbihPcHRpb25zOjpJRCBpZCwg
T3B0aW9uRW50cnkmIGVudHJ5KQotICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV9lbnRy
eShlbnRyeSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIE9wdGlvbnM6OklEIG1faWQ7Ci0gICAg
T3B0aW9uRW50cnkmIG1fZW50cnk7CisgICAgZnJpZW5kIHN0cnVjdCBPcHRpb25SZWFkZXI7CiB9
OwogCi1pbmxpbmUgY29uc3QgY2hhciogT3B0aW9uOjpuYW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gT3B0aW9uczo6c19vcHRpb25zSW5mb1ttX2lkXS5uYW1lOwotfQotCi1pbmxpbmUgY29uc3Qg
Y2hhciogT3B0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6
OnNfb3B0aW9uc0luZm9bbV9pZF0uZGVzY3JpcHRpb247Ci19Ci0KLWlubGluZSBPcHRpb25zOjpU
eXBlIE9wdGlvbjo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9u
c0luZm9bbV9pZF0udHlwZTsKLX0KLQotaW5saW5lIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBPcHRp
b246OmF2YWlsYWJpbGl0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE9wdGlvbnM6OnNfb3B0aW9u
c0luZm9bbV9pZF0uYXZhaWxhYmlsaXR5OwotfQotCi1pbmxpbmUgYm9vbCBPcHRpb246OmlzT3Zl
cnJpZGRlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICp0aGlzICE9IGRlZmF1bHRPcHRpb24oKTsK
LX0KLQotaW5saW5lIGNvbnN0IE9wdGlvbiBPcHRpb246OmRlZmF1bHRPcHRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBPcHRpb24obV9pZCwgZ19qc2NDb25maWcuZGVmYXVsdE9wdGlvbnNbbV9p
ZF0pOwotfQotCi1pbmxpbmUgYm9vbCYgT3B0aW9uOjpib29sVmFsKCkKLXsKLSAgICByZXR1cm4g
bV9lbnRyeS52YWxCb29sOwotfQotCi1pbmxpbmUgdW5zaWduZWQmIE9wdGlvbjo6dW5zaWduZWRW
YWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbFVuc2lnbmVkOwotfQotCi1pbmxpbmUgZG91
YmxlJiBPcHRpb246OmRvdWJsZVZhbCgpCi17Ci0gICAgcmV0dXJuIG1fZW50cnkudmFsRG91Ymxl
OwotfQotCi1pbmxpbmUgaW50MzJfdCYgT3B0aW9uOjppbnQzMlZhbCgpCi17Ci0gICAgcmV0dXJu
IG1fZW50cnkudmFsSW50MzI7Ci19Ci0KLWlubGluZSBPcHRpb25SYW5nZSBPcHRpb246Om9wdGlv
blJhbmdlVmFsKCkKLXsKLSAgICByZXR1cm4gbV9lbnRyeS52YWxPcHRpb25SYW5nZTsKLX0KLQot
aW5saW5lIGNvbnN0IGNoYXIqIE9wdGlvbjo6b3B0aW9uU3RyaW5nVmFsKCkKLXsKLSAgICByZXR1
cm4gbV9lbnRyeS52YWxPcHRpb25TdHJpbmc7Ci19Ci0KLWlubGluZSBHQ0xvZ2dpbmc6OkxldmVs
JiBPcHRpb246OmdjTG9nTGV2ZWxWYWwoKQotewotICAgIHJldHVybiBtX2VudHJ5LnZhbEdDTG9n
TGV2ZWw7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZpc2lvbiAyNTI1MjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwxOSArMjUsMzUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHQ0xvZ2dpbmcuaCIK
KwordXNpbmcgV1RGOjpQcmludFN0cmVhbTsKKwogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBNQVhJTVVNX05VTUJFUl9PRl9GVExfQ09NUElMRVJf
VEhSRUFEUyAyCisjZWxzZQorI2RlZmluZSBNQVhJTVVNX05VTUJFUl9PRl9GVExfQ09NUElMRVJf
VEhSRUFEUyA4CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJ
KQorY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSB0cnVlOwor
I2Vsc2UKK2NvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFs
c2U7CisjZW5kaWYKKwogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8g
YmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKIC8vIGFsb25n
IHdpdGggdGhlaXIgdHlwZXMgYW5kIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucyB2YWx1ZXMg
YXJlIGFjdHVhbGx5Ci0vLyByZWFsaXplZCBhcyBhbiBhcnJheSBvZiBPcHRpb25FbnRyeSBlbGVt
ZW50cyBpbiBKU0M6OkNvbmZpZy4KKy8vIHJlYWxpemVkIGFzIGZpZWxkcyBpbiBPcHRpb25zU3Rv
cmFnZSBlbWJlZGRlZCBpbiBKU0M6OkNvbmZpZy4KIC8vCi0vLyAgICAgT3B0aW9uczo6aW5pdGlh
bGl6ZSgpIHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB2YWx1ZXMgd2l0aAot
Ly8gdGhlIGRlZmF1bHRzIHNwZWNpZmllZCBpbiBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgYmVsb3cu
IEFmdGVyIHRoYXQsIHRoZSB2YWx1ZXMgY2FuCi0vLyBiZSBwcm9ncmFtbWF0aWNhbGx5IHJlYWQg
YW5kIHdyaXR0ZW4gdG8gdXNpbmcgYW4gYWNjZXNzb3IgbWV0aG9kIHdpdGggdGhlCi0vLyBzYW1l
IG5hbWUgYXMgdGhlIG9wdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBvcHRpb24gInVzZUpJVCIgY2Fu
IGJlIHJlYWQgYW5kCi0vLyBzZXQgbGlrZSBzbzoKKy8vICAgICBPcHRpb25zOjppbml0aWFsaXpl
KCkgd2lsbCBpbml0aWFsaXplIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIGRlZmF1bHRzCisv
LyBzcGVjaWZpZWQgaW4gRk9SX0VBQ0hfSlNDX09QVElPTigpIGJlbG93LiBBZnRlciB0aGF0LCB0
aGUgdmFsdWVzIGNhbiBiZQorLy8gcHJvZ3JhbW1hdGljYWxseSByZWFkIGFuZCB3cml0dGVuIHRv
IHVzaW5nIGFuIGFjY2Vzc29yIG1ldGhvZCB3aXRoIHRoZSBzYW1lCisvLyBuYW1lIGFzIHRoZSBv
cHRpb24uIEZvciBleGFtcGxlLCB0aGUgb3B0aW9uICJ1c2VKSVQiIGNhbiBiZSByZWFkIGFuZCBz
ZXQgbGlrZQorLy8gc286CiAvLwogLy8gICAgIGJvb2wgaml0SXNPbiA9IE9wdGlvbnM6OnVzZUpJ
VCgpOyAgLy8gR2V0IHRoZSBvcHRpb24gdmFsdWUuCiAvLyAgICAgT3B0aW9uczo6dXNlSklUKCkg
PSBmYWxzZTsgICAgICAgICAvLyBTZXRzIHRoZSBvcHRpb24gdmFsdWUuCkBAIC01NCw2ICs3MCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNoZWNrcyBhcmUgZG9uZSBhZnRlciB0aGUgb3B0aW9u
IHZhbHVlcyBhcmUgc2V0LiBJZiB5b3UgYWx0ZXIgdGhlIG9wdGlvbgogLy8gdmFsdWVzIGFmdGVy
IHRoZSBzYW5pdHkgY2hlY2tzIChmb3IgeW91ciBvd24gdGVzdGluZyksIHRoZW4geW91J3JlIGxp
YWJsZSB0bwogLy8gZW5zdXJlIHRoYXQgdGhlIG5ldyB2YWx1ZXMgc2V0IGFyZSBzYW5lIGFuZCBy
ZWFzb25hYmxlIGZvciB5b3VyIG93biBydW4uCisvLworLy8gQW55IG1vZGlmaWNhdGlvbnMgdG8g
b3B0aW9ucyBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSBmaXJzdCBWTSBpcyBpbnN0YW50aWF0ZS4K
Ky8vIE9uIGluc3RhbnRpYXRpb24gb2YgdGhlIGZpcnN0IFZNIGluc3RhbmNlLCB0aGUgT3B0aW9u
cyB3aWxsIGJlIHdyaXRlIHByb3RlY3RlZAorLy8gYW5kIGNhbm5vdCBiZSBtb2RpZmllZCB0aGVy
ZWFmdGVyLgogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19PUFRJT04odikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdihCb29sLCB1c2VLZXJuVENTTSwgdHJ1
ZSwgTm9ybWFsLCAiTm90ZTogdGhpcyBuZWVkcyB0byBnbyBiZWZvcmUgb3RoZXIgb3B0aW9ucyBz
aW5jZSB0aGV5IGRlcGVuZCBvbiB0aGlzIHZhbHVlLiIpIFwKQEAgLTUyNyw1ICs1NDcsNTQgQEAg
Y29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucwogCiBjb25zdGV4cHIgc2l6
ZV90IE51bWJlck9mT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NPcHRpb25zKCk7CiAKLX0gLy8g
bmFtZXNwYWNlIEpTQworY2xhc3MgT3B0aW9uUmFuZ2UgeworcHJpdmF0ZToKKyAgICBlbnVtIFJh
bmdlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBJbml0RXJyb3IsIE5vcm1hbCwgSW52ZXJ0ZWQgfTsK
K3B1YmxpYzoKKyAgICBPcHRpb25SYW5nZSYgb3BlcmF0b3I9IChjb25zdCBpbnQmIHJocykKKyAg
ICB7IC8vIE9ubHkgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbgorICAgICAgICBpZiAoIXJocykg
eworICAgICAgICAgICAgbV9zdGF0ZSA9IFVuaW5pdGlhbGl6ZWQ7CisgICAgICAgICAgICBtX3Jh
bmdlU3RyaW5nID0gMDsKKyAgICAgICAgICAgIG1fbG93TGltaXQgPSAwOworICAgICAgICAgICAg
bV9oaWdoTGltaXQgPSAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICBib29sIGluaXQoY29uc3QgY2hhciopOworICAgIGJvb2wgaXNJblJhbmdlKHVuc2ln
bmVkKTsKKyAgICBjb25zdCBjaGFyKiByYW5nZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIChtX3N0
YXRlID4gSW5pdEVycm9yKSA/IG1fcmFuZ2VTdHJpbmcgOiBzX251bGxSYW5nZVN0cjsgfQorICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19udWxsUmFuZ2VTdHI7CisKKyAgICBSYW5nZVN0
YXRlIG1fc3RhdGU7CisgICAgY29uc3QgY2hhciogbV9yYW5nZVN0cmluZzsKKyAgICB1bnNpZ25l
ZCBtX2xvd0xpbWl0OworICAgIHVuc2lnbmVkIG1faGlnaExpbWl0OworfTsKKworc3RydWN0IE9w
dGlvbnNTdG9yYWdlIHsKKyAgICB1c2luZyBCb29sID0gYm9vbDsKKyAgICB1c2luZyBVbnNpZ25l
ZCA9IHVuc2lnbmVkOworICAgIHVzaW5nIERvdWJsZSA9IGRvdWJsZTsKKyAgICB1c2luZyBJbnQz
MiA9IGludDMyX3Q7CisgICAgdXNpbmcgU2l6ZSA9IHNpemVfdDsKKyAgICB1c2luZyBPcHRpb25S
YW5nZSA9IEpTQzo6T3B0aW9uUmFuZ2U7CisgICAgdXNpbmcgT3B0aW9uU3RyaW5nID0gY29uc3Qg
Y2hhcio7CisgICAgdXNpbmcgR0NMb2dMZXZlbCA9IEdDTG9nZ2luZzo6TGV2ZWw7CisKKyNkZWZp
bmUgREVDTEFSRV9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxp
dHlfLCBkZXNjcmlwdGlvbl8pIFwKKyAgICB0eXBlXyBuYW1lXzsgXAorICAgIHR5cGVfIG5hbWVf
IyNEZWZhdWx0OworRk9SX0VBQ0hfSlNDX09QVElPTihERUNMQVJFX09QVElPTikKKyN1bmRlZiBE
RUNMQVJFX09QVElPTgorfTsKIAorLy8gT3B0aW9uczo6TWV0YWRhdGEncyBvZmZzZXRPZk9wdGlv
biBhbmQgb2Zmc2V0T2ZPcHRpb25EZWZhdWx0IHJlbGllcyBvbiB0aGlzLgorc3RhdGljX2Fzc2Vy
dChzaXplb2YoT3B0aW9uc1N0b3JhZ2UpIDw9IDE2ICogS0IpOworCit9IC8vIG5hbWVzcGFjZSBK
U0MK
</data>
<flag name="review"
          id="399464"
          type_id="1"
          status="+"
          setter="rmorisset"
    />
          </attachment>
      

    </bug>

</bugzilla>