<?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>123804</bug_id>
          
          <creation_ts>2013-11-05 08:42:11 -0800</creation_ts>
          <short_desc>Manage ScriptExecutionContext::Task derivatives through std::unique_ptr</short_desc>
          <delta_ts>2014-08-04 09:24:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947188</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-05 08:42:11 -0800</bug_when>
    <thetext>Manage ScriptExecutionContext::Task derivatives through std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947226</commentid>
    <comment_count>1</comment_count>
      <attachid>216048</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-05 09:34:12 -0800</bug_when>
    <thetext>Created attachment 216048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947227</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 09:36:29 -0800</bug_when>
    <thetext>Attachment 216048 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/StdLibExtras.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/quota/StorageErrorCallback.h&apos;, u&apos;Source/WebCore/Modules/quota/StorageInfo.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseSync.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLStatement.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransaction.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCallbackData.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp&apos;, u&apos;Source/WebCore/dom/CrossThreadTask.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/dom/StringCallback.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/workers/DefaultSharedWorkerRepository.cpp&apos;, u&apos;Source/WebCore/workers/WorkerEventQueue.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.h&apos;, u&apos;Source/WebCore/workers/WorkerLoaderProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.h&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;]&quot; exit_code: 1
Source/WebCore/Modules/webdatabase/SQLStatement.cpp:105:  std::unique_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/Modules/webdatabase/SQLStatement.cpp:106:  std::unique_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:305:  std::unique_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:306:  std::unique_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:307:  std::unique_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947228</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-05 09:36:45 -0800</bug_when>
    <thetext>WTF_MAKE_UNIQUE and WTF_MAKE_UNIQUE_ARGS macros work well under Clang 3.2 and up and g++ 4.7 and up. They don&apos;t function under g++ 4.6, which some ports still want to support. No idea about MSVC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947242</commentid>
    <comment_count>4</comment_count>
      <attachid>216048</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-05 10:26:07 -0800</bug_when>
    <thetext>Comment on attachment 216048
Patch

Attachment 216048 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/21168027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947245</commentid>
    <comment_count>5</comment_count>
      <attachid>216048</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-05 10:31:46 -0800</bug_when>
    <thetext>Comment on attachment 216048
Patch

Attachment 216048 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/21228023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947264</commentid>
    <comment_count>6</comment_count>
      <attachid>216048</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-05 11:12:43 -0800</bug_when>
    <thetext>Comment on attachment 216048
Patch

Attachment 216048 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/21168031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947286</commentid>
    <comment_count>7</comment_count>
      <attachid>216048</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-05 12:45:46 -0800</bug_when>
    <thetext>Comment on attachment 216048
Patch

Attachment 216048 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/20068107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947583</commentid>
    <comment_count>8</comment_count>
      <attachid>216048</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-05 23:54:37 -0800</bug_when>
    <thetext>Comment on attachment 216048
Patch

The Mac build failed due to a couple undefined references which extra explicit template instantiations would fix. MSVC doesn&apos;t play ball with the std::make_unique friend declarations though, so that won&apos;t be possible to use.

I&apos;ll update the patch with public constructors that std::make_unique won&apos;t have problems accessing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948557</commentid>
    <comment_count>9</comment_count>
      <attachid>216362</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-07 23:38:39 -0800</bug_when>
    <thetext>Created attachment 216362
Another try

Testing through EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948558</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-07 23:43:33 -0800</bug_when>
    <thetext>Attachment 216362 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/wtf/Compiler.h&apos;, u&apos;Source/WTF/wtf/StdLibExtras.h&apos;, u&apos;Source/WebCore/Modules/quota/StorageErrorCallback.h&apos;, u&apos;Source/WebCore/Modules/quota/StorageInfo.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseSync.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCallbackData.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp&apos;, u&apos;Source/WebCore/dom/CrossThreadTask.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/dom/StringCallback.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/workers/DefaultSharedWorkerRepository.cpp&apos;, u&apos;Source/WebCore/workers/WorkerEventQueue.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.h&apos;, u&apos;Source/WebCore/workers/WorkerLoaderProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.h&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/StdLibExtras.h:454:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:459:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:464:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:469:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:474:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:479:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:484:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:489:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:494:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:499:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 10 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948560</commentid>
    <comment_count>11</comment_count>
      <attachid>216362</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-07 23:54:25 -0800</bug_when>
    <thetext>Comment on attachment 216362
Another try

Attachment 216362 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/22368424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948567</commentid>
    <comment_count>12</comment_count>
      <attachid>216362</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-08 00:33:04 -0800</bug_when>
    <thetext>Comment on attachment 216362
Another try

Attachment 216362 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/22538395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948762</commentid>
    <comment_count>13</comment_count>
      <attachid>216418</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-08 11:30:38 -0800</bug_when>
    <thetext>Created attachment 216418
Third attempt

Fixes the GTK build, dunno why/how the Win build is failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948764</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 11:31:41 -0800</bug_when>
    <thetext>Attachment 216418 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/wtf/Compiler.h&apos;, u&apos;Source/WTF/wtf/NeverDestroyed.h&apos;, u&apos;Source/WTF/wtf/StdLibExtras.h&apos;, u&apos;Source/WebCore/Modules/quota/StorageErrorCallback.h&apos;, u&apos;Source/WebCore/Modules/quota/StorageInfo.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseSync.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLCallbackWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSCallbackData.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObjectTask.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp&apos;, u&apos;Source/WebCore/dom/CrossThreadTask.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/dom/StringCallback.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/workers/DefaultSharedWorkerRepository.cpp&apos;, u&apos;Source/WebCore/workers/WorkerEventQueue.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.h&apos;, u&apos;Source/WebCore/workers/WorkerLoaderProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.h&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.cpp&apos;, u&apos;Source/WebCore/workers/WorkerRunLoop.h&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/StdLibExtras.h:454:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:459:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:464:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:469:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:474:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:479:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:484:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:489:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:494:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:499:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 10 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948793</commentid>
    <comment_count>15</comment_count>
      <attachid>216418</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-08 12:31:37 -0800</bug_when>
    <thetext>Comment on attachment 216418
Third attempt

Attachment 216418 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/22778508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948850</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-08 14:24:24 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 216418 [details])
&gt; Attachment 216418 [details] did not pass win-ews (win):
&gt; Output: http://webkit-queues.appspot.com/results/22778508

AFAIU MSVC is crashing. Fun.

This was pretty much the last attempt at trying to add support for std::make_unique friendships that could keep the constructors private. MSVC already required a dumbed-down approach to start with (even MSVC 2012 doesn&apos;t process the decltype() approach), so I&apos;m giving up on this for the moment and I&apos;ll be uploading a version of this that is making the relevant constructors public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949864</commentid>
    <comment_count>17</comment_count>
      <attachid>216720</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-11-12 13:56:12 -0800</bug_when>
    <thetext>Created attachment 216720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977166</commentid>
    <comment_count>18</comment_count>
      <attachid>216720</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 17:35:16 -0800</bug_when>
    <thetext>Comment on attachment 216720
Patch

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

This looks fine, so I&apos;m gonna say r=me.
You&apos;ll probably need to fix up some things, like s/OVERRIDE/override/ for it to build.

It would also be good to go over these classes and spam final/override as appropriate.

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:89
&gt; +    DerefContextTask(PassRefPtr&lt;ScriptExecutionContext&gt; context)

explicit

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:203
&gt; +    DeliverPendingCallbackTask(PassRefPtr&lt;SQLTransaction&gt; transaction)

explicit

&gt; Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:237
&gt; +    Vector&lt;std::unique_ptr&lt;ScriptExecutionContext::Task&gt;&gt; tasks = std::move(m_pendingTasks);
&gt; +    for (auto iter = tasks.begin(); iter != tasks.end(); ++iter)
&gt;          (*iter)-&gt;performTask(0);

I&apos;d go all in and write this like so:

auto tasks = std::move(m_pendingTasks);
for (auto&amp; task : tasks)
    task.performTask(0);

&gt; Source/WebCore/bindings/js/JSCallbackData.h:80
&gt; +    DeleteCallbackDataTask(JSCallbackData* data) : m_data(data) { }

explicit

&gt; Source/WebCore/workers/WorkerMessagingProxy.cpp:139
&gt;      WorkerGlobalScopeDestroyedTask(WorkerMessagingProxy* messagingProxy)

explicit

&gt; Source/WebCore/workers/WorkerMessagingProxy.cpp:212
&gt;      NotifyNetworkStateChangeTask(bool isOnLine)

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026639</commentid>
    <comment_count>19</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-04 09:24:24 -0700</bug_when>
    <thetext>This isn&apos;t necessary anymore now that ScriptExecutionContext::Task objects are just lambdas (bug #129795).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216048</attachid>
            <date>2013-11-05 09:34:12 -0800</date>
            <delta_ts>2013-11-05 23:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123804-20131105093410.patch</filename>
            <type>text/plain</type>
            <size>90895</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyN2Q1OGJkMzllYTExY2IwOGM2M2E4
MTk2N2FlNTk3MjE0MTU0MWMuLmU1ZjU5NjE3YjZhOGVkZmIxMzM4N2M5MDRkOTI2NGU4MmIwMTlh
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMTEtMDUgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIE1hbmFnZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIGRlcml2YXRpdmVzIHRocm91Z2ggc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM4MDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIFdURl9NQUtFX1VOSVFV
RSBhbmQgV1RGX01BS0VfVU5JUVVFX0FSR1MgbWFjcm9zIHRoYXQgZGVmaW5lIGZyaWVuZCBkZWNs
YXJhdGlvbnMgYmV0d2VlbgorICAgICAgICB0aGUgZ2l2ZW4gY2xhc3MgYW5kIHN0ZDo6bWFrZV91
bmlxdWUuIFRoZSBmaXJzdCBtYWNybyBpcyB1c2VkIHdoZW4gc3RkOjptYWtlX3VuaXF1ZSBhbmQg
dGhlIHJlbGV2YW50CisgICAgICAgIGNvbnN0cnVjdG9yIHRha2Ugbm8gYXJndW1lbnRzLiBUaGUg
c2Vjb25kIG1hY3JvIGlzIHVzZWQgd2hlbiBzdGQ6Om1ha2VfdW5pcXVlIGFuZCB0aGUgcmVsZXZh
bnQgY29uc3RydWN0b3IKKyAgICAgICAgdGFrZSBhIHNwZWNpZmljIG51bWJlciBvZiBhcmd1bWVu
dHMsIHdpdGggc3BlY2lmaWMgdHlwZXMuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6
CisKIDIwMTMtMTEtMDIgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IGNvbXBpbGF0aW9uIG9mIERhdGVNYXRoLmNwcCB3aXRoIE1TVkMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNWU5NTA2ZTY4MmFiNmFlNDIyNjRhOGM3NmYzYzEzOTRlMjk3YTRmLi4xNTA4N2Ni
MzhlYzI1OTg1MzhmOGYwYTVkMjU2MDNhYzU0MzAzMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTI0IEBACisyMDEzLTExLTA1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4K
KworICAgICAgICBNYW5hZ2UgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBkZXJpdmF0aXZl
cyB0aHJvdWdoIHN0ZDo6dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgY2xhc3NlcyB0aGF0IGRlcml2ZSBmcm9tIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2suIFRoZSBUOjpjcmVhdGUoKSBtZXRob2RzIGFyZSByZW1v
dmVkLAorICAgICAgICB0aGVpciBjb25zdHJ1Y3RvcnMgaGlkZGVuLCBhbmQgV1RGX01BS0VfVU5J
UVVFKF9BUkdTKSBpcyB1c2VkIHNvIHRoZSBjbGFzcyBpbnN0YW5jZXMgY2FuIGJlIGNyZWF0ZWQK
KyAgICAgICAgdGhyb3VnaCBzdGQ6Om1ha2VfdW5pcXVlIGFuZCBtYW5hZ2VkIHRocm91ZyBzdGQ6
OnVuaXF1ZV9wdHIuIAorCisgICAgICAgICogTW9kdWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxs
YmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUluZm86OnF1ZXJ5VXNhZ2VBbmRRdW90YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlSW5mbzo6cmVxdWVzdFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp+RGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25D
YWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcDogUmVtb3ZlIHRo
ZSB1bnVzZWQgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrIGNsYXNzLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmg6IE1vdmUgdGhl
IG5lc3RlZCBTYWZlUmVsZWFzZVRhc2sgY2xhc3Mgb3V0IG9mIHRoZSBTUUxDYWxsYmFja1dyYXBw
ZXIKKyAgICAgICAgdG8gZW5hYmxlIGZyaWVuZHNoaXAgYmV0d2VlbiB0aGUgbmV3IHRlbXBsYXRl
ZCBTUUxDYWxsYmFja1JlbGVhc2VUYXNrIGNsYXNzIGFuZCBzdGQ6Om1ha2VfdW5pcXVlIC0tIGtl
ZXBpbmcgdGhlCisgICAgICAgIGNsYXNzIG5lc3RlZCB1bmRlciBTUUxDYWxsYmFja1dyYXBwZXIg
bWFkZSB0aGlzIGltcG9zc2libGUgYXMgaXQgcmVxdWlyZWQgaW5zdGFudGlhbnRpbmcgdGhlIFNR
TENhbGxiYWNrV3JhcHBlcgorICAgICAgICBjbGFzcyB0ZW1wbGF0ZSB3aXRoaW4gaXRzIGRlZmlu
aXRpb24uIEZyaWVuZHNoaXBzIGZvciBhbGwgZml2ZSBmdXR1cmUgc3BlY2lhbGl6YXRpb25zIG9m
IHRoZSBTUUxDYWxsYmFja1JlbGVhc2VUYXNrCisgICAgICAgIGNsYXNzIGFyZSByZXF1aXJlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrUmVsZWFzZVRhc2s6OnBlcmZvcm1UYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrUmVsZWFzZVRhc2s6OmlzQ2xlYW51cFRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2FsbGJhY2tSZWxlYXNlVGFzazo6U1FMQ2FsbGJhY2tS
ZWxlYXNlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OmNsZWFy
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHA6IEV4cGxp
Y2l0bHkgaW5zdGFudGlhdGUgdGhlIFNRTENhbGxiYWNrUmVsZWFzZVRhc2sgdGVtcGxhdGUgZm9y
CisgICAgICAgIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2ssIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjayBhbmQgVm9pZENhbGxiYWNrLiBFeHBsaWNpdCBzdGQ6OnVuaXF1ZV9wdHIgdGVtcGxhdGUg
aW5zdGFudGlhdGlvbnMKKyAgICAgICAgZm9yIHRob3NlIFNRTENhbGxiYWNrUmVsZWFzZVRhc2sg
dGVtcGxhdGVzIGFyZSBhbHNvIHJlcXVpcmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwOiBEaXR0byBmb3IgU1FMU3RhdGVtZW50Q2FsbGJhY2sgYW5k
IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQ
ZW5kaW5nVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZElu
aXRpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpwZXJmb3JtVGFzayk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1w
bGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6fkpTVGVzdENh
bGxiYWNrKToKKyAgICAgICAgKiBkb20vQ3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDYWxsYmFja1Rhc2spOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bVRhc2tDb250ZXh0OjpQZXJmb3JtVGFza0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZFJlY2VpdmVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3N0
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJl
ZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TdHJpbmdDYWxsYmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHJpbmdDYWxsYmFjazo6c2NoZWR1bGVDYWxsYmFjayk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2spOgorICAg
ICAgICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OlNo
YXJlZFdvcmtlckNvbm5lY3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5Ojp3b3JrZXJTY3JpcHRMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckV2ZW50UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFz
azo6Q2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1l
c3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyR2xvYmFs
U2NvcGVUYXNrOjpNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VXb3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJFeGNlcHRpb25UYXNrOjpXb3JrZXJFeGNlcHRpb25UYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzazo6cGVyZm9ybVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGVybWluYXRlVGFzazo6cGVyZm9ybVRhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s6OnBl
cmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRh
c2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2Vy
R2xvYmFsU2NvcGVDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
Ojpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Fu
ZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zv
ck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlRhc2s6OlRhc2spOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzazo6
V29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6V29ya2VyVGhyZWFkU2h1dGRvd25TdGFy
dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2s6OlJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpyZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorCiAyMDEzLTExLTA0ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSBjb2xvciBjb25zdHJ1Y3RvcnMgc2hvdWxkIHJldHVybiBQYXNzUmVmLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRy
YXMuaAppbmRleCBhYWVmZjUwM2EyMzRiODRjYjZhZjc0Y2IzNzcwNDY1NDkxOWNkZmE2Li5jNjJk
NmYzNjJlZjQxZWQxOGEyZTczZmUyMmVhY2Q2Y2RjYjg3YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMu
aApAQCAtNDQyLDYgKzQ0Miw5IEBAIG5hbWVzcGFjZSBzdGQgewogI2VuZGlmCiB9CiAKKyNkZWZp
bmUgV1RGX01BS0VfVU5JUVVFKENsYXNzTmFtZSkgZnJpZW5kIGRlY2x0eXBlKHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NOYW1lPikgc3RkOjptYWtlX3VuaXF1ZTxDbGFzc05hbWU+OworI2RlZmluZSBX
VEZfTUFLRV9VTklRVUVfQVJHUyhDbGFzc05hbWUsIC4uLikgZnJpZW5kIGRlY2x0eXBlKHN0ZDo6
bWFrZV91bmlxdWU8Q2xhc3NOYW1lLCBfX1ZBX0FSR1NfXz4pIHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NOYW1lPjsKKwogdXNpbmcgV1RGOjpLQjsKIHVzaW5nIFdURjo6TUI7CiB1c2luZyBXVEY6Omlu
c2VydEludG9Cb3VuZGVkVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oCmluZGV4IGZmY2U3YjY3NTE3YjYwYWNmN2U0ZDU0
YzkzYmIzOTQ3NWQ0OWI2YmIuLjc2ODg3NjQ1NzQzZDhlY2I0MzFhODI3NWZmZGIzM2ZlMGRlZjFm
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9y
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VFcnJv
ckNhbGxiYWNrLmgKQEAgLTQ5LDEyICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlRXZlbnQoRE9NQ29yZUV4Y2VwdGlvbiopID0gMDsKIAogICAgIGNsYXNzIENhbGxiYWNr
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+IGNhbGxiYWNrLCBFeGNlcHRpb25Db2RlIGVjKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGxiYWNrVGFzayhjYWxs
YmFjaywgZWMpKTsKLSAgICAgICAgfQorICAgICAgICBXVEZfTUFLRV9VTklRVUVfQVJHUyhDYWxs
YmFja1Rhc2ssIFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+JiwgRXhjZXB0aW9uQ29k
ZSYpOwogCisgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAKaW5kZXggNjI3NWVmOWQ1YmY1ZDE2Nzg3OGMw
MGFkNTQ3ZTMyYzgxYjRlZThjYy4uM2MzNGJjZDZmOTc4MDdhYzM0OGYxN2Q4ZmMzYjk0MzY2MTI2
MjMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1b3RhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICBTdG9yYWdlUXVv
dGEqIHN0b3JhZ2VRdW90YSA9IGdldFN0b3JhZ2VRdW90YShzdG9yYWdlVHlwZSk7CiAgICAgaWYg
KCFzdG9yYWdlUXVvdGEpIHsKICAgICAgICAgLy8gVW5rbm93biBzdG9yYWdlIHR5cGUgaXMgcmVx
dWVzdGVkLgotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhTdG9yYWdl
RXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrOjpjcmVhdGUoZXJyb3JDYWxsYmFjaywgTk9UX1NV
UFBPUlRFRF9FUlIpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
c3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrPihlcnJv
ckNhbGxiYWNrLCBOT1RfU1VQUE9SVEVEX0VSUikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHN0b3JhZ2VRdW90YS0+cXVlcnlVc2FnZUFuZFF1b3RhKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkBAIC03MCw3ICs3MCw3IEBAIHZv
aWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBpCiAgICAgU3RvcmFnZVF1b3RhKiBzdG9yYWdlUXVvdGEgPSBn
ZXRTdG9yYWdlUXVvdGEoc3RvcmFnZVR5cGUpOwogICAgIGlmICghc3RvcmFnZVF1b3RhKSB7CiAg
ICAgICAgIC8vIFVua25vd24gc3RvcmFnZSB0eXBlIGlzIHJlcXVlc3RlZC4KLSAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soU3RvcmFnZUVycm9yQ2FsbGJhY2s6OkNhbGxi
YWNrVGFzazo6Y3JlYXRlKGVycm9yQ2FsbGJhY2ssIE5PVF9TVVBQT1JURURfRVJSKSk7CisgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U3Rv
cmFnZUVycm9yQ2FsbGJhY2s6OkNhbGxiYWNrVGFzaz4oZXJyb3JDYWxsYmFjaywgTk9UX1NVUFBP
UlRFRF9FUlIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBzdG9yYWdlUXVvdGEtPnJl
cXVlc3RRdW90YShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBuZXdRdW90YUluQnl0ZXMsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDg2OWM4NWYwZDcwYjNjOTZlYTZhODA3NTU1
OWZkYzIzNGZiZWVjMTguLjQwZmRmOTk0NDIxZDBmMDgzMDlkNzI1NTc3ZjQ0NmU2MDE2NDA3Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC04NSwxMiArODUsOSBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFz
ZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsCiB9CiAKIGNsYXNzIERlcmVmQ29udGV4
dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8RGVyZWZDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRGVyZWZDb250ZXh0VGFzayhjb250ZXh0KSk7Ci0gICAgfQorICAgIFdURl9N
QUtFX1VOSVFVRV9BUkdTKERlcmVmQ29udGV4dFRhc2ssIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4pOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQgPT0gbV9jb250ZXh0KTsKQEAgLTEwNCw3ICsxMDEsNyBAQCBw
cml2YXRlOgogICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgIHsKICAgICB9Ci0gICAg
CisKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIApA
QCAtMTE2LDcgKzExMyw3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogICAgICAgICAvLyBEZXJl
ZkNvbnRleHRUYXNrOjpjcmVhdGUuCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CiAg
ICAgICAgIAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEZXJlZkNv
bnRleHRUYXNrOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKSkpOwor
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVl
PERlcmVmQ29udGV4dFRhc2s+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkpKTsK
ICAgICB9CiB9CiAKQEAgLTIwNCwxMiArMjAxLDkgQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNh
Y3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1IK
IH0KIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVs
aXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsaXZl
clBlbmRpbmdDYWxsYmFja1Rhc2sodHJhbnNhY3Rpb24pKTsKLSAgICB9CisgICAgV1RGX01BS0Vf
VU5JUVVFX0FSR1MoRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2ssIFNRTFRyYW5zYWN0aW9uKiYp
OwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKQogICAgIHsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdD
YWxsYmFjaygpOwpAQCAtMjI2LDcgKzIyMCw3IEBAIHByaXZhdGU6CiAKIHZvaWQgRGF0YWJhc2U6
OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEZWxpdmVyUGVuZGlu
Z0NhbGxiYWNrVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKSk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlbGl2ZXJQZW5kaW5nQ2FsbGJh
Y2tUYXNrPih0cmFuc2FjdGlvbikpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVy
Zm9ybUdldFRhYmxlTmFtZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDRlZWQ2ZTIwMDFkOTRkYTlmMzVl
NzY2N2UwYTA5OGYyNGFkZDU5NmIuLjNiMDRlZTk2NTQwMDEyNGYyYTdkMmUzYjYwZDlmMzc5NzZl
MGY1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTExOCwxMiArMTE4LDkgQEAgdm9pZCBEYXRhYmFzZU1h
bmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogfQogCiBjbGFzcyBEYXRhYmFz
ZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERhdGFiYXNlQ3JlYXRpb25DYWxs
YmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0
cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrKGRhdGFiYXNlLCBj
cmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKERhdGFi
YXNlQ3JlYXRpb25DYWxsYmFja1Rhc2ssIFJlZlB0cjxEYXRhYmFzZT4mLCBQYXNzUmVmUHRyPERh
dGFiYXNlQ2FsbGJhY2s+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBtX2NyZWF0aW9uQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YWJhc2UuZ2V0KCkpOwpAQCAtMzI5LDcgKzMyNiw3IEBA
IFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRlCiAKICAgICBpZiAoYmFja2VuZC0+aXNOZXcoKSAmJiBj
cmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1
bGluZyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0
YWJhc2UuZ2V0KCkpOwotICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVhdGUoZGF0YWJhc2Us
IGNyZWF0aW9uQ2FsbGJhY2spKTsKKyAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJh
Y2tUYXNrPihkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOwogICAgIH0KIAogICAgIEFTU0VS
VChkYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU3luYy5jcHAKaW5kZXggZjkyYzM0ZmYwYWNiYzhmZmYyMWU4NDRhYWQ2NTBlNzkw
MjY1MTA0OC4uNjYyMmJjMWY4OTBiYzgxNDM0M2U2YjY1Nzk1YjBmYmJlZDdiNGQ5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNw
cApAQCAtMTU4LDI3ICsxNTgsNiBAQCB2b2lkIERhdGFiYXNlU3luYzo6bWFya0FzRGVsZXRlZEFu
ZENsb3NlKCkKICAgICAvLyBGSVhNRTogbmVlZCB0byBkbyBzb21ldGhpbmcgc2ltaWxhciB0byBj
bG9zZUltbWVkaWF0ZWx5KCksIGJ1dCBpbiBhIHN5bmMgd2F5CiB9CiAKLWNsYXNzIENsb3NlU3lu
Y0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDbG9zZVN5bmNEYXRh
YmFzZU9uQ29udGV4dFRocmVhZFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4g
ZGF0YWJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENsb3NlU3luY0Rh
dGFiYXNlT25Db250ZXh0VGhyZWFkVGFzayhkYXRhYmFzZSkpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKLSAgICB7Ci0gICAg
ICAgIG1fZGF0YWJhc2UtPmNsb3NlSW1tZWRpYXRlbHkoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrKFBhc3NSZWZQdHI8RGF0YWJh
c2VTeW5jPiBkYXRhYmFzZSkKLSAgICAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8RGF0YWJhc2VTeW5jPiBtX2RhdGFiYXNlOwotfTsKLQogdm9p
ZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkoKQogewogICAgIEFTU0VSVChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4
IGMxODRhMzczODA1MzgyNGUyNzdhNTAwOGJlYTc0YTVjNDNkYTM2NzAuLjY5MDcyYjMyYmI5NmI1
YjlkZTg4ZTFkNjQxODM3ZDQ5MDZlNjU1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApAQCAtMzUsNiArMzUs
MzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTUUxTdGF0ZW1lbnRDYWxsYmFj
azsKK2NsYXNzIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrOworY2xhc3MgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOworY2xhc3MgVm9p
ZENhbGxiYWNrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgU1FMQ2FsbGJhY2tSZWxl
YXNlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBXVEZf
TUFLRV9VTklRVUVfQVJHUyhTUUxDYWxsYmFja1JlbGVhc2VUYXNrPFNRTFN0YXRlbWVudENhbGxi
YWNrPiwgU1FMU3RhdGVtZW50Q2FsbGJhY2sqJik7CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1Mo
U1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiwgU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjayomKTsKKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUyhTUUxDYWxs
YmFja1JlbGVhc2VUYXNrPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrKiYpOworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKFNRTENhbGxiYWNrUmVsZWFzZVRh
c2s8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrKiYpOworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKFNRTENhbGxiYWNrUmVsZWFzZVRhc2s8
Vm9pZENhbGxiYWNrPiwgVm9pZENhbGxiYWNrKiYpOworCitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9jYWxsYmFja1RvUmVsZWFzZSAmJiBjb250ZXh0ICYmIGNvbnRleHQt
PmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICAgICAgbV9jYWxsYmFja1RvUmVsZWFzZS0+ZGVyZWYo
KTsKKyAgICAgICAgY29udGV4dC0+ZGVyZWYoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBTUUxDYWxsYmFja1JlbGVhc2VUYXNrKFQqIGNhbGxiYWNrVG9SZWxlYXNlKQorICAg
ICAgICA6IG1fY2FsbGJhY2tUb1JlbGVhc2UoY2FsbGJhY2tUb1JlbGVhc2UpCisgICAgeworICAg
IH0KKworICAgIFQqIG1fY2FsbGJhY2tUb1JlbGVhc2U7Cit9OworCiAvLyBBIGhlbHBlciBjbGFz
cyB0byBzYWZlbHkgZGVyZWZlcmVuY2UgdGhlIGNhbGxiYWNrIG9iamVjdHMgaGVsZCBieQogLy8g
U1FMU3RhdGVtZW50IGFuZCBTUUxUcmFuc2FjdGlvbiBvbiB0aGUgcHJvcGVyIHRocmVhZC4gVGhl
ICd3cmFwcGVkJwogLy8gY2FsbGJhY2sgaXMgZGVyZWZlcmVuY2VkOgpAQCAtNzMsNyArMTA2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgY29udGV4dCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNr
LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cG9zdFRh
c2soU2FmZVJlbGVhc2VUYXNrOjpjcmVhdGUoY2FsbGJhY2spKTsKKyAgICAgICAgY29udGV4dC0+
cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTUUxDYWxsYmFja1JlbGVhc2VUYXNrPFQ+PihjYWxs
YmFjaykpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKQEAgLTg4LDMxICsx
MjEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBjbGFzcyBTYWZlUmVsZWFzZVRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxTYWZlUmVsZWFzZVRhc2s+IGNyZWF0ZShUKiBjYWxsYmFja1RvUmVs
ZWFzZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTYWZlUmVs
ZWFzZVRhc2soY2FsbGJhY2tUb1JlbGVhc2UpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9jYWxsYmFja1RvUmVsZWFzZSAmJiBjb250ZXh0
ICYmIGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tU
b1JlbGVhc2UtPmRlcmVmKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZXJlZigpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBTYWZlUmVsZWFzZVRh
c2soVCogY2FsbGJhY2tUb1JlbGVhc2UpCi0gICAgICAgICAgICA6IG1fY2FsbGJhY2tUb1JlbGVh
c2UoY2FsbGJhY2tUb1JlbGVhc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFQq
IG1fY2FsbGJhY2tUb1JlbGVhc2U7Ci0gICAgfTsKLQogICAgIE11dGV4IG1fbXV0ZXg7CiAgICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2s7CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCA5MmM3ZjRmNDYxZDUwYTA0Y2Qy
NjEwNjIzOGFlZTJlZmJhZThmMWVhLi5lN2Y3Yzk0YzBlMzc2ZDkzY2FkMjk2NmVjN2I2ODA2MWVi
OThhYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuY3BwCkBAIC05Nyw2ICs5NywxMiBAQCBib29sIFNRTFN0YXRlbWVudDo6cGVy
Zm9ybUNhbGxiYWNrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICByZXR1cm4gY2Fs
bGJhY2tFcnJvcjsKIH0KIAordGVtcGxhdGUgY2xhc3MgU1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxT
UUxTdGF0ZW1lbnRDYWxsYmFjaz47Cit0ZW1wbGF0ZSBjbGFzcyBTUUxDYWxsYmFja1JlbGVhc2VU
YXNrPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK3RlbXBsYXRlIGNsYXNzIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxDYWxsYmFja1Jl
bGVhc2VUYXNrPFdlYkNvcmU6OlNRTFN0YXRlbWVudENhbGxiYWNrPj47Cit0ZW1wbGF0ZSBjbGFz
cyBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxXZWJDb3Jl
OjpTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPj47CisKICNlbmRpZiAvLyBFTkFCTEUoU1FMX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uLmNwcAppbmRleCAyYjRmN2JiMjIwZjA5MWY3ZmE0NTMwM2U4NTlmYmExOWMw
YjEyMTYwLi5iMTEwODk3NmEwMWEzN2M1ZTU5M2Q0NGU1MjZlNmRhOWIzOTIxNTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcApAQCAtMjk2LDYgKzI5NiwxNCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhckNhbGxi
YWNrV3JhcHBlcnMoKQogICAgIG1fZXJyb3JDYWxsYmFja1dyYXBwZXIuY2xlYXIoKTsKIH0KIAor
dGVtcGxhdGUgY2xhc3MgU1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrPjsKK3RlbXBsYXRlIGNsYXNzIFNRTENhbGxiYWNrUmVsZWFzZVRhc2s8U1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrPjsKK3RlbXBsYXRlIGNsYXNzIFNRTENhbGxiYWNrUmVsZWFzZVRhc2s8
Vm9pZENhbGxiYWNrPjsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit0ZW1wbGF0ZSBjbGFz
cyBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxXZWJDb3Jl
OjpTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPj47Cit0ZW1wbGF0ZSBjbGFzcyBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMQ2FsbGJhY2tSZWxlYXNlVGFzazxXZWJDb3JlOjpTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s+PjsKK3RlbXBsYXRlIGNsYXNzIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxDYWxsYmFja1JlbGVhc2VUYXNrPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4+OworCiAjZW5k
aWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggNmVkM2NhMjdmZjI1YWJiMGU0NzMzMGEy
Njg2MTQ5ZDcxNTUxMGU2Yy4uNzY2MjNjZWUxODkzZWQzZDkwNzI5ZjZmNTdjMzIyYTk1MDEzZWE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAKQEAgLTIzMiw5ICsyMzIsOCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcygpCiAgICAgICAgIG1fY29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjaywgdGhpcykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4+IHRhc2tzOwotICAgIHRhc2tzLnN3YXAobV9wZW5kaW5nVGFza3MpOwotICAgIGZv
ciAoVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj46OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSB0YXNrcy5iZWdpbigpOyBpdGVyICE9IHRhc2tzLmVuZCgpOyArK2l0ZXIp
CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
Pj4gdGFza3MgPSBzdGQ6Om1vdmUobV9wZW5kaW5nVGFza3MpOworICAgIGZvciAoYXV0byBpdGVy
ID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQoKTsgKytpdGVyKQogICAgICAgICAo
Kml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGQzNjRjNjU2NDc4NTQyOTU5MjEyOWRmZTBj
MGU5YjZhMDdmZDcwZWUuLjkwMzM4Yzg0ZGUzYTQzYTNjYTE1MWNlYjk4ZWExNTU1YjRkNzYzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgK
QEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiAgICAgdW5zaWduZWQgbG9uZyBt
X2J1ZmZlcmVkQW1vdW50OwogICAgIGJvb2wgbV9zdXNwZW5kZWQ7Ci0gICAgVmVjdG9yPE93blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5k
aW5nVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlYjZhYzU3NTlkNmFjM2UzNDJhMjQyNWQx
NWMxMjg0ODVhMmZmMWYyLi5mMDM0YWRkM2JkMDZjODUxZDY1M2FmOWYzZDI5Zjc1NmU5ODZiOTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2MCwx
NCArMzYwLDEwIEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6On5C
cmlkZ2UoKQogfQogCiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29y
a2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXIqIHBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckds
b2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2socGVlciwgbG9hZGVyUHJveHksIHdvcmtlckNsaWVu
dFdyYXBwZXIpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2ss
CisgICAgICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyKiYsIFdvcmtl
ckxvYWRlclByb3h5KiYsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9iYWxTY29wZURpZElu
aXRpYWxpemVUYXNrKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewpAQCAtNDA2LDcgKzQwMiw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRo
cmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBQZWVyKiBwZWVyID0gUGVlcjo6Y3Jl
YXRlKGNsaWVudFdyYXBwZXIsICpsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUpOwogICAg
IGJvb2wgc2VudCA9IGxvYWRlclByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNj
b3BlKAotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xv
YmFsU2NvcGVEaWRJbml0aWFsaXplVGFzazo6Y3JlYXRlKHBlZXIsIGxvYWRlclByb3h5LCBjbGll
bnRXcmFwcGVyKSwgdGFza01vZGUpOworICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVU
YXNrPihwZWVyLCBsb2FkZXJQcm94eSwgY2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKICAgICBp
ZiAoIXNlbnQpIHsKICAgICAgICAgY2xpZW50V3JhcHBlci0+Y2xlYXJQZWVyKCk7CiAgICAgICAg
IGRlbGV0ZSBwZWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmgKaW5kZXggZDMyMWM1N2YwNWM5ZjAyMzJmMWU3ZDA0Y2E0NDIxYzM3NGIwODYyNS4uYmFmMmRm
MmUwMTE5MjMwZmMyNmQ5ODA2YTljNmQ2NGMyNmE3OGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC03NiwxOSArNzYsMTMgQEAgcHJpdmF0ZToK
IH07CiAKIGNsYXNzIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVsZXRl
Q2FsbGJhY2tEYXRhVGFzaz4gY3JlYXRlKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVDYWxsYmFja0RhdGFUYXNrKGRhdGEpKTsK
LSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoRGVsZXRlQ2FsbGJhY2tEYXRhVGFzaywg
SlNDYWxsYmFja0RhdGEqJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAgICBkZWxldGUgbV9kYXRhOwotICAgIH0K
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIHsgZGVsZXRlIG1fZGF0YTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNr
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotcHJpdmF0ZToKIAorcHJpdmF0ZToKICAgICBEZWxl
dGVDYWxsYmFja0RhdGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKSA6IG1fZGF0YShkYXRhKSB7
fQogCiAgICAgSlNDYWxsYmFja0RhdGEqIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKaW5kZXggNjcyY2M4NTIxNDYyNjNi
MTM5OTZhYzM4ZGM4MDFjNWE0ODhhZWVhNC4uNTc2MmE2MWE3YTc4MjczYTljM2M1NjIwMjZmZmUx
Zjk5ZjgxN2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3RUYXNrLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNET01HbG9iYWxP
YmplY3RUYXNrX2gKIAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxOSArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjazsKIAogY2xhc3MgSlNHbG9iYWxPYmpl
Y3RUYXNrIEZJTkFMIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEpTR2xvYmFsT2JqZWN0VGFzaz4gY3JlYXRlKEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwg
UGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgSlNHbG9iYWxPYmplY3RUYXNrKGdsb2JhbE9iamVjdCwgZnVu
Y3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdT
KEpTR2xvYmFsT2JqZWN0VGFzaywgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHImLCBQ
YXNzUmVmUHRyPEpTQzo6VGFza0NvbnRleHQ+Jik7CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1Mo
SlNHbG9iYWxPYmplY3RUYXNrLCBKU0RPTVdpbmRvd0Jhc2UqLCBKU0M6Okdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHImLCBQYXNz
UmVmUHRyPEpTQzo6VGFza0NvbnRleHQ+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIH5KU0ds
b2JhbE9iamVjdFRhc2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIEpTR2xvYmFsT2JqZWN0
VGFzayhKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1
ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRh
c2tDb250ZXh0Pik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIE9WRVJSSURFOwotCiAgICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2s+IG1fY2FsbGJhY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCA2MWRhM2Y1ZjEwN2Q2YWE3YjZhNGIwZDk2Y2I1Y2U5MmU4
YjMyMmQ3Li5jYWZjMjE1OGNlNjhlZjRhN2YzODc1OWM5NWY1ZDc5ZjZlODQ2ZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTE4NSw3
ICsxODUsNyBAQCBib29sIEpTRE9NV2luZG93QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5h
YmxlZChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6
OnF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25Q
dHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQogewog
ICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0
IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01X
aW5kb3dCYXNlKil0aGlzT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKKyAgICB0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3RUYXNrPigoSlNET01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCBm
dW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6Ondp
bGxSZW1vdmVGcm9tV2luZG93U2hlbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGZmNWZkYmU2MTBmZGM3
YWYwYmQzY2E0NDA0NzA5ZDU4YmM5Yzc3N2YuLjQyZWY4NzU0ZGQ5MmVhMzA1NDRmY2JlZDc5MTFm
NzQyZmM5NjZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEpTV29y
a2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpT
R2xvYmFsT2JqZWN0Kgogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9F
dmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0
ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCiB7CiAgICAgY29uc3QgSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNE
T01HbG9iYWxPYmplY3QqKXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOwor
ICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFRhc2s+KChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09i
amVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtl
ckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4OWUwYTIzNmMxZTE5ZWRiMDA2MmQ3YzdjNjg0YTkyNWU0
N2M4OTNiLi5jZjY2NDcxN2EwZjhhZWU5ZDI5Yzg4YmU0NGI2MTY4MGEwYjViMWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMzEwMyw3ICszMTAzLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5pc0Nv
bnRleHRUaHJlYWQoKSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBkZWxl
dGUgbV9kYXRhO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7Ci0g
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKERlbGV0ZUNh
bGxiYWNrRGF0YVRhc2s6OmNyZWF0ZShtX2RhdGEpKTtcbiIpOworICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlbGV0ZUNh
bGxiYWNrRGF0YVRhc2s+KG1fZGF0YSkpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
aWZuZGVmIE5ERUJVR1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9kYXRhID0g
MDtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2suY3BwCmluZGV4IDAxMWMwNGQ2MjIzZjE5MTExMjhhZGE5ZjZmMDQ3ZWM1NjBiODUxMzcuLjY0
NmYwNDA3NGRmNWJmZWExMjlmZmY3YTAzM2E3MjY2MDdmN2NlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
LmNwcApAQCAtNDksNyArNDksNyBAQCBKU1Rlc3RDYWxsYmFjazo6fkpTVGVzdENhbGxiYWNrKCkK
ICAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCiAgICAgICAg
IGRlbGV0ZSBtX2RhdGE7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhEZWxl
dGVDYWxsYmFja0RhdGFUYXNrOjpjcmVhdGUobV9kYXRhKSk7CisgICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVsZXRlQ2FsbGJhY2tEYXRhVGFzaz4obV9kYXRhKSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fZGF0YSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
cm9zc1RocmVhZFRhc2suaAppbmRleCA2Y2M1Zjg0MjE1NmQyMGU4MDg2NWNhMzQ4NTYyOGQxYTcy
NTc3ZGQyLi5mZmUyYTcwZTUwM2RkMDM2YTNhYzFlODc1YWY0ODM0YjVhZDExYjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC02MywxMiArNjMsNiBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBDcm9zc1RocmVhZFRhc2sxPFAxLCBNUDE+IENyb3NzVGhyZWFkVGFzazsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQ
YXJhbTE7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSkpOwotICAgIH0K
LQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBw
YXJhbWV0ZXIxKQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFt
ZXRlcjEocGFyYW1ldGVyMSkKQEAgLTkzLDEyICs4Nyw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUg
UGFyYW0yOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUo
TWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBw
YXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3NzVGhy
ZWFkVGFzazIoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0
ZXIyKQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKQEAgLTEyNiwxMiArMTE0LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsKICAgICB0
eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJh
bTM7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVh
ZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7Ci0gICAg
fQotCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazMoTWV0aG9kIG1ldGhvZCwgUGFyYW0x
IHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMykKICAgICAg
ICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEp
CkBAIC0xNjIsMTIgKzE0NCw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3Nz
VGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwogCi0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwg
UGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywg
UGFyYW00IHBhcmFtZXRlcjQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENy
b3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMs
IHBhcmFtZXRlcjQpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrNChN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKICAgICAgICAgOiBtX21ldGhvZChtZXRo
b2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yMDEsMTIgKzE3Nyw2
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQ
ND46OlBhcmFtVHlwZSBQYXJhbTQ7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRh
c2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEs
IFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQs
IFBhcmFtNSBwYXJhbWV0ZXI1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
cm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIz
LCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3Nz
VGhyZWFkVGFzazUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJh
bWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJh
bWV0ZXI1KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKQEAgLTI0MywxMiArMjEzLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQ
YXJhbTY7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFt
NiBwYXJhbWV0ZXI2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1Ro
cmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJh
bWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAg
IENyb3NzVGhyZWFkVGFzazYoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFt
MiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFt
NSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKICAgICAgICAgOiBtX21ldGhvZChtZXRo
b2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yODgsMTIgKzI1Miw2
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQ
Nj46OlBhcmFtVHlwZSBQYXJhbTY7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRh
c2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEs
IFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQs
IFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRo
b2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFt
ZXRlcjUsIHBhcmFtZXRlcjYsIHBhcmFtZXRlcjcpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAg
Q3Jvc3NUaHJlYWRUYXNrNyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0y
IHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01
IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKICAgICAg
ICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEp
CkBAIC0zMzUsMTMgKzI5Myw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3Nz
VGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CiAgICAgdHlwZWRlZiB0eXBl
bmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwogICAgIHR5
cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA4Pjo6UGFyYW1UeXBlIFBhcmFt
ODsKLSAgICAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFt
NiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBh
cmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUs
IHBhcmFtZXRlcjYsIHBhcmFtZXRlcjcsIHBhcmFtZXRlcjgpKTsKLSAgICB9Ci0gICAgCi1wcml2
YXRlOgorCiAgICAgQ3Jvc3NUaHJlYWRUYXNrOChNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1l
dGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1l
dGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCiAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgLCBt
X3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTM1NCwxMiArMzA2LDEyIEBAIHByaXZhdGU6CiAg
ICAgLCBtX3BhcmFtZXRlcjgocGFyYW1ldGVyOCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewogICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFy
YW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJh
bWV0ZXI2LCBtX3BhcmFtZXRlcjcsIG1fcGFyYW1ldGVyOCk7CiAgICAgfQotICAgIAorCiBwcml2
YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CkBAIC0zNzMs
NTUgKzMyNSw1NSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRl
Q2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICByZXR1
cm4gQ3Jvc3NUaHJlYWRUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUs
IE1QMT46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRh
c2sxPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxPj4oCiAgICAgICAg
IG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMj4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
Y3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBj
b25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrMjx0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrMjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5
cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+PigKICAg
ICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAo
Km1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMpLAogICAgIGNv
bnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFt
ZXRlcjMpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazM8dHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6
VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMz46OmNy
ZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2szPHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpU
eXBlLCBNUDM+PigKICAgICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
MT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0
ZXIyKSwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVu
YW1lIE1QND4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRl
Q2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYg
cGFyYW1ldGVyNCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNDx0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAz
LAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46OmNy
ZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s0PHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpU
eXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwg
TVA0Pj4oCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJh
bWV0ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0
aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMm
IHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSkK
IHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBN
UDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46
OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDU+OjpUeXBlLCBNUDU+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAg
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1l
dGVyNCksCkBAIC00MjksMTIgKzM4MSwxMiBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMs
IHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5
cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLVBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVf
cHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAg
ICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywg
TVA0LCBNUDUsIE1QNiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0
IFA1JiBwYXJhbWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKIHsKLSAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrNjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpU
eXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2Pjo6Y3Jl
YXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazY8dHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5
cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBN
UDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj4+KAogICAgICAgICAgICAgbWV0aG9kLAog
ICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
Y29weShwYXJhbWV0ZXI0KSwKQEAgLTQ0MiwxMyArMzk0LDEzIEBAIFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFt
ZSBQNywgdHlwZW5hbWUgTVA3PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcp
LAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3Qg
UDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVy
NSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQogewotICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlw
ZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46
OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAogICAgICAgICB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlw
ZSwgTVA2LAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1Q
Nz46OmNyZWF0ZSgKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBl
LCBNUDc+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFt
ZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCkBAIC00NTcs
MTMgKzQwOSwxMyBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNy
ZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5h
bWUgUDgsIHR5cGVuYW1lIE1QOD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCptZXRob2QpKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcs
IE1QOCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNv
bnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFt
ZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywgY29uc3Qg
UDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazg8dHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUs
IE1QMywKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s4PHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpU
eXBlLCBNUDMsCiAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQs
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKLSAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQNz46OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBl
LCBNUDg+OjpjcmVhdGUoCisgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBl
LCBNUDcsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6VHlwZSwgTVA4Pj4oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJh
bWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggM2VlMjhlZjgzZTJiNzFjNzM3MDU5NmU1ZWI3MDU1NDE4YmFl
MDJiMi4uYTQyMzY1NTI0NmMzNzc0NWRjMTljYTNjZTlhM2IzMDQ1NTRmMDRkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC00NzIyLDcgKzQ3MjIsNyBAQCB2b2lkIERvY3VtZW50OjpwYXJz
ZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZldGNoQ29udHJv
bCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0g
ICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2
ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxBZGRDb25z
b2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDczMyw3ICs0NzMzLDcgQEAgdm9pZCBEb2N1bWVudDo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QK
IHZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQo
KSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQ3NDksMTQgKzQ3NDksMTQgQEAgU2VjdXJpdHlPcmlnaW4q
IERvY3VtZW50Ojp0b3BPcmlnaW4oKSBjb25zdAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4dCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVyZm9ybVRhc2tDb250ZXh0KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGVyZm9ybVRhc2tDb250ZXh0KFdlYWtQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2spCisgICAgUGVyZm9ybVRhc2tDb250ZXh0KFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykK
ICAgICAgICAgOiBkb2N1bWVudFJlZmVyZW5jZShkb2N1bWVudCkKLSAgICAgICAgLCB0YXNrKHRh
c2spCisgICAgICAgICwgdGFzayhzdGQ6Om1vdmUodGFzaykpCiAgICAgewogICAgIH0KIAogICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlOwotICAgIE93blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOwogfTsKIAogdm9pZCBEb2N1bWVudDo6ZGlkUmVj
ZWl2ZVRhc2sodm9pZCogdW50eXBlZENvbnRleHQpCkBAIC00NzcyLDIyICs0NzcyLDIyIEBAIHZv
aWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVudHlwZWRDb250ZXh0KQogCiAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKChwYWdlICYmIHBhZ2UtPmRl
ZmVyc0xvYWRpbmcoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgZG9jdW1lbnQtPm1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjb250ZXh0LT50YXNrLnJl
bGVhc2UoKSk7CisgICAgICAgIGRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
b3ZlKGNvbnRleHQtPnRhc2spKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnRl
eHQtPnRhc2stPnBlcmZvcm1UYXNrKGRvY3VtZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cG9z
dFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNrKQordm9pZCBEb2N1bWVudDo6cG9zdFRhc2soc3Rk
Ojp1bmlxdWVfcHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWNl
aXZlVGFzaywgbmV3IFBlcmZvcm1UYXNrQ29udGV4dChtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQ
dHIoKSwgdGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ssIG5ldyBQ
ZXJmb3JtVGFza0NvbnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHN0ZDo6bW92
ZSh0YXNrKSkpOwogfQogCiB2b2lkIERvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRp
bWVyPERvY3VtZW50PiopCiB7CiAgICAgd2hpbGUgKCFtX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgT3duUHRyPFRhc2s+IHRhc2sgPSBtX3BlbmRpbmdUYXNrc1swXS5yZWxlYXNl
KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrID0gc3RkOjptb3ZlKG1fcGVu
ZGluZ1Rhc2tzWzBdKTsKICAgICAgICAgbV9wZW5kaW5nVGFza3MucmVtb3ZlKDApOwogICAgICAg
ICB0YXNrLT5wZXJmb3JtVGFzayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDI2MjM1MGQ5ZmQ1Y2QzNGEzMDI5NTc3MDZiNjBmNzQzNGMwOGJlOGUuLjIyODhkMDkxNTkyZDE1
ZjY2MTAxZmVkYTU2ZTFjYzU3MjFlYzBhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05Mjks
NyArOTI5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNETlNQcmVmZXRjaEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRE5TUHJlZmV0Y2hFbmFibGVkOyB9CiAgICAgdm9pZCBwYXJzZUROU1By
ZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
b3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
b24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRh
c2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgc3VzcGVu
ZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1l
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CkBAIC0xNTExLDcgKzE1MTEs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9wZW5kaW5nVGFz
a3NUaW1lcjsKLSAgICBWZWN0b3I8T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKIAogI2lmIEVOQUJM
RShJT1NfVEVYVF9BVVRPU0laSU5HKQogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM5MDIwZmVhZTY0MGNiYmU1M2U1MGFjYmEy
NzU0NDI2ZWM1MWQzZTIuLmQxMzVmY2MzYWUwY2YyMWNjNmVjMWFkNTYyZTlmZjI2NWRjYTJhYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAg
LTUwLDEyICs1MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb2Nlc3NNZXNz
YWdlc1Nvb25UYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrPiBjcmVh
dGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQcm9jZXNzTWVzc2FnZXNT
b29uVGFzayk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRShQcm9jZXNzTWVzc2FnZXNTb29u
VGFzayk7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNo
TWVzc2FnZVBvcnRFdmVudHMoKTsKQEAgLTExOSw3ICsxMTYsNyBAQCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIHsKLSAgICBwb3N0VGFz
ayhQcm9jZXNzTWVzc2FnZXNTb29uVGFzazo6Y3JlYXRlKCkpOworICAgIHBvc3RUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc01lc3NhZ2VzU29vblRhc2s+KCkpOwogfQogCiB2b2lkIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggODdiMjdkZGNlYzQ4NGM1
M2NlYTZlNzEwNmYzMmFlY2Q3MmM1OTY2My4uMWUzNWUwNzEwNTdlNzM0NzczNmZlYzNiNTU0ZGU5
ODA1MTViZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
bGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSA9IDA7IC8vIEV4ZWN1dGVzIHRoZSB0
YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lk
IHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPikgPSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFz
ayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgLy8gR2V0cyB0aGUg
bmV4dCBpZCBpbiBhIGNpcmN1bGFyIHNlcXVlbmNlIGZyb20gMSB0byAyXjMxLTEuCiAgICAgaW50
IGNpcmN1bGFyU2VxdWVudGlhbElEKCk7CkBAIC0xNTcsMTggKzE1NywxNCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8QWRkQ29uc29sZU1lc3Nh
Z2VUYXNrPiBjcmVhdGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBPVkVSUklERTsKLSAgICBwcml2YXRlOgogICAgICAgICBBZGRDb25zb2xl
TWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAg
ICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdl
Lmlzb2xhdGVkQ29weSgpKQogICAgICAgICB7CiAgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKKyAgICBw
cml2YXRlOgogICAgICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgICAgICBNZXNzYWdl
TGV2ZWwgbV9sZXZlbDsKICAgICAgICAgU3RyaW5nIG1fbWVzc2FnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGM2Mjg1YjE3MTViYzY3MmY1YzlkODhiMWU5NjRkMTUx
MDEwMTJhY2YuLmRiM2Y1ZDk3NmMzY2E2MDZkOGQ2MGI1MTE2MjI1Zjg2MTc0MGQ3ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzksMTIgKzM5LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIHsKIAogY2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rhc2sg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8RGlzcGF0Y2hDYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFN0
cmluZ0NhbGxiYWNrPiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaXNwYXRjaENhbGxiYWNrVGFzayhjYWxsYmFjaywgZGF0
YSkpOwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUyhEaXNwYXRjaENhbGxiYWNrVGFz
aywgU3RyaW5nQ2FsbGJhY2sqLCBjb25zdCBTdHJpbmcmKTsKIAorcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7CiAgICAg
ICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YSk7CkBAIC02NSw3ICs2Miw3IEBAIHBy
aXZhdGU6CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIGNvbnRl
eHQtPnBvc3RUYXNrKERpc3BhdGNoQ2FsbGJhY2tUYXNrOjpjcmVhdGUodGhpcywgZGF0YSkpOwor
ICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hDYWxsYmFja1Rh
c2s+KHN0YXRpY19jYXN0PFN0cmluZ0NhbGxiYWNrKj4odGhpcyksIGRhdGEpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA3MzU3YjQ1ZmE2YWE3ZDBj
ZDExMzcwYzQ1ZmE2MzdkYjNlZjgwNTU2Li4wMzQ2YjkwMzc2NmQ4Njc0ZTE3YzdiNmE1OWU3NWIx
NWY5ZDI5NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTExOCwxMiArMTExOCw5IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxs
YmFjaygpCiB9CiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
YWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBs
b2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVz
c1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFs
LCBwcm9ncmVzc0RvbmUpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoQ2FsbENh
Y2hlTGlzdGVuZXJUYXNrLCBEb2N1bWVudExvYWRlciomLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCYsIGludCYsIGludCYpOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICAKQEAgLTExNjcsNyArMTE2NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
Ojpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50CiAg
ICAgCiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09IGxvYWRl
cik7CiAKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENhY2hlTGlzdGVuZXJU
YXNrOjpjcmVhdGUobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUp
KTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxDYWxs
Q2FjaGVMaXN0ZW5lclRhc2s+KGxvYWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jl
c3NEb25lKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXRVcGRhdGVTdGF0
dXMoVXBkYXRlU3RhdHVzIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZDI4MDcwNWViNDg3
MTY1OGQ4MzNlMTVjMGMyZjEzODNmODZjZmZiMC4uNTVjNjg1ZWU3ZTkwOTcxMjYwNTk4Y2UxYzQy
MDBlZGVhNjAyN2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTc5LDggKzc5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKIAogICAgIC8v
IFdvcmtlckxvYWRlclByb3h5Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgdmlydHVhbCBib29s
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KTsKKyAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0
cmluZyYpOwogCiAgICAgLy8gV29ya2VyUmVwb3J0aW5nUHJveHkKICAgICB2aXJ0dWFsIHZvaWQg
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvCiAgICAgcmV0dXJu
IG5hbWUgPT0gbV9uYW1lOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1Rv
TG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3Zv
aWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX3dvcmtlckRvY3VtZW50c0xvY2spOwogCkBAIC0xNTIsMTUgKzE1MiwxNSBAQCB2b2lkIFNo
YXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzawogICAgIC8vIEp1c3QgcGljayBhbiBhcmJpdHJhcnkgYWN0aXZlIGRv
Y3VtZW50IGZyb20gdGhlIEhhc2hTZXQgYW5kIHBhc3MgbG9hZCByZXF1ZXN0cyB0byBpdC4KICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHVz
ZXIgY2xvc2VzIHRoZSBkb2N1bWVudCBtaWQtbG9hZCwgdmlhIGEgc2hhZG93IGRvY3VtZW50IG9y
IHNvbWUgb3RoZXIgc29sdXRpb24/CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKihtX3dvcmtl
ckRvY3VtZW50cy5iZWdpbigpKTsKLSAgICBkb2N1bWVudC0+cG9zdFRhc2sodGFzayk7CisgICAg
ZG9jdW1lbnQtPnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29y
a2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiti
b29sIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKGlzQ2xvc2luZygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKLSAgICBtX3RocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKKyAgICBtX3RocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShzdGQ6Om1vdmUodGFzayksIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yNTIsMTggKzI1Miw5IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNsb3NlKCkKIH0K
IAogY2xhc3MgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcmVkV29y
a2VyQ29ubmVjdFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hh
bm5lbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2hhcmVkV29ya2VyQ29u
bmVjdFRhc2soY2hhbm5lbCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJD
b25uZWN0VGFzayhQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKLSAgICAg
ICAgOiBtX2NoYW5uZWwoY2hhbm5lbCkKLSAgICB7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFV
RV9BUkdTKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbD4mKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgUmVmUHRyPE1l
c3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqc2NyaXB0Q29udGV4dCk7CkBA
IC0yNzYsNiArMjY3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5k
aXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgfQogCitwcml2YXRl
OgorICAgIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiBjaGFubmVsKQorICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVsKQorICAgIHsKKyAgICB9
CisKICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7CiB9OwogCkBAIC0z
NjQsNyArMzYxLDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6d29ya2Vy
U2NyaXB0TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiBwcm94eSwKICAgICAgICAgcHJveHkuc2V0
VGhyZWFkKHRocmVhZCk7CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICB9Ci0gICAgcHJv
eHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6
Y3JlYXRlKHBvcnQpKTsKKyAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0
ZDo6bWFrZV91bmlxdWU8U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s+KHBvcnQpKTsKIH0KIAogYm9v
bCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVkV29ya2VycyhEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3IK
ICAgICB9CiAgICAgLy8gSWYgcHJveHkgaXMgYWxyZWFkeSBydW5uaW5nLCBqdXN0IGNvbm5lY3Qg
dG8gaXQgLSBvdGhlcndpc2UsIGtpY2sgb2ZmIGEgbG9hZGVyIHRvIGxvYWQgdGhlIHNjcmlwdC4K
ICAgICBpZiAocHJveHktPnRocmVhZCgpKQotICAgICAgICBwcm94eS0+dGhyZWFkKCktPnJ1bkxv
b3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6Y3JlYXRlKHBvcnQpKTsKKyAg
ICAgICAgcHJveHktPnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1
ZTxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4ocG9ydCkpOwogICAgIGVsc2UgewogICAgICAgICBS
ZWZQdHI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyKHdvcmtlciwgcG9ydCwgcHJveHkucmVsZWFzZSgpKSk7CiAg
ICAgICAgIGxvYWRlci0+bG9hZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKaW5kZXggMGNjNDc4OWIzMDZkOWIxNDhhOWNkMjE3NDdlMDg5MjE1Yjk1
ODYzNy4uODBlOThiMzQ3NWVkOGYxNmY3NGZkNzFmYjI2ZTJkNTM3NWExMzU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NywxMiArNDcsOSBA
QCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiB9CiAKIGNsYXNzIFdvcmtl
ckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgRklOQUwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RXZl
bnREaXNwYXRjaGVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXb3JrZXJF
dmVudFF1ZXVlJiBldmVudFF1ZXVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBFdmVudERpc3BhdGNoZXJUYXNrKGV2ZW50LCBldmVudFF1ZXVlKSk7Ci0gICAgfQorICAgIFdU
Rl9NQUtFX1VOSVFVRV9BUkdTKFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2ss
IFJlZlB0cjxFdmVudD4mLCBXb3JrZXJFdmVudFF1ZXVlJik7CiAKK3B1YmxpYzoKICAgICB2aXJ0
dWFsIH5FdmVudERpc3BhdGNoZXJUYXNrKCkKICAgICB7CiAgICAgICAgIGlmIChtX2V2ZW50KQpA
QCAtOTcsOSArOTQsOSBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKLSAgICBPd25Q
dHI8RXZlbnREaXNwYXRjaGVyVGFzaz4gdGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0
ZShldmVudCwgKnRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudERpc3BhdGNoZXJUYXNr
PiB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXJUYXNrPihldmVudCwgKnRo
aXMpOwogICAgIG1fZXZlbnRUYXNrTWFwLmFkZChldmVudC5yZWxlYXNlKCksIHRhc2suZ2V0KCkp
OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayh0YXNrLnJlbGVhc2UoKSk7
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKaW5kZXggMjkzNzk3NDA1ZDUxNDlhN2Q1ZDc3MDJiNjY4NTNhOGYzYzVl
OWQ4YS4uYjlhZTZjMzJmODIzNDRmNDk4NzA5MGY5ZDY5YTZmODhkYjc1NmI2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTY3LDEyICs2Nyw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsb3NlV29ya2VyR2xvYmFsU2NvcGVU
YXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbG9zZVdvcmtlckdsb2JhbFNjb3Bl
VGFzayk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRShDbG9zZVdvcmtlckdsb2JhbFNjb3Bl
VGFzayk7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC04Miw2
ICs3OSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFz
aygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBDbG9zZVdvcmtlckds
b2JhbFNjb3BlVGFzaygpIHsgfQogfTsKIAogV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlx
dWVfcHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgUGFz
c1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkKICAgICAvLyBBZnRlciBtX2Nsb3NpbmcgaXMg
c2V0LCBhbGwgdGhlIHRhc2tzIGluIHRoZSBxdWV1ZSBjb250aW51ZSB0byBiZSBmZXRjaGVkIGJ1
dCBvbmx5CiAgICAgLy8gdGFza3Mgd2l0aCBpc0NsZWFudXBUYXNrKCk9PXRydWUgd2lsbCBiZSBl
eGVjdXRlZC4KICAgICBtX2Nsb3NpbmcgPSB0cnVlOwotICAgIHBvc3RUYXNrKENsb3NlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrOjpjcmVhdGUoKSk7CisgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1
ZTxDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4oKSk7CiB9CiAKIFdvcmtlck5hdmlnYXRvciog
V29ya2VyR2xvYmFsU2NvcGU6Om5hdmlnYXRvcigpIGNvbnN0CkBAIC0xODAsOSArMTgwLDkgQEAg
Ym9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKFBhc3NP
d25QdHI8VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKHN0ZDo6
dW5pcXVlX3B0cjxUYXNrPiB0YXNrKQogewotICAgIHRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRh
c2sodGFzayk7CisgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1vdmUodGFz
aykpOwogfQogCiBpbnQgV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoUGFzc093blB0cjxT
Y2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQpCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBjb25zdAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAg
IGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1l
c3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4oc291cmNlLCBsZXZl
bCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXYKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2Fs
bFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFz
ayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7
CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNr
Pihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAyNTMyYjkyNmRk
MzNmNjEzZDExN2IyM2NlODQxYmExYWNjMDQ1ZmM0Li5jNWFiN2YzMTUwZTk5NWI1MTU4NDYzZjk0
YWM2YTRjODA0MjQ0MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCkBAIC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBw
b3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sg
b24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRo
ZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICAgICAgLy8g
V29ya2VyR2xvYmFsU2NvcGUKICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHNlbGYoKSB7IHJl
dHVybiB0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxv
YWRlclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgK
aW5kZXggMTg1NDJiNmZlNzU1ZjIwZjY0YTY1ZjUyOWVjMDQ4ODQyNGU2YTQ4YS4uMzA0ODVhNDZm
ZWJiZjNmNjY1ODMyZWFlOTk4ZDg3Mzk0NGViYmQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTG9hZGVyUHJveHkuaApAQCAtNDksMTIgKzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB+V29ya2VyTG9hZGVyUHJveHkoKSB7IH0KIAogICAgICAg
ICAvLyBQb3N0cyBhIHRhc2sgdG8gdGhlIHRocmVhZCB3aGljaCBydW5zIHRoZSBsb2FkaW5nIGNv
ZGUgKG5vcm1hbGx5LCB0aGUgbWFpbiB0aHJlYWQpLgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgPSAwOwogCiAgICAgICAgIC8vIFBvc3Rz
IGNhbGxiYWNrcyBmcm9tIGxvYWRpbmcgY29kZSB0byB0aGUgV29ya2VyR2xvYmFsU2NvcGUuIFRo
ZSAnbW9kZScgaXMgdXNlZCB0byBkaWZmZXJlbnRpYXRlCiAgICAgICAgIC8vIHNwZWNpZmljIHN5
bmNocm9ub3VzIGxvYWRpbmcgcmVxdWVzdHMgc28gdGhleSBjYW4gYmUgJ25lc3RlZCcsIHBlciBz
cGVjLgogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhc2sgd2FzIHBvc3RlZCBzdWNj
ZXNzZnVsbHkuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0
IFN0cmluZyYgbW9kZSkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKaW5kZXggMjAwYzA4ZTUzZmRkMzcyNjFkODJlMjMzZDEyODE2MzYzOTZhMmU5YS4u
YTllNTIyYzM2ZWI5OGRlODY4MGUwY2Y0YzA0Y2JjOTdiNTAyOTY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDE5ICs1NSw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29w
ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayhtZXNzYWdlLCBjaGFubmVs
cykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNr
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICAgICAgOiBtX21lc3NhZ2UobWVz
c2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQotICAgIHsKLSAgICB9CisgICAg
V1RGX01BS0VfVU5JUVVFX0FSR1MoTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzaywgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC0+aXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKQEAgLTc4LDI1ICs2OCwyMCBAQCBwcml2YXRlOgogICAgIH0KIAogcHJpdmF0ZToK
KyAgICBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBj
aGFubmVscykKKyAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgLCBtX2NoYW5u
ZWxzKGNoYW5uZWxzKQorICAgIHsKKyAgICB9CisKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBt
X2NoYW5uZWxzOwogfTsKIAogY2xhc3MgTWVzc2FnZVdvcmtlclRhc2sgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVzc2FnZSwgY2hhbm5lbHMsIG1l
c3NhZ2luZ1Byb3h5KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE1lc3NhZ2VXb3JrZXJUYXNr
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1l
c3NhZ2luZ1Byb3h5KQotICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAsIG1f
Y2hhbm5lbHMoY2hhbm5lbHMpCi0gICAgICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQ
cm94eSkKLSAgICB7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKE1lc3NhZ2VXb3Jr
ZXJUYXNrLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYsIFdvcmtlck1lc3NhZ2luZ1Byb3h5Kik7CiAKK3B1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCkKICAgICB7CiAgICAgICAgIFdvcmtlciogd29ya2VyT2JqZWN0ID0gbV9t
ZXNzYWdpbmdQcm94eS0+d29ya2VyT2JqZWN0KCk7CkBAIC0xMDgsMjggKzkzLDIyIEBAIHByaXZh
dGU6CiAgICAgfQogCiBwcml2YXRlOgorICAgIE1lc3NhZ2VXb3JrZXJUYXNrKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5
KQorICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAsIG1fY2hhbm5lbHMoY2hh
bm5lbHMpCisgICAgICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICB7
CisgICAgfQorCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwog
ICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKICAgICBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKIGNsYXNzIFdvcmtlckV4
Y2VwdGlvblRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyRXhjZXB0aW9uVGFzaz4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdp
bmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyRXhjZXB0
aW9uVGFzayhlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
LCBtZXNzYWdpbmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXb3JrZXJFeGNlcHRp
b25UYXNrKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtZXNzYWdpbmdQcm94eSkKLSAgICAgICAgOiBtX2Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCkpCi0gICAgICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCi0gICAg
ICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIG1fc291cmNlVVJM
KHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSkKLSAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1l
c3NhZ2luZ1Byb3h5KQotICAgIHsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoV29y
a2VyRXhjZXB0aW9uVGFzaywgY29uc3QgU3RyaW5nJiwgaW50JiwgaW50JiwgY29uc3QgU3RyaW5n
JiwgV29ya2VyTWVzc2FnaW5nUHJveHkqKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAg
ICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJPYmplY3Qo
KTsKQEAgLTE0NCw2ICsxMjMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbnRleHQtPnJl
cG9ydEV4Y2VwdGlvbihtX2Vycm9yTWVzc2FnZSwgbV9saW5lTnVtYmVyLCBtX2NvbHVtbk51bWJl
ciwgbV9zb3VyY2VVUkwsIDApOwogICAgIH0KIAorcHJpdmF0ZToKKyAgICBXb3JrZXJFeGNlcHRp
b25UYXNrKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgOiBtX2Vycm9yTWVzc2FnZShlcnJvck1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCisgICAg
ICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQorICAgICAgICAsIG1fc291cmNlVVJM
KHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1l
c3NhZ2luZ1Byb3h5KQorICAgIHsKKyAgICB9CisKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7
CiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CkBAIC0xNTIs
MTAgKzE0MSwxMiBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVEZXN0
cm95ZWRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAgIFdU
Rl9NQUtFX1VOSVFVRV9BUkdTKFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaywgV29ya2Vy
TWVzc2FnaW5nUHJveHkqKTsKKwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBt
ZXNzYWdpbmdQcm94eSkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkVGFzayhtZXNzYWdpbmdQcm94eSkpOworICAgICAgICBtX21lc3Nh
Z2luZ1Byb3h5LT53b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMTY0LDE5ICsxNTUsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQot
ICAgIHsKLSAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95
ZWRJbnRlcm5hbCgpOwotICAgIH0KLQogICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3Nh
Z2luZ1Byb3h5OwogfTsKIAogY2xhc3MgV29ya2VyVGVybWluYXRlVGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUyhXb3Jr
ZXJUZXJtaW5hdGVUYXNrLCBXb3JrZXJNZXNzYWdpbmdQcm94eSopOworCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGVybWluYXRlVGFzaz4gY3JlYXRlKFdvcmtlck1lc3Nh
Z2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlclRlcm1pbmF0ZVRhc2sobWVzc2FnaW5nUHJveHkpKTsKKyAgICAgICAgbV9tZXNz
YWdpbmdQcm94eS0+dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xODUsMTkgKzE3MywxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewot
ICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwot
ICAgIH0KLQogICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsK
IAogY2xhc3MgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKFdvcmtlclRo
cmVhZEFjdGl2aXR5UmVwb3J0VGFzaywgV29ya2VyTWVzc2FnaW5nUHJveHkqLCBib29sLCBib29s
Jik7CisKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRBY3Rpdml0
eVJlcG9ydFRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHks
IGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQorICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNr
KG1lc3NhZ2luZ1Byb3h5LCBjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7
CisgICAgICAgIG1fbWVzc2FnaW5nUHJveHktPnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFs
KG1fY29uZmlybWluZ01lc3NhZ2UsIG1faGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0yMDgsMjEgKzE5MywyMSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAg
ewotICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5h
bChtX2NvbmZpcm1pbmdNZXNzYWdlLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSk7Ci0gICAgfQotCiAg
ICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiAgICAgYm9vbCBtX2Nv
bmZpcm1pbmdNZXNzYWdlOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nQWN0aXZpdHk7CiB9OwogCiBj
bGFzcyBQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoUG9zdE1lc3NhZ2VU
b1BhZ2VJbnNwZWN0b3JUYXNrLCBXb3JrZXJNZXNzYWdpbmdQcm94eSosIGNvbnN0IFN0cmluZyYp
OworCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUb1BhZ2VJbnNw
ZWN0b3JUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
b3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2sobWVzc2FnaW5nUHJveHksIG1lc3NhZ2UpKTsK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICBpZiAoV29ya2VyR2xvYmFsU2NvcGVQcm94
eTo6UGFnZUluc3BlY3RvciogcGFnZUluc3BlY3RvciA9IG1fbWVzc2FnaW5nUHJveHktPm1fcGFn
ZUluc3BlY3RvcikKKyAgICAgICAgICAgIHBhZ2VJbnNwZWN0b3ItPmRpc3BhdGNoTWVzc2FnZUZy
b21Xb3JrZXIobV9tZXNzYWdlKTsKKyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIzMiwy
MyArMjE3LDE5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKLSAgICB7Ci0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICAgICAgaWYgKFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0
b3IqIHBhZ2VJbnNwZWN0b3IgPSBtX21lc3NhZ2luZ1Byb3h5LT5tX3BhZ2VJbnNwZWN0b3IpCi0g
ICAgICAgICAgICBwYWdlSW5zcGVjdG9yLT5kaXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKG1fbWVz
c2FnZSk7Ci0jZW5kaWYKLSAgICB9Ci0KICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNz
YWdpbmdQcm94eTsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAogY2xhc3MgTm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUyhOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNr
LCBib29sJik7CisKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxOb3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2VUYXNrPiBjcmVhdGUoYm9vbCBpc09uTGluZSkKKyAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayhpc09u
TGluZSkpOworICAgICAgICBBdG9taWNTdHJpbmcgZXZlbnROYW1lID0gbV9pc09uTGluZSA/IGV2
ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQ7CisgICAg
ICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdv
cmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0yNTcsMTMgKzIzOCw2IEBAIHByaXZhdGU6CiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
ICpjb250ZXh0KQotICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNP
bkxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2
ZW50OwotICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0
aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZh
bHNlKSk7Ci0gICAgfQotCiAgICAgYm9vbCBtX2lzT25MaW5lOwogfTsKIApAQCAtMzA3LDEyICsy
ODEsMTIgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3QKICAgICBSZWZQdHI8RGVkaWNhdGVkV29y
a2VyVGhyZWFkPiB0aHJlYWQgPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRV
UkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsICp0aGlzLCAqdGhpcywgc3RhcnRN
b2RlLCBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJlY2F0ZWRIZWFkZXIo
KSwgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyVHlw
ZSgpLCBkb2N1bWVudC0+dG9wT3JpZ2luKCkpOwogICAgIHdvcmtlclRocmVhZENyZWF0ZWQodGhy
ZWFkKTsKICAgICB0aHJlYWQtPnN0YXJ0KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQo
KSwgdGhpcywgc2NyaXB0VVJMKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0
YXJ0V29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBzdGF0
aWNfY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eSo+KHRoaXMpLCBzY3JpcHRVUkwpOwogfQogCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMs
IHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVdvcmtlclRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzLCBzdGF0aWNfY2Fz
dDxXb3JrZXJNZXNzYWdpbmdQcm94eSo+KHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCkBAIC0zMjIsMzEgKzI5NiwzMSBAQCB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkUwogCiAgICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1l
ZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
ayhNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMp
KTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdv
cmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAg
IG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrPihtZXNzYWdlLCBjaGFubmVscykpOwogfQogCi1ib29sIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQorYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
aywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChtX3dvcmtlclRocmVhZCk7Ci0gICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7Cisg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRh
c2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IHRhc2spCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVy
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewog
ICAgIC8vIEZJWE1FOiBJbiBjYXNlIG9mIG5lc3RlZCB3b3JrZXJzLCB0aGlzIHNob3VsZCBnbyBk
aXJlY3RseSB0byB0aGUgcm9vdCBEb2N1bWVudCBjb250ZXh0LgogICAgIEFTU0VSVChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayh0YXNrKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0
aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBz
b3VyY2VVUkwsIHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRXhjZXB0aW9uVGFzaz4oZXJyb3JNZXNzYWdlLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2Fn
aW5nUHJveHkqPih0aGlzKSkpOwogfQogCiBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VU
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtZXNzYWdpbmdQcm94eSwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQpAQCAtMzc0LDkgKzM0OCw5IEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0
cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+CiAgICAgICAgIG1fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQgPSB0YXNrQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5
ID0gdHJ1ZTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGluZyBhY3Rpdml0
eS4KIAorICAgICAgICBhdXRvIHF1ZXVlZEVhcmx5VGFza3MgPSBzdGQ6Om1vdmUobV9xdWV1ZWRF
YXJseVRhc2tzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsg
KytpKQotICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1
ZXVlZEVhcmx5VGFza3NbaV0ucmVsZWFzZSgpKTsKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tz
LmNsZWFyKCk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
KHN0ZDo6bW92ZShxdWV1ZWRFYXJseVRhc2tzW2ldKSk7CiAgICAgfQogfQogCkBAIC0zOTQsNyAr
MzY4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hh
bmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgaWYgKCFtX3dvcmtlclRocmVhZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhOb3RpZnlOZXR3
b3JrU3RhdGVDaGFuZ2VUYXNrOjpjcmVhdGUoaXNPbmxpbmUpKTsKKyAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZ5TmV0d29ya1N0YXRl
Q2hhbmdlVGFzaz4oaXNPbmxpbmUpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
d29ya2VyT2JqZWN0RGVzdHJveWVkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBwcm94eSkKQEAgLTQ2NSwxNCArNDM5LDE0IEBAIHZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZCgpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3Jr
ZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2s6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNj
b3BlRGVzdHJveWVkVGFzaz4oc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPih0aGlz
KSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVy
bmFsKCkgb24gY29udGV4dCdzIHRocmVhZC4KIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6d29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKQogewogICAgIC8vIEV4ZWN1dGVzIHRlcm1pbmF0
ZVdvcmtlckdsb2JhbFNjb3BlKCkgb24gcGFyZW50IGNvbnRleHQncyB0aHJlYWQuCi0gICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJUZXJtaW5hdGVUYXNrOjpjcmVh
dGUodGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJUZXJtaW5hdGVUYXNrPihzdGF0aWNfY2FzdDxXb3JrZXJNZXNzYWdp
bmdQcm94eSo+KHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQpAQCAtNTAzLDE5ICs0NzcsMTkgQEAgdm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvUGFnZUluc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s6
OmNyZWF0ZSh0aGlzLCBtZXNzYWdlKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaz4o
c3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPih0aGlzKSwgbWVzc2FnZSkpOwogfQog
I2VuZGlmCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3Jl
YXRlKHRoaXMsIHRydWUsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOworICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRBY3Rpdml0
eVJlcG9ydFRhc2s+KHN0YXRpY19jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4odGhpcyksIHRy
dWUsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQZW5k
aW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKIHZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtl
clRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRoaXMsIGZhbHNlLCBoYXNQZW5kaW5n
QWN0aXZpdHkpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPihzdGF0aWNfY2FzdDxX
b3JrZXJNZXNzYWdpbmdQcm94eSo+KHRoaXMpLCBmYWxzZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7
CiAgICAgLy8gV2lsbCBleGVjdXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKCkgb24g
Y29udGV4dCdzIHRocmVhZC4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oCmluZGV4IGI2YjQ5ZjI5NTBkZjkzNjRmYmU4ZGYzMmY3ZjFiYjQ5ODY0
ZjhiNGUuLjgwMmJjYzRkMmZmN2UzZjI2MDRjMzIzZWEwZGUwNTY5YzQ3OTA2YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTgxLDggKzgx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBX
b3JrZXJMb2FkZXJQcm94eS4KICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIG9u
IGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxvYWRpbmcKICAgICAgICAgLy8gcmVxdWVz
dHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8gV29ya2VyR2xvYmFsU2NvcGUuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpIE9WRVJSSURFOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4pIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgT1ZFUlJJREU7CiAKICAgICAgICAg
dm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFk
Pik7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Ym9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CiAKLSAgICAgICAgVmVjdG9yPE93blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUg
cXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KKyAgICAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4g
bV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUn
cyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAg
ICBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yKiBtX3BhZ2VJbnNwZWN0b3I7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGY0
YTJlZmM4NjM3ZDYyZmUyMDY2N2MzYzFjZDAwOGY5NjgyNDMwYmYuLmVjMzU5YzUyMzgzMjNjNDM5
NjdkZjRlZjA1YjJmNDU1MWY1ZjU4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcApAQCAtMTk2LDI0ICsxOTYsMjQgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjp0ZXJt
aW5hdGUoKQogICAgIG1fbWVzc2FnZVF1ZXVlLmtpbGwoKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5M
b29wOjpwb3N0VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRh
c2spCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIHBvc3RUYXNrRm9yTW9kZSh0YXNr
LCBkZWZhdWx0TW9kZSgpKTsKKyAgICBwb3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRhc2spLCBk
ZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1p
bmF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit2b2lk
IFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFw
cGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKHRhc2ssIGRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5
KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKFRhc2s6OmNyZWF0ZShzdGQ6
Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpKTsKIH0KIAotdm9pZCBX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlclJ1bkxv
b3A6OnBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVl
LmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5pc29sYXRlZENvcHkoKSkpOworICAgIG1f
bWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUoc3RkOjptb3ZlKHRhc2spLCBtb2RlLmlz
b2xhdGVkQ29weSgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJSdW5Mb29wOjpUYXNr
PiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitzdGQ6OnVuaXF1ZV9wdHI8
V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPihuZXcgVGFzayh0YXNr
LCBtb2RlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPihuZXcgVGFzayhzdGQ6
Om1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJm
b3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQpAQCAtMjIzLDggKzIyMyw4IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6VGFz
azo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCwgU2NyaXB0RXhlY3V0
CiAgICAgICAgIG1fdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7CiB9CiAKLVdvcmtlclJ1bkxv
b3A6OlRhc2s6OlRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi0gICAgOiBtX3Rhc2sodGFzaykKK1dvcmtlclJ1bkxv
b3A6OlRhc2s6OlRhc2soc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6IG1fdGFzayhzdGQ6Om1vdmUodGFz
aykpCiAgICAgLCBtX21vZGUobW9kZS5pc29sYXRlZENvcHkoKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggM2RlZTVhNTNmMWRhMjVmOTdjNTIyYzViNjRj
ZTlhNjYzM2M3NjRjZS4uYTcyNjQ2ZjI1MDcyNjc4ZTc4NTA4MDgxNjQ5MjBjMTc2YjJlYWVjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTYwLDkgKzYwLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgICAgICBi
b29sIHRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VRdWV1ZS5raWxsZWQoKTsg
fQogCi0gICAgICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoUGFzc093blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tG
b3JNb2RlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0
cmluZyYgbW9kZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1p
bmF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAg
ICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICAgICAgdW5zaWduZWQg
bG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJZDsgfQogCkBAIC03MSwx
NSArNzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBUYXNrIHsKICAg
ICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPiBjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
VGFzaz4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAgIH5UYXNrKCkgeyB9CiAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICAg
ICAgICAgIHZvaWQgcGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgVGFzayhQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSk7CisgICAgICAgICAgICBUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgCi0gICAgICAgICAg
ICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gbV90YXNrOworICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IG1fdGFzazsK
ICAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA2NzMzZDE0MTA4MzJmNTQzNmJmNDdkMDgxZjk3
YWYxZWZmZDNmNDk2Li42MThkN2U4Y2ExYmQwMjE1ODU0ZTU5YTAyNGNiYTEwYTY4Y2FkN2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xODksMTIgKzE4OSw5
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogfQogCiBjbGFzcyBXb3JrZXJU
aHJlYWRTaHV0ZG93bkZpbmlzaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkU2h1dGRv
d25GaW5pc2hUYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2soKSk7Ci0gICAgfQorICAgIFdURl9NQUtF
X1VOSVFVRShXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2spOwogCitwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0
LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMjA3LDE1ICsyMDQsMTUgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCitwcml2YXRlOgorICAgIFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzaygp
IHsgfQogfTsKIAogY2xhc3MgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrKCkp
OwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUUoV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRh
c2spOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgKmNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMjQzLDEw
ICsyNDAsMTMgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFN0aWNrIGEgc2h1dGRvd24gY29tbWFu
ZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28gdGhhdCB3ZSBkZWFsCiAgICAgICAgIC8vIHdp
dGggYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAgICAg
ICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNrKFdvcmtlclRocmVhZFNodXRkb3duRmluaXNo
VGFzazo6Y3JlYXRlKCkpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+KCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorCitwcml2YXRlOgorICAgIFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrKCkgeyB9CiB9
OwogCiB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCkBAIC0yNjEsMTQgKzI2MSwyMCBAQCB2b2lk
IFdvcmtlclRocmVhZDo6c3RvcCgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChtX3dvcmtlckdsb2JhbFNjb3BlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBtX3J1bkxvb3Au
cG9zdFRhc2tBbmRUZXJtaW5hdGUoV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OmNyZWF0
ZSgpKTsKKyAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKIH0KIAogY2xhc3MgUmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKKyAgICBXVEZfTUFLRV9VTklRVUUoUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5VGFz
ayk7CisKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIE9WRVJSSURFIHsgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnko
KTsgfQorCitwcml2YXRlOgorICAgIFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2soKSB7
IH0KIH07CiAKIHZvaWQgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJ
bkFsbFRocmVhZHMoKQpAQCAtMjc3LDcgKzI4Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpyZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKQogICAgIEhhc2hTZXQ8V29ya2Vy
VGhyZWFkKj4mIHRocmVhZHMgPSB3b3JrZXJUaHJlYWRzKCk7CiAgICAgSGFzaFNldDxXb3JrZXJU
aHJlYWQqPjo6aXRlcmF0b3IgZW5kID0gdGhyZWFkcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8
V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9yIGl0ID0gdGhyZWFkcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgICgqaXQpLT5ydW5Mb29wKCkucG9zdFRhc2soYWRvcHRQdHIobmV3IFJl
bGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2spKTsKKyAgICAgICAgKCppdCktPnJ1bkxvb3Ao
KS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRh
c2s+KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="238944"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216362</attachid>
            <date>2013-11-07 23:38:39 -0800</date>
            <delta_ts>2013-11-08 11:30:38 -0800</delta_ts>
            <desc>Another try</desc>
            <filename>sectask.p</filename>
            <type>text/plain</type>
            <size>79790</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCmluZGV4IGYyMTc4YjguLmMxYjU5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAtMTMxLDcg
KzEzMSw2IEBACiAjaWYgR0NDX1ZFUlNJT05fQVRfTEVBU1QoNCwgMywgMCkKICNkZWZpbmUgV1RG
X0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9SVkFMVUVfUkVGRVJFTkNFUyAxCiAjZGVmaW5lIFdURl9D
T01QSUxFUl9TVVBQT1JUU19DWFhfU1RBVElDX0FTU0VSVCAxCi0jZGVmaW5lIFdURl9DT01QSUxF
Ul9TVVBQT1JUU19DWFhfVkFSSUFESUNfVEVNUExBVEVTIDEKICNkZWZpbmUgV1RGX0NPTVBJTEVS
X1NVUFBPUlRTX0NYWF9BVVRPX1RZUEUgMQogI2VuZGlmCiAjaWYgR0NDX1ZFUlNJT05fQVRfTEVB
U1QoNCwgNCwgMCkKQEAgLTE0OSw2ICsxNDgsOSBAQAogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBp
Z25vcmVkICItV3VudXNlZC1sb2NhbC10eXBlZGVmcyIKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NV
UFBPUlRTX0NYWF9PVkVSUklERV9DT05UUk9MIDEKICNlbmRpZgorI2lmIEdDQ19WRVJTSU9OX0FU
X0xFQVNUKDQsIDgsIDApCisjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfVkFSSUFE
SUNfVEVNUExBVEVTIDEKKyNlbmRpZgogI2VuZGlmIC8qIGRlZmluZWQoX19HWFhfRVhQRVJJTUVO
VEFMX0NYWDBYX18pIHx8IChkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cyA+PSAy
MDExMDNMKSAqLwogI2VuZGlmIC8qIENPTVBJTEVSKEdDQykgKi8KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMu
aAppbmRleCBhYWVmZjUwLi42ZDhmYjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtNDQyLDYg
KzQ0Miw3MSBAQCBuYW1lc3BhY2Ugc3RkIHsKICNlbmRpZgogfQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8Y2xhc3MgVD4KK3N0cnVjdCBNYWtlVW5pcXVlRnJpZW5kMCB7CisgICAgdHlw
ZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8VD4oVHlwZSkoKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzIEExPgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQxIHsKKyAgICB0eXBlZGVmIHN0ZDo6
dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEExLCBjbGFzcyBBMj4KK3N0cnVjdCBNYWtlVW5pcXVlRnJpZW5kMiB7CisgICAgdHlwZWRlZiBz
dGQ6OnVuaXF1ZV9wdHI8VD4oVHlwZSkoQTEmJiwgQTImJik7Cit9OworCit0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgorc3RydWN0IE1ha2VVbmlxdWVGcmll
bmQzIHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmLCBB
MyYmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3Mg
QTMsIGNsYXNzIEE0Pgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQ0IHsKKyAgICB0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmLCBBMyYmLCBBNCYmKTsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBj
bGFzcyBBNT4KK3N0cnVjdCBNYWtlVW5pcXVlRnJpZW5kNSB7CisgICAgdHlwZWRlZiBzdGQ6OnVu
aXF1ZV9wdHI8VD4oVHlwZSkoQTEmJiwgQTImJiwgQTMmJiwgQTQmJiwgQTUmJik7Cit9OworCit0
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwg
Y2xhc3MgQTUsIGNsYXNzIEE2Pgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQ2IHsKKyAgICB0eXBl
ZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmLCBBMyYmLCBBNCYmLCBBNSYm
LCBBNiYmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xh
c3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3Pgorc3RydWN0IE1h
a2VVbmlxdWVGcmllbmQ3IHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShB
MSYmLCBBMiYmLCBBMyYmLCBBNCYmLCBBNSYmLCBBNiYmLCBBNyYmKTsKK307CisKK3RlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBB
NSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KK3N0cnVjdCBNYWtlVW5pcXVlRnJpZW5k
OCB7CisgICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8VD4oVHlwZSkoQTEmJiwgQTImJiwgQTMm
JiwgQTQmJiwgQTUmJiwgQTYmJiwgQTcmJiwgQTgmJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNz
IEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5Pgorc3RydWN0IE1ha2VVbmlxdWVGcmll
bmQ5IHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmLCBB
MyYmLCBBNCYmLCBBNSYmLCBBNiYmLCBBNyYmLCBBOCYmLCBBOSYmKTsKK307CisKK3RlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBB
NSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTksIGNsYXNzIEExMD4KK3N0
cnVjdCBNYWtlVW5pcXVlRnJpZW5kMTAgeworICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+
KFR5cGUpKEExJiYsIEEyJiYsIEEzJiYsIEE0JiYsIEE1JiYsIEE2JiYsIEE3JiYsIEE4JiYsIEE5
JiYsIEExMCYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisvLyBGSVhNRTogQmV0dGVy
IHNvbHV0aW9uczoKKy8vICAgIGZyaWVuZCBkZWNsdHlwZShzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TmFtZT4pIHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NOYW1lPjsKKy8vICAgIGZyaWVuZCBkZWNsdHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTmFtZSwgX19WQV9BUkdTX18+KSBzdGQ6Om1ha2VfdW5p
cXVlPENsYXNzTmFtZT47CisjZGVmaW5lIFdURl9NQUtFX1VOSVFVRShDbGFzc05hbWUpIGZyaWVu
ZCBXVEY6Ok1ha2VVbmlxdWVGcmllbmQwPENsYXNzTmFtZT46OlR5cGUgc3RkOjptYWtlX3VuaXF1
ZTxDbGFzc05hbWU+OworI2RlZmluZSBXVEZfTUFLRV9VTklRVUVfQVJHUyhOQVJHUywgQ2xhc3NO
YW1lLCAuLi4pIGZyaWVuZCBXVEY6Ok1ha2VVbmlxdWVGcmllbmQgIyMgTkFSR1M8Q2xhc3NOYW1l
LCBfX1ZBX0FSR1NfXz46OlR5cGUgc3RkOjptYWtlX3VuaXF1ZTxDbGFzc05hbWUsIF9fVkFfQVJH
U19fPjsKKwogdXNpbmcgV1RGOjpLQjsKIHVzaW5nIFdURjo6TUI7CiB1c2luZyBXVEY6Omluc2Vy
dEludG9Cb3VuZGVkVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90
YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oCmluZGV4IGZmY2U3YjYuLjA3ZGQ5Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VFcnJvckNhbGxiYWNrLmgK
QEAgLTQ5LDEyICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQo
RE9NQ29yZUV4Y2VwdGlvbiopID0gMDsKIAogICAgIGNsYXNzIENhbGxiYWNrVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPENhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U3RvcmFnZUVy
cm9yQ2FsbGJhY2s+IGNhbGxiYWNrLCBFeGNlcHRpb25Db2RlIGVjKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGxiYWNrVGFzayhjYWxsYmFjaywgZWMpKTsK
LSAgICAgICAgfQorICAgICAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygyLCBDYWxsYmFja1Rhc2ss
IFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2FsbGJhY2s+JiwgRXhjZXB0aW9uQ29kZSYpOwogCisg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9TdG9yYWdlSW5mby5jcHAKaW5kZXggNjI3NWVmOS4uM2MzNGJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlVc2FnZUFuZFF1b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICBTdG9yYWdlUXVvdGEqIHN0b3JhZ2VRdW90YSA9
IGdldFN0b3JhZ2VRdW90YShzdG9yYWdlVHlwZSk7CiAgICAgaWYgKCFzdG9yYWdlUXVvdGEpIHsK
ICAgICAgICAgLy8gVW5rbm93biBzdG9yYWdlIHR5cGUgaXMgcmVxdWVzdGVkLgotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2Fs
bGJhY2tUYXNrOjpjcmVhdGUoZXJyb3JDYWxsYmFjaywgTk9UX1NVUFBPUlRFRF9FUlIpKTsKKyAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxT
dG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrPihlcnJvckNhbGxiYWNrLCBOT1RfU1VQ
UE9SVEVEX0VSUikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHN0b3JhZ2VRdW90YS0+
cXVlcnlVc2FnZUFuZFF1b3RhKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU3RvcmFnZUluZm86OnJl
cXVlc3RRdW90YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBpCiAgICAgU3RvcmFnZVF1b3RhKiBzdG9yYWdlUXVvdGEgPSBnZXRTdG9yYWdlUXVvdGEoc3Rv
cmFnZVR5cGUpOwogICAgIGlmICghc3RvcmFnZVF1b3RhKSB7CiAgICAgICAgIC8vIFVua25vd24g
c3RvcmFnZSB0eXBlIGlzIHJlcXVlc3RlZC4KLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soU3RvcmFnZUVycm9yQ2FsbGJhY2s6OkNhbGxiYWNrVGFzazo6Y3JlYXRlKGVy
cm9yQ2FsbGJhY2ssIE5PVF9TVVBQT1JURURfRVJSKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZUVycm9yQ2FsbGJhY2s6
OkNhbGxiYWNrVGFzaz4oZXJyb3JDYWxsYmFjaywgTk9UX1NVUFBPUlRFRF9FUlIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBzdG9yYWdlUXVvdGEtPnJlcXVlc3RRdW90YShzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBuZXdRdW90YUluQnl0ZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCmluZGV4IDg2OWM4NWYuLjg2NTY4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC04NSwxMiArODUsOSBAQCBEYXRhYmFz
ZTo6RGF0YWJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRDb250ZXh0PiBkYXRhYmFzZUNv
bnRleHQsCiB9CiAKIGNsYXNzIERlcmVmQ29udGV4dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVyZWZD
b250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29u
dGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVyZWZDb250ZXh0VGFz
ayhjb250ZXh0KSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDEsIERlcmVmQ29u
dGV4dFRhc2ssIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4pOwogCitwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQgPT0g
bV9jb250ZXh0KTsKQEAgLTEwNCw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIApAQCAtMTE2LDcgKzExMyw3IEBAIERhdGFi
YXNlOjp+RGF0YWJhc2UoKQogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CiAgICAgICAgIAotICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKSkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlcmVmQ29udGV4dFRhc2s+KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkpKTsKICAgICB9CiB9CiAKQEAgLTIwNCwxMiAr
MjAxLDkgQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1IKIH0KIAogY2xhc3MgRGVsaXZlclBlbmRp
bmdDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2sodHJh
bnNhY3Rpb24pKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMSwgRGVsaXZlclBl
bmRpbmdDYWxsYmFja1Rhc2ssIFNRTFRyYW5zYWN0aW9uKiYpOwogCitwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKICAg
ICAgICAgbV90cmFuc2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwpAQCAtMjI2LDcg
KzIyMCw3IEBAIHByaXZhdGU6CiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25D
YWxsYmFjayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzazo6Y3JlYXRl
KHRyYW5zYWN0aW9uKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhz
dGQ6Om1ha2VfdW5pcXVlPERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrPih0cmFuc2FjdGlvbikp
OwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlTmFtZXMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwCmluZGV4IDRlZWQ2ZTIuLjExY2EzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTExOCwx
MiArMTE4LDkgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZh
aWxhYmxlKQogfQogCiBjbGFzcyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERh
dGFiYXNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjcmVhdGlvbkNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRhYmFzZUNyZWF0
aW9uQ2FsbGJhY2tUYXNrKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7Ci0gICAgfQorICAg
IFdURl9NQUtFX1VOSVFVRV9BUkdTKDIsIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2ssIFJl
ZlB0cjxEYXRhYmFzZT4mLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+Jik7CiAKK3B1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
CiAgICAgewogICAgICAgICBtX2NyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YWJh
c2UuZ2V0KCkpOwpAQCAtMzI5LDcgKzMyNiw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFi
YXNlTWFuYWdlcjo6b3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRlCiAK
ICAgICBpZiAoYmFja2VuZC0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7CiAg
ICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJh
Y2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwotICAgICAgICBkYXRh
YmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRhYmFzZUNyZWF0aW9u
Q2FsbGJhY2tUYXNrOjpjcmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKKyAgICAg
ICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtl
X3VuaXF1ZTxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrPihkYXRhYmFzZSwgY3JlYXRpb25D
YWxsYmFjaykpOwogICAgIH0KIAogICAgIEFTU0VSVChkYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKaW5kZXggZjky
YzM0Zi4uNjYyMmJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTeW5jLmNwcApAQCAtMTU4LDI3ICsxNTgsNiBAQCB2b2lkIERhdGFiYXNl
U3luYzo6bWFya0FzRGVsZXRlZEFuZENsb3NlKCkKICAgICAvLyBGSVhNRTogbmVlZCB0byBkbyBz
b21ldGhpbmcgc2ltaWxhciB0byBjbG9zZUltbWVkaWF0ZWx5KCksIGJ1dCBpbiBhIHN5bmMgd2F5
CiB9CiAKLWNsYXNzIENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2s+IGNyZWF0ZShQYXNz
UmVmUHRyPERhdGFiYXNlU3luYz4gZGF0YWJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzayhkYXRhYmFzZSkp
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKLSAgICB7Ci0gICAgICAgIG1fZGF0YWJhc2UtPmNsb3NlSW1tZWRpYXRlbHkoKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRU
YXNrKFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSkKLSAgICAgICAgOiBtX2RhdGFi
YXNlKGRhdGFiYXNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RGF0YWJhc2VTeW5jPiBt
X2RhdGFiYXNlOwotfTsKLQogdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkoKQog
ewogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENh
bGxiYWNrV3JhcHBlci5oCmluZGV4IGMxODRhMzcuLjUzNGRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb250ZXh0ID0gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICBjYWxsYmFj
ayA9IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgfQotICAgICAgICBj
b250ZXh0LT5wb3N0VGFzayhTYWZlUmVsZWFzZVRhc2s6OmNyZWF0ZShjYWxsYmFjaykpOworICAg
ICAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNhZmVSZWxlYXNlVGFzaz4o
Y2FsbGJhY2spKTsKICAgICB9CiAKICAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgpCkBAIC05MCw5
ICs5MCw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY2xhc3MgU2FmZVJlbGVhc2VUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8U2FmZVJlbGVhc2VUYXNrPiBjcmVhdGUoVCogY2FsbGJhY2tU
b1JlbGVhc2UpCisgICAgICAgIGV4cGxpY2l0IFNhZmVSZWxlYXNlVGFzayhUKiBjYWxsYmFja1Rv
UmVsZWFzZSkKKyAgICAgICAgICAgIDogbV9jYWxsYmFja1RvUmVsZWFzZShjYWxsYmFja1RvUmVs
ZWFzZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTYWZlUmVs
ZWFzZVRhc2soY2FsbGJhY2tUb1JlbGVhc2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MTA1LDExICsxMDUsNiBAQCBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVw
VGFzaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4
cGxpY2l0IFNhZmVSZWxlYXNlVGFzayhUKiBjYWxsYmFja1RvUmVsZWFzZSkKLSAgICAgICAgICAg
IDogbV9jYWxsYmFja1RvUmVsZWFzZShjYWxsYmFja1RvUmVsZWFzZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0KICAgICAgICAgVCogbV9jYWxsYmFja1RvUmVsZWFzZTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4
IDZlZDNjYTIuLjc2NjIzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0yMzIsOSArMjMyLDggQEAgdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3MoKQogICAg
ICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tzQ2FsbGJhY2ss
IHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBWZWN0b3I8T3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiB0YXNrczsKLSAgICB0YXNrcy5zd2FwKG1fcGVuZGlu
Z1Rhc2tzKTsKLSAgICBmb3IgKFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNr
cy5lbmQoKTsgKytpdGVyKQorICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4+IHRhc2tzID0gc3RkOjptb3ZlKG1fcGVuZGluZ1Rhc2tzKTsKKyAg
ICBmb3IgKGF1dG8gaXRlciA9IHRhc2tzLmJlZ2luKCk7IGl0ZXIgIT0gdGFza3MuZW5kKCk7ICsr
aXRlcikKICAgICAgICAgKCppdGVyKS0+cGVyZm9ybVRhc2soMCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAppbmRleCBkMzY0YzY1Li45
MDMzOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVk
IGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwotICAgIFZlY3Rv
cjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcGVuZGluZ1Rhc2tzOwor
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+
IG1fcGVuZGluZ1Rhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWI2YWM1Ny4uMWYyOTMzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zNjAsMTQg
KzM2MCwxMCBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp+QnJp
ZGdlKCkKIH0KIAogY2xhc3MgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Oldvcmtl
ckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyKiBwZWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSogbG9hZGVyUHJveHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJHbG9i
YWxTY29wZURpZEluaXRpYWxpemVUYXNrKHBlZXIsIGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRX
cmFwcGVyKSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDMsIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNr
LAorICAgICAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlciomLCBXb3Jr
ZXJMb2FkZXJQcm94eSomLCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiYpOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVEaWRJ
bml0aWFsaXplVGFzaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBPVkVSUklERQogICAgIHsKQEAgLTQwNiw3ICs0MDIs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5U
aHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgUGVlciogcGVlciA9IFBlZXI6OmNy
ZWF0ZShjbGllbnRXcmFwcGVyLCAqbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlKTsKICAg
ICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZSgKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Oldvcmtlckds
b2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s6OmNyZWF0ZShwZWVyLCBsb2FkZXJQcm94eSwgY2xp
ZW50V3JhcHBlciksIHRhc2tNb2RlKTsKKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXpl
VGFzaz4ocGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSk7CiAgICAg
aWYgKCFzZW50KSB7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmNsZWFyUGVlcigpOwogICAgICAg
ICBkZWxldGUgcGVlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5oCmluZGV4IGQzMjFjNTcuLjgxYThkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuaApAQCAtNzYsMTkgKzc2LDEzIEBAIHByaXZhdGU6CiB9OwogCiBj
bGFzcyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlbGV0ZUNhbGxiYWNr
RGF0YVRhc2s+IGNyZWF0ZShKU0NhbGxiYWNrRGF0YSogZGF0YSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhkYXRhKSk7Ci0gICAgfQor
ICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDEsIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2ssIEpTQ2Fs
bGJhY2tEYXRhKiYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1fZGF0YTsKLSAgICB9CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSB7IGRlbGV0ZSBtX2RhdGE7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLXByaXZhdGU6CiAKK3ByaXZhdGU6CiAgICAgRGVsZXRlQ2Fs
bGJhY2tEYXRhVGFzayhKU0NhbGxiYWNrRGF0YSogZGF0YSkgOiBtX2RhdGEoZGF0YSkge30KIAog
ICAgIEpTQ2FsbGJhY2tEYXRhKiBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oCmluZGV4IDY3MmNjODUuLjc5NWU0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTRE9NR2xvYmFsT2JqZWN0VGFza19oCiAK
ICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93QmFz
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsMTkgKzM1LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2s7CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0VGFzayBGSU5BTCA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxKU0dsb2JhbE9iamVjdFRhc2s+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tU
b0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlND
OjpUYXNrQ29udGV4dD4gdGFza0NvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEpTR2xvYmFsT2JqZWN0VGFzayhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNr
Q29udGV4dCkpOwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygzLCBKU0dsb2JhbE9i
amVjdFRhc2ssIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyJiwgUGFzc1JlZlB0cjxK
U0M6OlRhc2tDb250ZXh0PiYpOworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDMsIEpTR2xvYmFs
T2JqZWN0VGFzaywgSlNET01XaW5kb3dCYXNlKiwgSlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyJiwgUGFzc1JlZlB0cjxK
U0M6OlRhc2tDb250ZXh0PiYpOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmpl
Y3RUYXNrKCk7CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBKU0dsb2JhbE9iamVjdFRhc2soSlNE
T01HbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tU
b0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4
dD4pOwogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBPVkVSUklERTsKLQogICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBtX2Nh
bGxiYWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggNjFkYTNmNS4uY2FmYzIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBK
U0RPTVdpbmRvd0Jhc2U6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCkKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50
TG9vcChjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFja0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQ
YXNzUmVmUHRyPFRhc2tDb250ZXh0PiB0YXNrQ29udGV4dCkKIHsKICAgICBjb25zdCBKU0RPTVdp
bmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvd0Jhc2Uq
PihvYmplY3QpOwotICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soSlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NV2luZG93QmFzZSopdGhpc09i
amVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7CisgICAgdGhpc09iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0VGFzaz4oKEpTRE9NV2luZG93QmFzZSopdGhpc09iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tD
b250ZXh0KSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRv
d1NoZWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBmZjVmZGJlLi40MmVmODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNj
cmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2JhbE9iamVjdCoKIHZvaWQgSlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBvYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9v
cENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQdHI8VGFza0NvbnRleHQ+
IHRhc2tDb250ZXh0KQogewogICAgIGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPihvYmpl
Y3QpOwotICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NR2xvYmFsT2JqZWN0Kil0aGlzT2JqZWN0
LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RU
YXNrPigoSlNET01HbG9iYWxPYmplY3QqKXRoaXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29u
dGV4dCkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCosIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODll
MGEyMy4uY2Y2NjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMxMDMsNyArMzEwMyw3IEBAIHN1YiBHZW5lcmF0ZUNh
bGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNv
bnRleHQgfHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpXG4iKTsKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgZGVsZXRlIG1fZGF0YTtcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGVsc2VcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjb250
ZXh0LT5wb3N0VGFzayhEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpjcmVhdGUobV9kYXRhKSk7XG4i
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY29udGV4dC0+cG9zdFRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxEZWxldGVDYWxsYmFja0RhdGFUYXNrPihtX2RhdGEpKTtcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2lmbmRlZiBOREVCVUdcbiIpOwogICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIG1fZGF0YSA9IDA7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNl
bmRpZlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAppbmRleCAwMTFjMDRkLi42NDZmMDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNUZXN0Q2FsbGJhY2s6On5KU1Rl
c3RDYWxsYmFjaygpCiAgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKQogICAgICAgICBkZWxldGUgbV9kYXRhOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+
cG9zdFRhc2soRGVsZXRlQ2FsbGJhY2tEYXRhVGFzazo6Y3JlYXRlKG1fZGF0YSkpOworICAgICAg
ICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlbGV0ZUNhbGxiYWNrRGF0YVRh
c2s+KG1fZGF0YSkpOwogI2lmbmRlZiBOREVCVUcKICAgICBtX2RhdGEgPSAwOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKaW5kZXggNmNjNWY4NC4uZmZlMmE3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaApAQCAtNjMsMTIgKzYzLDYgQEAgcHVibGlj
OgogICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRUYXNrMTxQMSwgTVAxPiBDcm9zc1RocmVhZFRhc2s7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5
cGUgUGFyYW0xOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVh
dGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEpKTsKLSAg
ICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrMShNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9w
YXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC05MywxMiArODcsNiBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0x
OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1U
eXBlIFBhcmFtMjsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3Jl
YXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhv
ZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9z
c1RocmVhZFRhc2syKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFy
YW1ldGVyMikKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0
ZXIxKHBhcmFtZXRlcjEpCkBAIC0xMjYsMTIgKzExNCw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUg
UGFyYW0zOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUo
TWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJh
bTMgcGFyYW1ldGVyMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NU
aHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwot
ICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2szKE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMpCiAg
ICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0
ZXIxKQpAQCAtMTYyLDEyICsxNDQsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
cm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+OjpQYXJhbVR5cGUgUGFyYW0zOwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA0Pjo6UGFyYW1UeXBlIFBhcmFtNDsKIAot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0
ZXIzLCBwYXJhbWV0ZXI0KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFz
azQoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQ
YXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQpCiAgICAgICAgIDogbV9tZXRob2Qo
bWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQpAQCAtMjAxLDEyICsx
NzcsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFp
dHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKIAotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1l
dGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBD
cm9zc1RocmVhZFRhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIg
cGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUg
cGFyYW1ldGVyNSkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJh
bWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yNDMsMTIgKzIxMyw2IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNT46OlBhcmFtVHlwZSBQYXJhbTU7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5
cGUgUGFyYW02OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVh
dGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQ
YXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQ
YXJhbTYgcGFyYW1ldGVyNikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jv
c3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywg
cGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikpOwotICAgIH0KLQotcHJpdmF0ZToK
ICAgICBDcm9zc1RocmVhZFRhc2s2KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQ
YXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQ
YXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYpCiAgICAgICAgIDogbV9tZXRob2Qo
bWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQpAQCAtMjg4LDEyICsy
NTIsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFp
dHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRUYXNrVHJhaXRzPFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKIAotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0
ZXI3KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2so
bWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBw
YXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3KSk7Ci0gICAgfQotCi1wcml2YXRlOgog
ICAgIENyb3NzVGhyZWFkVGFzazcoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBh
cmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcpCiAg
ICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0
ZXIxKQpAQCAtMzM1LDEzICsyOTMsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
cm9zc1RocmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQ
YXJhbTg7Ci0gICAgCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVh
dGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQ
YXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQ
YXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9k
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0
ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3LCBwYXJhbWV0ZXI4KSk7Ci0gICAgfQotICAgIAot
cHJpdmF0ZToKKwogICAgIENyb3NzVGhyZWFkVGFzazgoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBh
cmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAg
ICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0zNTQsMTIgKzMwNiwxMiBAQCBwcml2YXRl
OgogICAgICwgbV9wYXJhbWV0ZXI4KHBhcmFtZXRlcjgpCiAgICAgewogICAgIH0KLSAgICAKKwog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIHsKICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBt
X3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1f
cGFyYW1ldGVyNiwgbV9wYXJhbWV0ZXI3LCBtX3BhcmFtZXRlcjgpOwogICAgIH0KLSAgICAKKwog
cHJpdmF0ZToKICAgICBNZXRob2QgbV9tZXRob2Q7CiAgICAgUDEgbV9wYXJhbWV0ZXIxOwpAQCAt
MzczLDU1ICszMjUsNTUgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0
eXBlbmFtZSBNUDE+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNy
ZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAg
cmV0dXJuIENyb3NzVGhyZWFkVGFzazE8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpU
eXBlLCBNUDE+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJl
YWRUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMT4+KAogICAg
ICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDI+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazI8
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyPjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+
OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyPj4o
CiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBh
cmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZv
aWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzKSwKICAg
ICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBw
YXJhbWV0ZXIzKQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2szPHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
Mj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDM+
OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrMzx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzPj4oCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFy
YW1ldGVyMiksCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0
eXBlbmFtZSBNUDQ+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNy
ZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCiAgICAgY29uc3QgUDEmIHBhcmFt
ZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3Qg
UDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazQ8dHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUs
IE1QMywKLSAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQ+
OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNDx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5
cGUsIE1QND4+KAogICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHko
cGFyYW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFy
YW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBN
UDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAo
Km1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1
KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0
IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRl
cjUpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAg
ICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1Pjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAy
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1Pj4oCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29w
aWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBh
cmFtZXRlcjQpLApAQCAtNDI5LDEyICszODEsMTIgQEAgUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1QYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5p
cXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2so
CiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYg
cGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBj
b25zdCBQNSYgcGFyYW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7Ci0gICAgcmV0dXJu
IENyb3NzVGhyZWFkVGFzazY8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBN
UDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1
Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj46
OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s2PHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+
OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlw
ZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDY+PigKICAgICAgICAgICAgIG1ldGhv
ZCwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQ
ND46OmNvcHkocGFyYW1ldGVyNCksCkBAIC00NDIsMTMgKzM5NCwxMyBAQCBQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlw
ZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwg
TVA3KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNv
bnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFt
ZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAg
ICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46
OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazc8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAy
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKICAgICAgICAgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46
OlR5cGUsIE1QNiwKLSAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBl
LCBNUDc+OjpjcmVhdGUoCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6
VHlwZSwgTVA3Pj4oCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29w
eShwYXJhbWV0ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShw
YXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLApAQCAt
NDU3LDEzICs0MDksMTMgQEAgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBjcmVhdGVDYWxsYmFja1Rhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUs
IHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDcsIHR5
cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqbWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwg
TVA3LCBNUDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
LCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBw
YXJhbWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNiwgY29uc3QgUDcmIHBhcmFtZXRlcjcsIGNv
bnN0IFA4JiBwYXJhbWV0ZXI4KQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2s4PHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpU
eXBlLCBNUDMsCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrODx0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6VHlwZSwgTVAzLAogICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwg
TVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCi0gICAgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDc+OjpUeXBlLCBNUDcsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6
VHlwZSwgTVA4Pjo6Y3JlYXRlKAorICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6
VHlwZSwgTVA3LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQOD46OlR5cGUsIE1QOD4+KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHko
cGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDcwYjY3YzIuLjU4NDM3NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDc0MSw3ICs0NzQxLDcgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wpCiB2
b2lkIERvY3VtZW50OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAg
ICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1l
c3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lk
IERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBs
b25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsK
LSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENv
bnNvbGVNZXNzYWdlVGFzaz4oc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NzY4LDE0ICs0NzY4LDE0IEBAIFNlY3VyaXR5T3JpZ2luKiBEb2N1
bWVudDo6dG9wT3JpZ2luKCkgY29uc3QKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBlcmZvcm1UYXNrQ29udGV4dCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFBlcmZvcm1UYXNrQ29udGV4dChXZWFrUHRyPERvY3Vt
ZW50PiBkb2N1bWVudCwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrKQorICAgIFBlcmZvcm1UYXNrQ29udGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiAgICAg
ICAgIDogZG9jdW1lbnRSZWZlcmVuY2UoZG9jdW1lbnQpCi0gICAgICAgICwgdGFzayh0YXNrKQor
ICAgICAgICAsIHRhc2soc3RkOjptb3ZlKHRhc2spKQogICAgIHsKICAgICB9CiAKICAgICBXZWFr
UHRyPERvY3VtZW50PiBkb2N1bWVudFJlZmVyZW5jZTsKLSAgICBPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzazsKIH07CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVU
YXNrKHZvaWQqIHVudHlwZWRDb250ZXh0KQpAQCAtNDc5MSwyMiArNDc5MSwyMiBAQCB2b2lkIERv
Y3VtZW50OjpkaWRSZWNlaXZlVGFzayh2b2lkKiB1bnR5cGVkQ29udGV4dCkKIAogICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNM
b2FkaW5nKCkpIHx8ICFkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5hcHBlbmQoY29udGV4dC0+dGFzay5yZWxlYXNl
KCkpOworICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bW92ZShj
b250ZXh0LT50YXNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb250ZXh0LT50
YXNrLT5wZXJmb3JtVGFzayhkb2N1bWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNr
KFBhc3NPd25QdHI8VGFzaz4gdGFzaykKK3ZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKHN0ZDo6dW5p
cXVlX3B0cjxUYXNrPiB0YXNrKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRh
c2ssIG5ldyBQZXJmb3JtVGFza0NvbnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCks
IHRhc2spKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGRpZFJlY2VpdmVUYXNrLCBuZXcgUGVyZm9y
bVRhc2tDb250ZXh0KG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLCBzdGQ6Om1vdmUodGFz
aykpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZChUaW1lcjxE
b2N1bWVudD4qKQogewogICAgIHdoaWxlICghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIE93blB0cjxUYXNrPiB0YXNrID0gbV9wZW5kaW5nVGFza3NbMF0ucmVsZWFzZSgpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gdGFzayA9IHN0ZDo6bW92ZShtX3BlbmRpbmdU
YXNrc1swXSk7CiAgICAgICAgIG1fcGVuZGluZ1Rhc2tzLnJlbW92ZSgwKTsKICAgICAgICAgdGFz
ay0+cGVyZm9ybVRhc2sodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmYzM2
MzRhLi4yNmJlODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTMxLDcgKzkzMSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0ROU1ByZWZldGNoRW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xI
ZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093
blB0cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0
aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5p
cXVlX3B0cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQn
cyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fcGVuZGluZ1Rhc2tzVGltZXI7Ci0gICAg
VmVjdG9yPE93blB0cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxUYXNrPj4gbV9wZW5kaW5nVGFza3M7CiAKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVU
T1NJWklORykKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCBjOTAyMGZlLi5kMTM1ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01MCwxMiArNTAsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcm9jZXNzTWVzc2FnZXNTb29uVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxQcm9jZXNzTWVzc2FnZXNTb29uVGFzaz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgUHJvY2Vzc01lc3NhZ2VzU29vblRhc2spOwotICAgIH0KKyAgICBX
VEZfTUFLRV9VTklRVUUoUHJvY2Vzc01lc3NhZ2VzU29vblRhc2spOwogCitwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewogICAgICAgICBjb250ZXh0LT5kaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCk7CkBA
IC0xMTksNyArMTE2LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdl
UG9ydE1lc3NhZ2VzU29vbigpCiB7Ci0gICAgcG9zdFRhc2soUHJvY2Vzc01lc3NhZ2VzU29vblRh
c2s6OmNyZWF0ZSgpKTsKKyAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NNZXNz
YWdlc1Nvb25UYXNrPigpKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNw
YXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDg3YjI3ZGQuLjFlMzVlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNr
PikgPSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJv
bm91c2x5LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4p
ID0gMDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25v
dXNseS4KIAogICAgIC8vIEdldHMgdGhlIG5leHQgaWQgaW4gYSBjaXJjdWxhciBzZXF1ZW5jZSBm
cm9tIDEgdG8gMl4zMS0xLgogICAgIGludCBjaXJjdWxhclNlcXVlbnRpYWxJRCgpOwpAQCAtMTU3
LDE4ICsxNTcsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVN
ZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4gY3JlYXRlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBZGRDb25zb2xlTWVzc2FnZVRhc2so
c291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwotICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7Ci0gICAgcHJp
dmF0ZToKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAg
IDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgLCBtX2xldmVsKGxldmVsKQogICAgICAg
ICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICAgICAgewogICAg
ICAgICB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgT1ZFUlJJREU7CisgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZVNvdXJjZSBt
X3NvdXJjZTsKICAgICAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CiAgICAgICAgIFN0cmluZyBt
X21lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAppbmRleCBjNjI4NWIx
Li5lNzVhYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKQEAgLTM5LDEy
ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSB7CiAKIGNsYXNzIERpc3Bh
dGNoQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERpc3BhdGNoQ2FsbGJhY2tUYXNrPiBjcmVh
dGUoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgZGF0
YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGlzcGF0Y2hDYWxsYmFja1Rh
c2soY2FsbGJhY2ssIGRhdGEpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMiwg
RGlzcGF0Y2hDYWxsYmFja1Rhc2ssIFN0cmluZ0NhbGxiYWNrKiwgY29uc3QgU3RyaW5nJik7CiAK
K3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCiAgICAgewogICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2RhdGEpOwpA
QCAtNjUsNyArNjIsNyBAQCBwcml2YXRlOgogCiB2b2lkIFN0cmluZ0NhbGxiYWNrOjpzY2hlZHVs
ZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKIHsKLSAgICBjb250ZXh0LT5wb3N0VGFzayhEaXNwYXRjaENhbGxiYWNrVGFzazo6Y3Jl
YXRlKHRoaXMsIGRhdGEpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVl
PERpc3BhdGNoQ2FsbGJhY2tUYXNrPihzdGF0aWNfY2FzdDxTdHJpbmdDYWxsYmFjayo+KHRoaXMp
LCBkYXRhKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5k
ZXggNzM1N2I0NS4uN2M5NGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTExMTgsMTIgKzExMTgs
OSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplQ2FsbGJhY2soKQogfQogCiBjbGFzcyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBp
bnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRlciwgZXZlbnRJRCwgcHJv
Z3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9B
UkdTKDQsIENhbGxDYWNoZUxpc3RlbmVyVGFzaywgRG9jdW1lbnRMb2FkZXIqJiwgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQmLCBpbnQmLCBpbnQmKTsKIAorcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBPVkVS
UklERQogICAgIHsKICAgICAgICAgCkBAIC0xMTY3LDcgKzExNjQsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZl
bnRJRCBldmVudAogICAgIAogICAgIEFTU0VSVChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSA9PSBsb2FkZXIpOwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxD
YWNoZUxpc3RlbmVyVGFzazo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwg
cHJvZ3Jlc3NEb25lKSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPihsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNz
VG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2V0VXBkYXRlU3RhdHVzKFVwZGF0ZVN0YXR1cyBzdGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4
IGQyODA3MDUuLjhiMWQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHB1
YmxpYzoKICAgICBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAg
ICAvLyBXb3JrZXJMb2FkZXJQcm94eQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVy
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAgIHZpcnR1YWwg
Ym9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPik7CisgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25z
dCBTdHJpbmcmKTsKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRjaGVz
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbwogICAgIHJl
dHVybiBuYW1lID09IG1fbmFtZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRh
c2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2sp
Cit2b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIE11dGV4TG9ja2Vy
IGxvY2sobV93b3JrZXJEb2N1bWVudHNMb2NrKTsKIApAQCAtMTUyLDE1ICsxNTIsMTUgQEAgdm9p
ZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sKICAgICAvLyBKdXN0IHBpY2sgYW4gYXJiaXRyYXJ5IGFjdGl2
ZSBkb2N1bWVudCBmcm9tIHRoZSBIYXNoU2V0IGFuZCBwYXNzIGxvYWQgcmVxdWVzdHMgdG8gaXQu
CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRo
ZSB1c2VyIGNsb3NlcyB0aGUgZG9jdW1lbnQgbWlkLWxvYWQsIHZpYSBhIHNoYWRvdyBkb2N1bWVu
dCBvciBzb21lIG90aGVyIHNvbHV0aW9uPwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICoobV93
b3JrZXJEb2N1bWVudHMuYmVnaW4oKSk7Ci0gICAgZG9jdW1lbnQtPnBvc3RUYXNrKHRhc2spOwor
ICAgIGRvY3VtZW50LT5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykpOwogfQogCi1ib29sIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQorYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywg
Y29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChpc0Nsb3NpbmcoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEFTU0VSVChtX3RocmVhZCk7Ci0gICAgbV90aHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7CisgICAgbV90aHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRhc2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMjUyLDE4ICsyNTIsOSBAQCB2b2lkIFNoYXJlZFdvcmtlclByb3h5OjpjbG9zZSgp
CiB9CiAKIGNsYXNzIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXJl
ZFdvcmtlckNvbm5lY3RUYXNrPiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
IGNoYW5uZWwpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNoYXJlZFdvcmtl
ckNvbm5lY3RUYXNrKGNoYW5uZWwpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU2hhcmVkV29y
a2VyQ29ubmVjdFRhc2soUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCi0g
ICAgICAgIDogbV9jaGFubmVsKGNoYW5uZWwpCi0gICAgewotICAgIH0KKyAgICBXVEZfTUFLRV9V
TklRVUVfQVJHUygxLCBTaGFyZWRXb3JrZXJDb25uZWN0VGFzaywgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWw+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7CiAgICAgICAgIFJl
ZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoKnNjcmlwdENvbnRl
eHQpOwpAQCAtMjc2LDYgKzI2NywxMiBAQCBwcml2YXRlOgogICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOwogICAgIH0KIAor
cHJpdmF0ZToKKyAgICBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAgICAgICAgOiBtX2NoYW5uZWwoY2hhbm5lbCkKKyAgICB7
CisgICAgfQorCiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFubmVsOwogfTsK
IApAQCAtMzY0LDcgKzM2MSw3IEBAIHZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6
OndvcmtlclNjcmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYgcHJveHksCiAgICAgICAgIHBy
b3h5LnNldFRocmVhZCh0aHJlYWQpOwogICAgICAgICB0aHJlYWQtPnN0YXJ0KCk7CiAgICAgfQot
ICAgIHByb3h5LnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soU2hhcmVkV29ya2VyQ29ubmVj
dFRhc2s6OmNyZWF0ZShwb3J0KSk7CisgICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrPihwb3J0KSk7CiB9
CiAKIGJvb2wgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNDEyLDcgKzQwOSw3IEBAIHZvaWQgRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
cj4gd29yCiAgICAgfQogICAgIC8vIElmIHByb3h5IGlzIGFscmVhZHkgcnVubmluZywganVzdCBj
b25uZWN0IHRvIGl0IC0gb3RoZXJ3aXNlLCBraWNrIG9mZiBhIGxvYWRlciB0byBsb2FkIHRoZSBz
Y3JpcHQuCiAgICAgaWYgKHByb3h5LT50aHJlYWQoKSkKLSAgICAgICAgcHJveHktPnRocmVhZCgp
LT5ydW5Mb29wKCkucG9zdFRhc2soU2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OmNyZWF0ZShwb3J0
KSk7CisgICAgICAgIHByb3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s+KHBvcnQpKTsKICAgICBlbHNlIHsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYo
bmV3IFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcih3b3JrZXIsIHBvcnQsIHByb3h5LnJlbGVhc2Uo
KSkpOwogICAgICAgICBsb2FkZXItPmxvYWQodXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IDBjYzQ3ODkuLjhiNDRmNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDcsMTIgKzQ3LDkgQEAg
V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUoKQogfQogCiBjbGFzcyBXb3JrZXJF
dmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXJUYXNrIEZJTkFMIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50
RGlzcGF0Y2hlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZl
bnRRdWV1ZSYgZXZlbnRRdWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
RXZlbnREaXNwYXRjaGVyVGFzayhldmVudCwgZXZlbnRRdWV1ZSkpOwotICAgIH0KKyAgICBXVEZf
TUFLRV9VTklRVUVfQVJHUygyLCBXb3JrZXJFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXJUYXNr
LCBSZWZQdHI8RXZlbnQ+JiwgV29ya2VyRXZlbnRRdWV1ZSYpOwogCitwdWJsaWM6CiAgICAgdmly
dHVhbCB+RXZlbnREaXNwYXRjaGVyVGFzaygpCiAgICAgewogICAgICAgICBpZiAobV9ldmVudCkK
QEAgLTk3LDkgKzk0LDkgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gcHJwRXZlbnQ7Ci0gICAgT3du
UHRyPEV2ZW50RGlzcGF0Y2hlclRhc2s+IHRhc2sgPSBFdmVudERpc3BhdGNoZXJUYXNrOjpjcmVh
dGUoZXZlbnQsICp0aGlzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnREaXNwYXRjaGVyVGFz
az4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVyVGFzaz4oZXZlbnQsICp0
aGlzKTsKICAgICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQucmVsZWFzZSgpLCB0YXNrLmdldCgp
KTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2sodGFzay5yZWxlYXNlKCkp
OworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDI5Mzc5NzQuLmI5YWU2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02NywxMiArNjcsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4gY3JlYXRlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2spOwot
ICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUUoQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2spOwog
CitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgKmNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtODIsNiArNzksOSBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgQ2xvc2VXb3JrZXJHbG9iYWxTY29w
ZVRhc2soKSB7IH0KIH07CiAKIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIHN0ZDo6dW5pcXVlX3B0cjxH
cm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjpjbG9zZSgpCiAgICAgLy8gQWZ0ZXIgbV9jbG9zaW5nIGlzIHNldCwgYWxs
IHRoZSB0YXNrcyBpbiB0aGUgcXVldWUgY29udGludWUgdG8gYmUgZmV0Y2hlZCBidXQgb25seQog
ICAgIC8vIHRhc2tzIHdpdGggaXNDbGVhbnVwVGFzaygpPT10cnVlIHdpbGwgYmUgZXhlY3V0ZWQu
CiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsKLSAgICBwb3N0VGFzayhDbG9zZVdvcmtlckdsb2JhbFNj
b3BlVGFzazo6Y3JlYXRlKCkpOworICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Q2xvc2VX
b3JrZXJHbG9iYWxTY29wZVRhc2s+KCkpOwogfQogCiBXb3JrZXJOYXZpZ2F0b3IqIFdvcmtlckds
b2JhbFNjb3BlOjpuYXZpZ2F0b3IoKSBjb25zdApAQCAtMTgwLDkgKzE4MCw5IEBAIGJvb2wgV29y
a2VyR2xvYmFsU2NvcGU6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFzayhQYXNzT3duUHRyPFRh
c2s+IHRhc2spCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFzayhzdGQ6OnVuaXF1ZV9w
dHI8VGFzaz4gdGFzaykKIHsKLSAgICB0aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHRhc2sp
OworICAgIHRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKIH0K
IAogaW50IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KFBhc3NPd25QdHI8U2NoZWR1bGVk
QWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV29y
a2VyR2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgY29uc3QKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlz
Q29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFz
azo6Y3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9zdFRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2CiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywg
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQog
ewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29u
c29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAg
ICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4oc291cmNl
LCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMjUzMmI5Mi4uYzVhYjdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtODMsNyAr
ODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0
cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJl
YWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhzdGQ6OnVu
aXF1ZV9wdHI8VGFzaz4pIE9WRVJSSURFOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0
J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgICAgIC8vIFdvcmtlckdsb2JhbFNjb3Bl
CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBzZWxmKCkgeyByZXR1cm4gdGhpczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCmluZGV4IDE4NTQyYjYuLjMw
NDg1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKQEAg
LTQ5LDEyICs0OSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfldv
cmtlckxvYWRlclByb3h5KCkgeyB9CiAKICAgICAgICAgLy8gUG9zdHMgYSB0YXNrIHRvIHRoZSB0
aHJlYWQgd2hpY2ggcnVucyB0aGUgbG9hZGluZyBjb2RlIChub3JtYWxseSwgdGhlIG1haW4gdGhy
ZWFkKS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4pID0gMDsKIAogICAgICAgICAvLyBQb3N0cyBjYWxsYmFja3MgZnJvbSBsb2FkaW5nIGNv
ZGUgdG8gdGhlIFdvcmtlckdsb2JhbFNjb3BlLiBUaGUgJ21vZGUnIGlzIHVzZWQgdG8gZGlmZmVy
ZW50aWF0ZQogICAgICAgICAvLyBzcGVjaWZpYyBzeW5jaHJvbm91cyBsb2FkaW5nIHJlcXVlc3Rz
IHNvIHRoZXkgY2FuIGJlICduZXN0ZWQnLCBwZXIgc3BlYy4KICAgICAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSB0YXNrIHdhcyBwb3N0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgICAgICB2aXJ0dWFs
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3RkOjp1
bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1v
ZGUpID0gMDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDIwMGMwOGUuLmRi
YTE4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCkBAIC01NSwxOSArNTUsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJH
bG9iYWxTY29wZVRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29w
ZVRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTWVzc2Fn
ZVdvcmtlckdsb2JhbFNjb3BlVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi0g
ICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICwgbV9jaGFubmVscyhjaGFubmVs
cykKLSAgICB7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDIsIE1lc3NhZ2VXb3Jr
ZXJHbG9iYWxTY29wZVRhc2ssIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlw
dENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC03OCwyNSArNjgsMjAgQEAgcHJp
dmF0ZToKICAgICB9CiAKIHByaXZhdGU6CisgICAgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFz
ayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgICAgIDogbV9tZXNzYWdlKG1l
c3NhZ2UpCisgICAgICAgICwgbV9jaGFubmVscyhjaGFubmVscykKKyAgICB7CisgICAgfQorCiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9tZXNzYWdlOwogICAgIE93blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKIH07CiAKIGNsYXNzIE1lc3NhZ2VX
b3JrZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJU
YXNrKG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdpbmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICAgICAgOiBtX21lc3Nh
Z2UobWVzc2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQotICAgICAgICAsIG1f
bWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgIH0KKyAgICBXVEZfTUFL
RV9VTklRVUVfQVJHUygzLCBNZXNzYWdlV29ya2VyVGFzaywgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mLCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSopOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQpCiAgICAgewogICAgICAg
ICBXb3JrZXIqIHdvcmtlck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgp
OwpAQCAtMTA4LDI4ICs5MywyMiBAQCBwcml2YXRlOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBN
ZXNzYWdlV29ya2VyVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1l
c3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgOiBtX21lc3NhZ2UobWVzc2Fn
ZSkKKyAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fbWVzc2FnaW5n
UHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgeworICAgIH0KKwogICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5n
UHJveHk7CiB9OwogCiBjbGFzcyBXb3JrZXJFeGNlcHRpb25UYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdv
cmtlckV4Y2VwdGlvblRhc2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFdvcmtlckV4Y2VwdGlvblRhc2soZXJyb3JNZXNzYWdlLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgbWVzc2FnaW5nUHJveHkpKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgV29ya2VyRXhjZXB0aW9uVGFzayhjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgICAgIDog
bV9lcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpKQotICAgICAgICAsIG1f
bGluZU51bWJlcihsaW5lTnVtYmVyKQotICAgICAgICAsIG1fY29sdW1uTnVtYmVyKGNvbHVtbk51
bWJlcikKLSAgICAgICAgLCBtX3NvdXJjZVVSTChzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkpCi0g
ICAgICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgfQor
ICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDUsIFdvcmtlckV4Y2VwdGlvblRhc2ssIGNvbnN0IFN0
cmluZyYsIGludCYsIGludCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlck1lc3NhZ2luZ1Byb3h5Kik7
CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgIFdvcmtlciogd29ya2VyT2JqZWN0ID0g
bV9tZXNzYWdpbmdQcm94eS0+d29ya2VyT2JqZWN0KCk7CkBAIC0xNDQsNiArMTIzLDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjb250ZXh0LT5yZXBvcnRFeGNlcHRpb24obV9lcnJvck1lc3Nh
Z2UsIG1fbGluZU51bWJlciwgbV9jb2x1bW5OdW1iZXIsIG1fc291cmNlVVJMLCAwKTsKICAgICB9
CiAKK3ByaXZhdGU6CisgICAgV29ya2VyRXhjZXB0aW9uVGFzayhjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgICAg
IDogbV9lcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlLmlzb2xhdGVkQ29weSgpKQorICAgICAgICAs
IG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICAgICAsIG1fY29sdW1uTnVtYmVyKGNvbHVt
bk51bWJlcikKKyAgICAgICAgLCBtX3NvdXJjZVVSTChzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkp
CisgICAgICAgICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAg
fQorCiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIGludCBtX2xpbmVOdW1iZXI7CiAg
ICAgaW50IG1fY29sdW1uTnVtYmVyOwpAQCAtMTUyLDEwICsxNDEsMTIgQEAgcHJpdmF0ZToKIH07
CiAKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygxLCBXb3Jr
ZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2ssIFdvcmtlck1lc3NhZ2luZ1Byb3h5Kik7CisKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRh
c2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2so
bWVzc2FnaW5nUHJveHkpKTsKKyAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyR2xvYmFs
U2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE2NCwxOSAr
MTU1LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKLSAgICB7Ci0gICAgICAgIG1fbWVzc2Fn
aW5nUHJveHktPndvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKLSAgICB9Ci0K
ICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKIGNsYXNz
IFdvcmtlclRlcm1pbmF0ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMSwgV29ya2VyVGVybWluYXRlVGFzaywgV29y
a2VyTWVzc2FnaW5nUHJveHkqKTsKKwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdv
cmtlclRlcm1pbmF0ZVRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHkpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUZXJtaW5hdGVU
YXNrKG1lc3NhZ2luZ1Byb3h5KSk7CisgICAgICAgIG1fbWVzc2FnaW5nUHJveHktPnRlcm1pbmF0
ZVdvcmtlckdsb2JhbFNjb3BlKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg1LDE5ICsxNzMs
MTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgIHsKLSAgICAgICAgbV9tZXNzYWdpbmdQ
cm94eS0+dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICB9Ci0KICAgICBXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKIGNsYXNzIFdvcmtlclRocmVh
ZEFjdGl2aXR5UmVwb3J0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygzLCBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9y
dFRhc2ssIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiwgYm9vbCwgYm9vbCYpOworCiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPiBjcmVh
dGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBib29sIGNvbmZpcm1pbmdN
ZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayhtZXNzYWdpbmdQcm94eSwg
Y29uZmlybWluZ01lc3NhZ2UsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOworICAgICAgICBtX21lc3Nh
Z2luZ1Byb3h5LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChtX2NvbmZpcm1pbmdNZXNz
YWdlLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjA4LDIx
ICsxOTMsMjEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgIHsKLSAgICAgICAgbV9tZXNz
YWdpbmdQcm94eS0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwobV9jb25maXJtaW5nTWVz
c2FnZSwgbV9oYXNQZW5kaW5nQWN0aXZpdHkpOwotICAgIH0KLQogICAgIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogICAgIGJvb2wgbV9jb25maXJtaW5nTWVzc2FnZTsK
ICAgICBib29sIG1faGFzUGVuZGluZ0FjdGl2aXR5OwogfTsKIAogY2xhc3MgUG9zdE1lc3NhZ2VU
b1BhZ2VJbnNwZWN0b3JUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
eworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDIsIFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9y
VGFzaywgV29ya2VyTWVzc2FnaW5nUHJveHkqLCBjb25zdCBTdHJpbmcmKTsKKwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUG9zdE1lc3NhZ2VUb1Bh
Z2VJbnNwZWN0b3JUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXNzYWdlKSk7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICAgICAgaWYgKFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0
b3IqIHBhZ2VJbnNwZWN0b3IgPSBtX21lc3NhZ2luZ1Byb3h5LT5tX3BhZ2VJbnNwZWN0b3IpCisg
ICAgICAgICAgICBwYWdlSW5zcGVjdG9yLT5kaXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKG1fbWVz
c2FnZSk7CisjZW5kaWYKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMzIsMjMgKzIxNywxOSBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
ICAgIGlmIChXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yKiBwYWdlSW5zcGVj
dG9yID0gbV9tZXNzYWdpbmdQcm94eS0+bV9wYWdlSW5zcGVjdG9yKQotICAgICAgICAgICAgcGFn
ZUluc3BlY3Rvci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtX21lc3NhZ2UpOwotI2VuZGlm
Ci0gICAgfQotCiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiAg
ICAgU3RyaW5nIG1fbWVzc2FnZTsKIH07CiAKIGNsYXNzIE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5n
ZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CisgICAgV1RGX01B
S0VfVU5JUVVFX0FSR1MoMSwgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzaywgYm9vbCYpOwor
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
VGFzaz4gY3JlYXRlKGJvb2wgaXNPbkxpbmUpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2soaXNPbkxpbmUpKTsKKyAg
ICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNPbkxpbmUgPyBldmVudE5hbWVzKCku
b25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50OworICAgICAgICBXb3JrZXJH
bG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZSo+KGNvbnRleHQpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMjU3LDEzICsyMzgsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkK
LSAgICB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBldmVudE5hbWUgPSBtX2lzT25MaW5lID8gZXZl
bnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudDsKLSAgICAg
ICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gc3RhdGljX2Nhc3Q8V29y
a2VyR2xvYmFsU2NvcGUqPihjb250ZXh0KTsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOwotICAg
IH0KLQogICAgIGJvb2wgbV9pc09uTGluZTsKIH07CiAKQEAgLTMwNywxMiArMjgxLDEyIEBAIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0CiAgICAgUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4g
dGhyZWFkID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2NyaXB0VVJMLCB1c2VyQWdl
bnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCAqdGhpcywgKnRoaXMsIHN0YXJ0TW9kZSwgZG9jdW1l
bnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyKCksIGRvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlclR5cGUoKSwgZG9jdW1l
bnQtPnRvcE9yaWdpbigpKTsKICAgICB3b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7CiAgICAg
dGhyZWFkLT5zdGFydCgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRoaXMsIHNj
cmlwdFVSTCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgc3RhdGljX2Nhc3Q8V29y
a2VyTWVzc2FnaW5nUHJveHkqPih0aGlzKSwgc2NyaXB0VVJMKTsKIH0KIAogdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzLCB0aGlzKSk7Cisg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPE1l
c3NhZ2VXb3JrZXJUYXNrPihtZXNzYWdlLCBjaGFubmVscywgc3RhdGljX2Nhc3Q8V29ya2VyTWVz
c2FnaW5nUHJveHkqPih0aGlzKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5u
ZWxzKQpAQCAtMzIyLDMxICsyOTYsMzEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFMKIAogICAg
IGlmIChtX3dvcmtlclRocmVhZCkgewogICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTWVzc2FnZVdv
cmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAg
IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxNZXNz
YWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrPihtZXNzYWdlLCBjaGFubmVscykpOwogICAgIH0gZWxz
ZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJHbG9iYWxT
Y29wZVRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICBtX3F1ZXVlZEVh
cmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3Bl
VGFzaz4obWVzc2FnZSwgY2hhbm5lbHMpKTsKIH0KIAotYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jvb2wgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3Rk
Ojp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBBU1NFUlQobV93b3JrZXJUaHJlYWQpOwotICAgIG1fd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKHRhc2ssIG1vZGUpOworICAgIG1fd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwgbW9kZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RU
YXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNr
KQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsKICAgICAvLyBGSVhN
RTogSW4gY2FzZSBvZiBuZXN0ZWQgd29ya2VycywgdGhpcyBzaG91bGQgZ28gZGlyZWN0bHkgdG8g
dGhlIHJvb3QgRG9jdW1lbnQgY29udGV4dC4KICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2sodGFzayk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6
Om1vdmUodGFzaykpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6OmNy
ZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCB0
aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckV4Y2VwdGlvblRhc2s+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBzb3VyY2VVUkwsIHN0YXRpY19jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4o
dGhpcykpKTsKIH0KIAogc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5n
UHJveHksIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKQEAgLTM3NCw5ICszNDgsOSBAQCB2b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVk
V29ya2VyVGhyZWFkPgogICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50ID0gdGFza0Nv
dW50OwogICAgICAgICBtX3dvcmtlclRocmVhZEhhZFBlbmRpbmdBY3Rpdml0eSA9IHRydWU7IC8v
IFdvcmtlciBpbml0aWFsaXphdGlvbiBtZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKKyAgICAg
ICAgYXV0byBxdWV1ZWRFYXJseVRhc2tzID0gc3RkOjptb3ZlKG1fcXVldWVkRWFybHlUYXNrcyk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YXNrQ291bnQ7ICsraSkKLSAgICAg
ICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2sobV9xdWV1ZWRFYXJseVRh
c2tzW2ldLnJlbGVhc2UoKSk7Ci0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5jbGVhcigpOwor
ICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1vdmUo
cXVldWVkRWFybHlUYXNrc1tpXSkpOwogICAgIH0KIH0KIApAQCAtMzk0LDcgKzM2OCw3IEBAIHZv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlz
T25saW5lKQogICAgIGlmICghbV93b3JrZXJUaHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soTm90aWZ5TmV0d29ya1N0YXRlQ2hh
bmdlVGFzazo6Y3JlYXRlKGlzT25saW5lKSk7CisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2s+
KGlzT25saW5lKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlck9iamVj
dERlc3Ryb3llZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJNZXNzYWdp
bmdQcm94eSogcHJveHkpCkBAIC00NjUsMTQgKzQzOSwxNCBAQCB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAog
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKQog
ewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyR2xvYmFsU2Nv
cGVEZXN0cm95ZWRUYXNrOjpjcmVhdGUodGhpcykpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3ll
ZFRhc2s+KHN0YXRpY19jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4odGhpcykpKTsKICAgICAv
LyBXaWxsIGV4ZWN1dGUgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpIG9uIGNv
bnRleHQncyB0aHJlYWQuCiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckds
b2JhbFNjb3BlQ2xvc2VkKCkKIHsKICAgICAvLyBFeGVjdXRlcyB0ZXJtaW5hdGVXb3JrZXJHbG9i
YWxTY29wZSgpIG9uIHBhcmVudCBjb250ZXh0J3MgdGhyZWFkLgotICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyVGVybWluYXRlVGFzazo6Y3JlYXRlKHRoaXMpKTsK
KyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyVGVybWluYXRlVGFzaz4oc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPih0
aGlzKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCkKQEAgLTUwMywxOSArNDc3LDE5IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNw
ZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soUG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrOjpjcmVhdGUodGhp
cywgbWVzc2FnZSkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s+KHN0YXRpY19jYXN0
PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4odGhpcyksIG1lc3NhZ2UpKTsKIH0KICNlbmRpZgogCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCB0
cnVlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNr
PihzdGF0aWNfY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eSo+KHRoaXMpLCB0cnVlLCBoYXNQZW5k
aW5nQWN0aXZpdHkpKTsKICAgICAvLyBXaWxsIGV4ZWN1dGUgcmVwb3J0UGVuZGluZ0FjdGl2aXR5
SW50ZXJuYWwoKSBvbiBjb250ZXh0J3MgdGhyZWFkLgogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiB7
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJUaHJlYWRBY3Rp
dml0eVJlcG9ydFRhc2s6OmNyZWF0ZSh0aGlzLCBmYWxzZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzaz4oc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2Fn
aW5nUHJveHkqPih0aGlzKSwgZmFsc2UsIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdp
bGwgZXhlY3V0ZSByZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0
aHJlYWQuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAppbmRleCBiNmI0OWYyLi44MDJiY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC04MSw4ICs4MSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCiAg
ICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiBkaWZmZXJlbnQgdGhyZWFkcyB0
byBzY2hlZHVsZSBsb2FkaW5nCiAgICAgICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNhbGxi
YWNrcyBiYWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBP
VkVSUklERTsKLSAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9M
b2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSBPVkVS
UklERTsKKyAgICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25z
dCBTdHJpbmcmIG1vZGUpIE9WRVJSSURFOwogCiAgICAgICAgIHZvaWQgd29ya2VyVGhyZWFkQ3Jl
YXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4pOwogCkBAIC0xMTQsNyArMTE0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hc2tlZFRvVGVybWlu
YXRlOwogCi0gICAgICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4+IG1fcXVldWVkRWFybHlUYXNrczsgLy8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRo
ZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcXVldWVkRWFybHlUYXNrczsg
Ly8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNy
ZWF0ZWQuCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eTo6UGFnZUluc3BlY3RvciogbV9wYWdlSW5zcGVjdG9yOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBmNGEyZWZjLi5lYzM1OWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE5NiwyNCArMTk2LDI0
IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6dGVybWluYXRlKCkKICAgICBtX21lc3NhZ2VRdWV1ZS5r
aWxsKCk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykK
IHsKLSAgICBwb3N0VGFza0Zvck1vZGUodGFzaywgZGVmYXVsdE1vZGUoKSk7CisgICAgcG9zdFRh
c2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgV29y
a2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiB0YXNrKQordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRl
cm1pbmF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
aykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKFRhc2s6OmNyZWF0ZSh0YXNr
LCBkZWZhdWx0TW9kZSgpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgbV9tZXNzYWdlUXVldWUuYXBw
ZW5kQW5kS2lsbChUYXNrOjpjcmVhdGUoc3RkOjptb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpLmlz
b2xhdGVkQ29weSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2Rl
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHRhc2ssIG1v
ZGUuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3Jl
YXRlKHN0ZDo6bW92ZSh0YXNrKSwgbW9kZS5pc29sYXRlZENvcHkoKSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRl
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQorc3RkOjp1bmlxdWVfcHRyPFdvcmtlclJ1bkxvb3A6OlRhc2s+IFdvcmtlclJ1
bkxvb3A6OlRhc2s6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8VGFzaz4obmV3IFRhc2sodGFzaywgbW9kZSkpOworICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8VGFzaz4obmV3IFRhc2soc3RkOjptb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZv
aWQgV29ya2VyUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYg
cnVuTG9vcCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTIyMyw4ICsyMjMs
OCBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1
bkxvb3AmIHJ1bkxvb3AsIFNjcmlwdEV4ZWN1dAogICAgICAgICBtX3Rhc2stPnBlcmZvcm1UYXNr
KGNvbnRleHQpOwogfQogCi1Xb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKFBhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotICAg
IDogbV90YXNrKHRhc2spCitXb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUp
CisgICAgOiBtX3Rhc2soc3RkOjptb3ZlKHRhc2spKQogICAgICwgbV9tb2RlKG1vZGUuaXNvbGF0
ZWRDb3B5KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCmluZGV4
IDNkZWU1YTUuLmE3MjY0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5o
CkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0ZXJt
aW5hdGUoKTsKICAgICAgICAgYm9vbCB0ZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZXNz
YWdlUXVldWUua2lsbGVkKCk7IH0KIAotICAgICAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAgICAgICB2b2lkIHBvc3RUYXNrQW5k
VGVybWluYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAg
ICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgICAgICB2b2lkIHBvc3RUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgICAgIHZv
aWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0VGFza0Zvck1vZGUoc3RkOjp1bmlxdWVf
cHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwog
CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWQoKSB7IHJldHVybiArK21fdW5p
cXVlSWQ7IH0KIApAQCAtNzEsMTUgKzcxLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgY2xhc3MgVGFzayB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXNrKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRhc2s+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgICAgICAgICB+
VGFzaygpIHsgfQogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CiAgICAgICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1
bkxvb3AmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgICAgIFRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgICAgICAgICAgVGFzayhzdGQ6OnVuaXF1ZV9w
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAg
ICAgICAgIAotICAgICAgICAgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IG1fdGFzazsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBtX3Rhc2s7CiAgICAgICAgICAgICBTdHJpbmcgbV9tb2RlOwogICAgICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggNjczM2QxNC4u
NjE4ZDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTg5
LDEyICsxODksOSBAQCB2b2lkIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKIH0KIAogY2xh
c3MgV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRo
cmVhZFNodXRkb3duRmluaXNoVGFzaz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKCkpOwotICAgIH0KKyAg
ICBXVEZfTUFLRV9VTklRVUUoV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKTsKIAorcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
ICpjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKQEAgLTIwNywxNSArMjA0LDE1IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBXb3JrZXJUaHJlYWRTaHV0ZG93bkZp
bmlzaFRhc2soKSB7IH0KIH07CiAKIGNsYXNzIFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNr
IDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrPiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTaHV0ZG93blN0
YXJ0VGFzaygpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFKFdvcmtlclRocmVhZFNodXRk
b3duU3RhcnRUYXNrKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
QEAgLTI0MywxMCArMjQwLDEzIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTdGljayBhIHNodXRk
b3duIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUsIHNvIHRoYXQgd2UgZGVhbAogICAg
ICAgICAvLyB3aXRoIGFsbCB0aGUgY2xlYW51cCB0YXNrcyB0aGUgZGF0YWJhc2VzIHBvc3QgZmly
c3QuCi0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5wb3N0VGFzayhXb3JrZXJUaHJlYWRTaHV0
ZG93bkZpbmlzaFRhc2s6OmNyZWF0ZSgpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBv
c3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrPigp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFz
aygpIHsgfQogfTsKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQpAQCAtMjYxLDE0ICsyNjEs
MjAgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQobV93b3JrZXJHbG9iYWxTY29wZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAg
bV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRU
YXNrOjpjcmVhdGUoKSk7CisgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRlcm1pbmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX3J1bkxvb3AudGVybWluYXRlKCk7CiB9CiAKIGNsYXNz
IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CisgICAgV1RGX01BS0VfVU5JUVVFKFJlbGVhc2VGYXN0TWFsbG9jRnJl
ZU1lbW9yeVRhc2spOworCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERSB7IFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnlUYXNrKCkgeyB9CiB9OwogCiB2b2lkIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKQEAgLTI3Nyw3ICsyODMsNyBAQCB2b2lkIFdvcmtlclRo
cmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKICAgICBIYXNo
U2V0PFdvcmtlclRocmVhZCo+JiB0aHJlYWRzID0gd29ya2VyVGhyZWFkcygpOwogICAgIEhhc2hT
ZXQ8V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9yIGVuZCA9IHRocmVhZHMuZW5kKCk7CiAgICAgZm9y
IChIYXNoU2V0PFdvcmtlclRocmVhZCo+OjppdGVyYXRvciBpdCA9IHRocmVhZHMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+cnVuTG9vcCgpLnBvc3RUYXNrKGFkb3B0
UHRyKG5ldyBSZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlUYXNrKSk7CisgICAgICAgICgqaXQp
LT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxSZWxlYXNlRmFzdE1hbGxvY0Zy
ZWVNZW1vcnlUYXNrPigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="239325"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216418</attachid>
            <date>2013-11-08 11:30:38 -0800</date>
            <delta_ts>2013-11-12 13:55:51 -0800</delta_ts>
            <desc>Third attempt</desc>
            <filename>sectask.p</filename>
            <type>text/plain</type>
            <size>80296</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
b21waWxlci5oCmluZGV4IGYyMTc4YjguLmMxYjU5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAtMTMxLDcg
KzEzMSw2IEBACiAjaWYgR0NDX1ZFUlNJT05fQVRfTEVBU1QoNCwgMywgMCkKICNkZWZpbmUgV1RG
X0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9SVkFMVUVfUkVGRVJFTkNFUyAxCiAjZGVmaW5lIFdURl9D
T01QSUxFUl9TVVBQT1JUU19DWFhfU1RBVElDX0FTU0VSVCAxCi0jZGVmaW5lIFdURl9DT01QSUxF
Ul9TVVBQT1JUU19DWFhfVkFSSUFESUNfVEVNUExBVEVTIDEKICNkZWZpbmUgV1RGX0NPTVBJTEVS
X1NVUFBPUlRTX0NYWF9BVVRPX1RZUEUgMQogI2VuZGlmCiAjaWYgR0NDX1ZFUlNJT05fQVRfTEVB
U1QoNCwgNCwgMCkKQEAgLTE0OSw2ICsxNDgsOSBAQAogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBp
Z25vcmVkICItV3VudXNlZC1sb2NhbC10eXBlZGVmcyIKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NV
UFBPUlRTX0NYWF9PVkVSUklERV9DT05UUk9MIDEKICNlbmRpZgorI2lmIEdDQ19WRVJTSU9OX0FU
X0xFQVNUKDQsIDgsIDApCisjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfVkFSSUFE
SUNfVEVNUExBVEVTIDEKKyNlbmRpZgogI2VuZGlmIC8qIGRlZmluZWQoX19HWFhfRVhQRVJJTUVO
VEFMX0NYWDBYX18pIHx8IChkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBfX2NwbHVzcGx1cyA+PSAy
MDExMDNMKSAqLwogI2VuZGlmIC8qIENPTVBJTEVSKEdDQykgKi8KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJv
eWVkLmgKaW5kZXggMjIzMjBmZi4uN2ViYTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TmV2ZXJEZXN0cm95ZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBA
IC02Myw2ICs2MywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBuZXcgKE5vdE51bGwsIGFz
UHRyKCkpIFQoc3RkOjpmb3J3YXJkPEExPihhMSkpOwogICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KKyAgICBOZXZlckRlc3Ryb3llZChBMSYmIGExLCBBMiYm
IGEyKQorICAgIHsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBhc1B0cigpKSBUKHN0ZDo6Zm9yd2Fy
ZDxBMT4oYTEpLCBzdGQ6OmZvcndhcmQ8QTI+KGEyKSk7CisgICAgfQogI2VuZGlmCiAKICAgICBv
cGVyYXRvciBUJigpIHsgcmV0dXJuICphc1B0cigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4
IGFhZWZmNTAuLjZkOGZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC00NDIsNiArNDQyLDcx
IEBAIG5hbWVzcGFjZSBzdGQgewogI2VuZGlmCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTxjbGFzcyBUPgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQwIHsKKyAgICB0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjxUPihUeXBlKSgpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
QTE+CitzdHJ1Y3QgTWFrZVVuaXF1ZUZyaWVuZDEgeworICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVf
cHRyPFQ+KFR5cGUpKEExJiYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNs
YXNzIEEyPgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQyIHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5p
cXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNs
YXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+CitzdHJ1Y3QgTWFrZVVuaXF1ZUZyaWVuZDMgewor
ICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+KFR5cGUpKEExJiYsIEEyJiYsIEEzJiYpOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xh
c3MgQTQ+CitzdHJ1Y3QgTWFrZVVuaXF1ZUZyaWVuZDQgeworICAgIHR5cGVkZWYgc3RkOjp1bmlx
dWVfcHRyPFQ+KFR5cGUpKEExJiYsIEEyJiYsIEEzJiYsIEE0JiYpOworfTsKKwordGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1
Pgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQ1IHsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0
cjxUPihUeXBlKShBMSYmLCBBMiYmLCBBMyYmLCBBNCYmLCBBNSYmKTsKK307CisKK3RlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBB
NSwgY2xhc3MgQTY+CitzdHJ1Y3QgTWFrZVVuaXF1ZUZyaWVuZDYgeworICAgIHR5cGVkZWYgc3Rk
Ojp1bmlxdWVfcHRyPFQ+KFR5cGUpKEExJiYsIEEyJiYsIEEzJiYsIEE0JiYsIEE1JiYsIEE2JiYp
OworfTsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywg
Y2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+CitzdHJ1Y3QgTWFrZVVuaXF1
ZUZyaWVuZDcgeworICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+KFR5cGUpKEExJiYsIEEy
JiYsIEEzJiYsIEE0JiYsIEE1JiYsIEE2JiYsIEE3JiYpOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFz
cyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4Pgorc3RydWN0IE1ha2VVbmlxdWVGcmllbmQ4IHsKKyAg
ICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxUPihUeXBlKShBMSYmLCBBMiYmLCBBMyYmLCBBNCYm
LCBBNSYmLCBBNiYmLCBBNyYmLCBBOCYmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNs
YXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+CitzdHJ1Y3QgTWFrZVVuaXF1ZUZyaWVuZDkgewor
ICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFQ+KFR5cGUpKEExJiYsIEEyJiYsIEEzJiYsIEE0
JiYsIEE1JiYsIEE2JiYsIEE3JiYsIEE4JiYsIEE5JiYpOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFz
cyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgorc3RydWN0IE1h
a2VVbmlxdWVGcmllbmQxMCB7CisgICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8VD4oVHlwZSko
QTEmJiwgQTImJiwgQTMmJiwgQTQmJiwgQTUmJiwgQTYmJiwgQTcmJiwgQTgmJiwgQTkmJiwgQTEw
JiYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKy8vIEZJWE1FOiBCZXR0ZXIgc29sdXRp
b25zOgorLy8gICAgZnJpZW5kIGRlY2x0eXBlKHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NOYW1lPikg
c3RkOjptYWtlX3VuaXF1ZTxDbGFzc05hbWU+OworLy8gICAgZnJpZW5kIGRlY2x0eXBlKHN0ZDo6
bWFrZV91bmlxdWU8Q2xhc3NOYW1lLCBfX1ZBX0FSR1NfXz4pIHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NOYW1lPjsKKyNkZWZpbmUgV1RGX01BS0VfVU5JUVVFKENsYXNzTmFtZSkgZnJpZW5kIFdURjo6
TWFrZVVuaXF1ZUZyaWVuZDA8Q2xhc3NOYW1lPjo6VHlwZSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TmFtZT47CisjZGVmaW5lIFdURl9NQUtFX1VOSVFVRV9BUkdTKE5BUkdTLCBDbGFzc05hbWUsIC4u
LikgZnJpZW5kIFdURjo6TWFrZVVuaXF1ZUZyaWVuZCAjIyBOQVJHUzxDbGFzc05hbWUsIF9fVkFf
QVJHU19fPjo6VHlwZSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTmFtZSwgX19WQV9BUkdTX18+Owor
CiB1c2luZyBXVEY6OktCOwogdXNpbmcgV1RGOjpNQjsKIHVzaW5nIFdURjo6aW5zZXJ0SW50b0Jv
dW5kZWRWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0
b3JhZ2VFcnJvckNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3Jh
Z2VFcnJvckNhbGxiYWNrLmgKaW5kZXggZmZjZTdiNi4uMDdkZDljZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaApAQCAtNDks
MTIgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChET01Db3Jl
RXhjZXB0aW9uKikgPSAwOwogCiAgICAgY2xhc3MgQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NPd25QdHI8Q2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxs
YmFjaz4gY2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUgZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ2FsbGJhY2tUYXNrKGNhbGxiYWNrLCBlYykpOwotICAgICAg
ICB9CisgICAgICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDIsIENhbGxiYWNrVGFzaywgUGFzc1Jl
ZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4mLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9TdG9yYWdlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0
b3JhZ2VJbmZvLmNwcAppbmRleCA2Mjc1ZWY5Li4zYzM0YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0
b3JhZ2VJbmZvOjpxdWVyeVVzYWdlQW5kUXVvdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udAogICAgIFN0b3JhZ2VRdW90YSogc3RvcmFnZVF1b3RhID0gZ2V0U3Rv
cmFnZVF1b3RhKHN0b3JhZ2VUeXBlKTsKICAgICBpZiAoIXN0b3JhZ2VRdW90YSkgewogICAgICAg
ICAvLyBVbmtub3duIHN0b3JhZ2UgdHlwZSBpcyByZXF1ZXN0ZWQuCi0gICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFN0b3JhZ2VFcnJvckNhbGxiYWNrOjpDYWxsYmFja1Rh
c2s6OmNyZWF0ZShlcnJvckNhbGxiYWNrLCBOT1RfU1VQUE9SVEVEX0VSUikpOworICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VF
cnJvckNhbGxiYWNrOjpDYWxsYmFja1Rhc2s+KGVycm9yQ2FsbGJhY2ssIE5PVF9TVVBQT1JURURf
RVJSKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3RvcmFnZVF1b3RhLT5xdWVyeVVz
YWdlQW5kUXVvdGEoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTdG9yYWdlSW5mbzo6cmVxdWVzdFF1
b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGkKICAg
ICBTdG9yYWdlUXVvdGEqIHN0b3JhZ2VRdW90YSA9IGdldFN0b3JhZ2VRdW90YShzdG9yYWdlVHlw
ZSk7CiAgICAgaWYgKCFzdG9yYWdlUXVvdGEpIHsKICAgICAgICAgLy8gVW5rbm93biBzdG9yYWdl
IHR5cGUgaXMgcmVxdWVzdGVkLgotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrOjpjcmVhdGUoZXJyb3JDYWxs
YmFjaywgTk9UX1NVUFBPUlRFRF9FUlIpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJh
Y2tUYXNrPihlcnJvckNhbGxiYWNrLCBOT1RfU1VQUE9SVEVEX0VSUikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHN0b3JhZ2VRdW90YS0+cmVxdWVzdFF1b3RhKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIG5ld1F1b3RhSW5CeXRlcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
aW5kZXggODY5Yzg1Zi4uODY1NjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTg1LDEyICs4NSw5IEBAIERhdGFiYXNlOjpEYXRh
YmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwK
IH0KIAogY2xhc3MgRGVyZWZDb250ZXh0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEZXJlZkNvbnRleHRU
YXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZXJlZkNvbnRleHRUYXNrKGNvbnRl
eHQpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMSwgRGVyZWZDb250ZXh0VGFz
aywgUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0Pik7CiAKK3B1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dCA9PSBtX2NvbnRl
eHQpOwpAQCAtMTA0LDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCkBAIC0xMTYsNyArMTEzLDcgQEAgRGF0YWJhc2U6On5E
YXRhYmFzZSgpCiAgICAgICAgIC8vIERlcmVmQ29udGV4dFRhc2s6OmNyZWF0ZS4KICAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKICAgICAgICAgCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKERlcmVmQ29udGV4dFRhc2s6OmNyZWF0ZShtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQucmVsZWFzZSgpKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZDb250ZXh0VGFzaz4obV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnJlbGVhc2UoKSkpOwogICAgIH0KIH0KIApAQCAtMjA0LDEyICsyMDEsOSBA
QCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
Q2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUgogfQogCiBjbGFzcyBEZWxpdmVyUGVuZGluZ0NhbGxi
YWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayh0cmFuc2FjdGlv
bikpOwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygxLCBEZWxpdmVyUGVuZGluZ0Nh
bGxiYWNrVGFzaywgU1FMVHJhbnNhY3Rpb24qJik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBt
X3RyYW5zYWN0aW9uLT5wZXJmb3JtUGVuZGluZ0NhbGxiYWNrKCk7CkBAIC0yMjYsNyArMjIwLDcg
QEAgcHJpdmF0ZToKIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNr
KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnBvc3RUYXNrKERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrOjpjcmVhdGUodHJhbnNh
Y3Rpb24pKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+KHRyYW5zYWN0aW9uKSk7CiB9CiAK
IFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKaW5kZXggNGVlZDZlMi4uMTFjYTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTE4LDEyICsxMTgs
OSBAQCB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUp
CiB9CiAKIGNsYXNzIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RGF0YWJhc2U+
IGRhdGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2sp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERhdGFiYXNlQ3JlYXRpb25DYWxs
YmFja1Rhc2soZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKLSAgICB9CisgICAgV1RGX01B
S0VfVU5JUVVFX0FSR1MoMiwgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaywgUmVmUHRyPERh
dGFiYXNlPiYsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4mKTsKIAorcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7
CiAgICAgICAgIG1fY3JlYXRpb25DYWxsYmFjay0+aGFuZGxlRXZlbnQobV9kYXRhYmFzZS5nZXQo
KSk7CkBAIC0zMjksNyArMzI2LDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5h
Z2VyOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGUKIAogICAgIGlm
IChiYWNrZW5kLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKICAgICAgICAg
TE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sg
Zm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlLT5t
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKERhdGFiYXNlQ3JlYXRpb25DYWxsYmFj
a1Rhc2s6OmNyZWF0ZShkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOworICAgICAgICBkYXRh
YmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVl
PERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s+KGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNr
KSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAppbmRleCBmOTJjMzRmLi42
NjIyYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuY3BwCkBAIC0xNTgsMjcgKzE1OCw2IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpt
YXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGRvIHNvbWV0aGlu
ZyBzaW1pbGFyIHRvIGNsb3NlSW1tZWRpYXRlbHkoKSwgYnV0IGluIGEgc3luYyB3YXkKIH0KIAot
Y2xhc3MgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8
RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrKGRhdGFiYXNlKSk7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KQotICAgIHsKLSAgICAgICAgbV9kYXRhYmFzZS0+Y2xvc2VJbW1lZGlhdGVseSgpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2soUGFz
c1JlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0
YWJhc2UpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1fZGF0YWJh
c2U7Ci19OwotCiB2b2lkIERhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAg
QVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dy
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tX
cmFwcGVyLmgKaW5kZXggYzE4NGEzNy4uNTM0ZGYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC03Myw3
ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgICAgIGNhbGxiYWNrID0gbV9j
YWxsYmFjay5yZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQt
PnBvc3RUYXNrKFNhZmVSZWxlYXNlVGFzazo6Y3JlYXRlKGNhbGxiYWNrKSk7CisgICAgICAgIGNv
bnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2FmZVJlbGVhc2VUYXNrPihjYWxsYmFj
aykpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKQEAgLTkwLDkgKzkwLDkg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjbGFzcyBTYWZlUmVsZWFzZVRhc2sgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxTYWZlUmVsZWFzZVRhc2s+IGNyZWF0ZShUKiBjYWxsYmFja1RvUmVsZWFz
ZSkKKyAgICAgICAgZXhwbGljaXQgU2FmZVJlbGVhc2VUYXNrKFQqIGNhbGxiYWNrVG9SZWxlYXNl
KQorICAgICAgICAgICAgOiBtX2NhbGxiYWNrVG9SZWxlYXNlKGNhbGxiYWNrVG9SZWxlYXNlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNhZmVSZWxlYXNlVGFz
ayhjYWxsYmFja1RvUmVsZWFzZSkpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0xMDUsMTEg
KzEwNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQg
U2FmZVJlbGVhc2VUYXNrKFQqIGNhbGxiYWNrVG9SZWxlYXNlKQotICAgICAgICAgICAgOiBtX2Nh
bGxiYWNrVG9SZWxlYXNlKGNhbGxiYWNrVG9SZWxlYXNlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQogICAgICAgICBUKiBtX2NhbGxiYWNrVG9SZWxlYXNlOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggNmVkM2Nh
Mi4uNzY2MjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAKQEAgLTIzMiw5ICsyMzIsOCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcygpCiAgICAgICAgIG1f
Y29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjaywgdGhpcykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4+IHRhc2tzOwotICAgIHRhc2tzLnN3YXAobV9wZW5kaW5nVGFza3Mp
OwotICAgIGZvciAoVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj46
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB0YXNrcy5iZWdpbigpOyBpdGVyICE9IHRhc2tzLmVuZCgp
OyArK2l0ZXIpCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPj4gdGFza3MgPSBzdGQ6Om1vdmUobV9wZW5kaW5nVGFza3MpOworICAgIGZvciAo
YXV0byBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQoKTsgKytpdGVyKQog
ICAgICAgICAoKml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGQzNjRjNjUuLjkwMzM4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgK
QEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiAgICAgdW5zaWduZWQgbG9uZyBt
X2J1ZmZlcmVkQW1vdW50OwogICAgIGJvb2wgbV9zdXNwZW5kZWQ7Ci0gICAgVmVjdG9yPE93blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5k
aW5nVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlYjZhYzU3Li4xZjI5MzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2MCwxNCArMzYwLDEw
IEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6On5CcmlkZ2UoKQog
fQogCiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFs
U2NvcGVEaWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXIq
IHBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBw
ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckdsb2JhbFNjb3Bl
RGlkSW5pdGlhbGl6ZVRhc2socGVlciwgbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIp
KTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMywgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2ssCisgICAg
ICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyKiYsIFdvcmtlckxvYWRl
clByb3h5KiYsIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxp
emVUYXNrKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewpAQCAtNDA2LDcgKzQwMiw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZElu
aXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBQZWVyKiBwZWVyID0gUGVlcjo6Y3JlYXRlKGNs
aWVudFdyYXBwZXIsICpsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUpOwogICAgIGJvb2wg
c2VudCA9IGxvYWRlclByb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKAot
ICAgICAgICBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2Nv
cGVEaWRJbml0aWFsaXplVGFzazo6Y3JlYXRlKHBlZXIsIGxvYWRlclByb3h5LCBjbGllbnRXcmFw
cGVyKSwgdGFza01vZGUpOworICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrPihw
ZWVyLCBsb2FkZXJQcm94eSwgY2xpZW50V3JhcHBlciksIHRhc2tNb2RlKTsKICAgICBpZiAoIXNl
bnQpIHsKICAgICAgICAgY2xpZW50V3JhcHBlci0+Y2xlYXJQZWVyKCk7CiAgICAgICAgIGRlbGV0
ZSBwZWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5k
ZXggZDMyMWM1Ny4uODFhOGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bGxiYWNrRGF0YS5oCkBAIC03NiwxOSArNzYsMTMgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIERl
bGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVsZXRlQ2FsbGJhY2tEYXRhVGFz
az4gY3JlYXRlKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBEZWxldGVDYWxsYmFja0RhdGFUYXNrKGRhdGEpKTsKLSAgICB9CisgICAgV1RG
X01BS0VfVU5JUVVFX0FSR1MoMSwgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzaywgSlNDYWxsYmFja0Rh
dGEqJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopCi0gICAgewotICAgICAgICBkZWxldGUgbV9kYXRhOwotICAgIH0KK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgZGVs
ZXRlIG1fZGF0YTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotcHJpdmF0ZToKIAorcHJpdmF0ZToKICAgICBEZWxldGVDYWxsYmFja0Rh
dGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKSA6IG1fZGF0YShkYXRhKSB7fQogCiAgICAgSlND
YWxsYmFja0RhdGEqIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3RUYXNrLmgKaW5kZXggNjcyY2M4NS4uNzk1ZTQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNET01HbG9iYWxPYmplY3RUYXNrX2gKIAogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNCwxOSArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNHbG9iYWxP
YmplY3RDYWxsYmFjazsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3RUYXNrIEZJTkFMIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPEpTR2xvYmFsT2JqZWN0VGFzaz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRM
b29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tD
b250ZXh0PiB0YXNrQ29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SlNHbG9iYWxPYmplY3RUYXNrKGdsb2JhbE9iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0
KSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDMsIEpTR2xvYmFsT2JqZWN0VGFz
aywgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHImLCBQYXNzUmVmUHRyPEpTQzo6VGFz
a0NvbnRleHQ+Jik7CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMywgSlNHbG9iYWxPYmplY3RU
YXNrLCBKU0RPTVdpbmRvd0Jhc2UqLCBKU0M6Okdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHImLCBQYXNzUmVmUHRyPEpTQzo6VGFz
a0NvbnRleHQ+Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdFRhc2so
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIEpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2Jh
bE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRM
b29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0Pik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9W
RVJSSURFOwotCiAgICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IG1fY2FsbGJhY2s7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAppbmRleCA2MWRhM2Y1Li5jYWZjMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBib29sIEpTRE9NV2lu
ZG93QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2JhbE9iamVj
dCogb2JqZWN0KQogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1
ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBhc3NSZWZQ
dHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFz
ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVj
dCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhK
U0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCBm
dW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RUYXNr
PigoSlNET01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQp
KTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93U2hlbGwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCmluZGV4IGZmNWZkYmUuLjQyZWY4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpqYXZhU2NyaXB0RXhw
ZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kgogdm9pZCBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9i
amVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZlbnRMb29wQ2FsbGJh
Y2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNrQ29udGV4dD4gdGFza0Nv
bnRleHQpCiB7CiAgICAgY29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+KG9iamVjdCk7Ci0g
ICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2Jh
bE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01HbG9iYWxPYmplY3QqKXRoaXNPYmplY3QsIGZ1bmN0
aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFRhc2s+KChK
U0RPTUdsb2JhbE9iamVjdCopdGhpc09iamVjdCwgZnVuY3Rpb25QdHIsIHRhc2tDb250ZXh0KSk7
CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4OWUwYTIzLi5j
ZjY2NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMzEwMyw3ICszMTAzLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8
fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBkZWxldGUgbV9kYXRhO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgZWxzZVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s6OmNyZWF0ZShtX2RhdGEpKTtcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s+KG1fZGF0YSkpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWZuZGVmIE5ERUJVR1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgbV9kYXRhID0gMDtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IDAxMWMwNGQuLjY0NmYwNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcApAQCAtNDksNyArNDksNyBAQCBKU1Rlc3RDYWxsYmFjazo6fkpTVGVzdENhbGxi
YWNrKCkKICAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCiAg
ICAgICAgIGRlbGV0ZSBtX2RhdGE7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5wb3N0VGFz
ayhEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpjcmVhdGUobV9kYXRhKSk7CisgICAgICAgIGNvbnRl
eHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGVsZXRlQ2FsbGJhY2tEYXRhVGFzaz4obV9k
YXRhKSk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fZGF0YSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Dcm9zc1RocmVhZFRhc2suaAppbmRleCA2Y2M1Zjg0Li5mZmUyYTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC02MywxMiArNjMsNiBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBDcm9zc1RocmVhZFRhc2sxPFAxLCBNUDE+IENyb3NzVGhyZWFkVGFzazsKICAgICB0
eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJh
bTE7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSkpOwotICAgIH0KLQot
cHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJh
bWV0ZXIxKQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRl
cjEocGFyYW1ldGVyMSkKQEAgLTkzLDEyICs4Nyw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5
cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7CiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFy
YW0yOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0
aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJh
bWV0ZXIxLCBwYXJhbWV0ZXIyKSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3NzVGhyZWFk
VGFzazIoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIy
KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFy
YW1ldGVyMSkKQEAgLTEyNiwxMiArMTE0LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7
CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJh
bWV0ZXIzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRh
c2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7Ci0gICAgfQot
Ci1wcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazMoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMykKICAgICAgICAg
OiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBA
IC0xNjIsMTIgKzE0NCw2IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhy
ZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlwZSBQYXJhbTM7CiAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwogCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFy
YW00IHBhcmFtZXRlcjQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3Nz
VGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBh
cmFtZXRlcjQpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrNChNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2Qp
CiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yMDEsMTIgKzE3Nyw2IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQND46
OlBhcmFtVHlwZSBQYXJhbTQ7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tU
cmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBh
cmFtNSBwYXJhbWV0ZXI1KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9z
c1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBw
YXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENyb3NzVGhy
ZWFkVGFzazUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0
ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0
ZXI1KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKQEAgLTI0MywxMiArMjEzLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKICAgICB0
eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJh
bTY7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBw
YXJhbWV0ZXI2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVh
ZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0
ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIENy
b3NzVGhyZWFkVGFzazYoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBw
YXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBw
YXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKICAgICAgICAgOiBtX21ldGhvZChtZXRob2Qp
CiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yODgsMTIgKzI1Miw2IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNj46
OlBhcmFtVHlwZSBQYXJhbTY7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tU
cmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBh
cmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2Qs
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRl
cjUsIHBhcmFtZXRlcjYsIHBhcmFtZXRlcjcpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jv
c3NUaHJlYWRUYXNrNyhNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBh
cmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBh
cmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKICAgICAgICAg
OiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBA
IC0zMzUsMTMgKzI5Myw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhy
ZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CiAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDc+OjpQYXJhbVR5cGUgUGFyYW03OwogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA4Pjo6UGFyYW1UeXBlIFBhcmFtODsK
LSAgICAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRo
b2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBw
YXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBw
YXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFt
ZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUsIHBh
cmFtZXRlcjYsIHBhcmFtZXRlcjcsIHBhcmFtZXRlcjgpKTsKLSAgICB9Ci0gICAgCi1wcml2YXRl
OgorCiAgICAgQ3Jvc3NUaHJlYWRUYXNrOChNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVy
MSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVy
NCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVy
NywgUGFyYW04IHBhcmFtZXRlcjgpCiAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgLCBtX3Bh
cmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTM1NCwxMiArMzA2LDEyIEBAIHByaXZhdGU6CiAgICAg
LCBtX3BhcmFtZXRlcjgocGFyYW1ldGVyOCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1l
dGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0
ZXI2LCBtX3BhcmFtZXRlcjcsIG1fcGFyYW1ldGVyOCk7CiAgICAgfQotICAgIAorCiBwcml2YXRl
OgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CkBAIC0zNzMsNTUg
KzMyNSw1NSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1l
IE1QMT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2Fs
bGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICByZXR1cm4g
Q3Jvc3NUaHJlYWRUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1Q
MT46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2sx
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxPj4oCiAgICAgICAgIG1l
dGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMj4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3Jl
YXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTVAxLCBNUDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25z
dCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrMjx0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q3Jvc3NUaHJlYWRUYXNrMjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUs
IE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+PigKICAgICAg
ICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVy
MSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1QYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1l
dGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMpLAogICAgIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBhcmFtZXRl
cjMpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazM8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMz46OmNyZWF0
ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2szPHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBl
LCBNUDM+PigKICAgICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46
OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIy
KSwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QND4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2Fs
bGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwg
Y29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFy
YW1ldGVyNCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNDx0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+
OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAot
ICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QND46OmNyZWF0
ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s0PHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBl
LCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0
Pj4oCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
MT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0
ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlw
ZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9k
KShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMmIHBh
cmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsK
LSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
MT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIs
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5
cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+OjpUeXBlLCBNUDU+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+
Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVy
NCksCkBAIC00MjksMTIgKzM4MSwxMiBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5
cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVu
YW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLVBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2
b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDUsIE1QNiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0
ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1
JiBwYXJhbWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKIHsKLSAgICByZXR1cm4gQ3Jvc3NU
aHJlYWRUYXNrNjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBl
LCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2Pjo6Y3JlYXRl
KAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazY8dHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUs
IE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQs
IHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj4+KAogICAgICAgICAgICAgbWV0aG9kLAogICAg
ICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29w
eShwYXJhbWV0ZXI0KSwKQEAgLTQ0MiwxMyArMzk0LDEzIEBAIFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFt
ZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQ
NywgdHlwZW5hbWUgTVA3PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMm
IHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1ldGVyNSwg
Y29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQogewotICAgIHJldHVy
biBDcm9zc1RocmVhZFRhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwg
TVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5
cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAogICAgICAgICB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwg
TVA2LAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5cGUsIE1QNz46
OmNyZWF0ZSgKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBN
UDc+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFt
ZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCkBAIC00NTcsMTMg
KzQwOSwxMyBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0
ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5h
bWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUg
UDgsIHR5cGVuYW1lIE1QOD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1Q
OCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0
IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRl
cjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywgY29uc3QgUDgm
IHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazg8dHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1Q
MywKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s4PHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBl
LCBNUDMsCiAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKLSAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQNz46OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+OjpUeXBlLCBN
UDg+OjpjcmVhdGUoCisgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBN
UDcsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6VHlwZSwgTVA4Pj4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNzBiNjdjMi4uNTg0Mzc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC00NzQxLDcgKzQ3NDEsNyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZUROU1ByZWZldGNo
Q29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZldGNoQ29udHJvbCkKIHZvaWQgRG9j
dW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RU
YXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Up
KTsKKyAgICAgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRh
c2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDc1Miw3ICs0NzUyLDcgQEAgdm9pZCBEb2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QKIHZvaWQgRG9jdW1l
bnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAg
ICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1l
c3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ3NjgsMTQgKzQ3NjgsMTQgQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0
b3BPcmlnaW4oKSBjb25zdAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUGVyZm9ybVRhc2tDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgUGVyZm9ybVRhc2tDb250ZXh0KFdlYWtQdHI8RG9jdW1lbnQ+IGRv
Y3VtZW50LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCisg
ICAgUGVyZm9ybVRhc2tDb250ZXh0KFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKICAgICAgICAgOiBk
b2N1bWVudFJlZmVyZW5jZShkb2N1bWVudCkKLSAgICAgICAgLCB0YXNrKHRhc2spCisgICAgICAg
ICwgdGFzayhzdGQ6Om1vdmUodGFzaykpCiAgICAgewogICAgIH0KIAogICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlOwotICAgIE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrOwogfTsKIAogdm9pZCBEb2N1bWVudDo6ZGlkUmVjZWl2ZVRhc2sodm9p
ZCogdW50eXBlZENvbnRleHQpCkBAIC00NzkxLDIyICs0NzkxLDIyIEBAIHZvaWQgRG9jdW1lbnQ6
OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVudHlwZWRDb250ZXh0KQogCiAgICAgUGFnZSogcGFnZSA9
IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKChwYWdlICYmIHBhZ2UtPmRlZmVyc0xvYWRpbmco
KSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZG9j
dW1lbnQtPm1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjb250ZXh0LT50YXNrLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptb3ZlKGNvbnRleHQt
PnRhc2spKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnRleHQtPnRhc2stPnBl
cmZvcm1UYXNrKGRvY3VtZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soUGFzc093
blB0cjxUYXNrPiB0YXNrKQordm9pZCBEb2N1bWVudDo6cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRy
PFRhc2s+IHRhc2spCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWNlaXZlVGFzaywgbmV3
IFBlcmZvcm1UYXNrQ29udGV4dChtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwgdGFzaykp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ssIG5ldyBQZXJmb3JtVGFza0Nv
bnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHN0ZDo6bW92ZSh0YXNrKSkpOwog
fQogCiB2b2lkIERvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50
PiopCiB7CiAgICAgd2hpbGUgKCFtX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
T3duUHRyPFRhc2s+IHRhc2sgPSBtX3BlbmRpbmdUYXNrc1swXS5yZWxlYXNlKCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrID0gc3RkOjptb3ZlKG1fcGVuZGluZ1Rhc2tzWzBd
KTsKICAgICAgICAgbV9wZW5kaW5nVGFza3MucmVtb3ZlKDApOwogICAgICAgICB0YXNrLT5wZXJm
b3JtVGFzayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGZjMzYzNGEuLjI2
YmU4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05MzEsNyArOTMxLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNETlNQcmVmZXRjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE5TUHJl
ZmV0Y2hFbmFibGVkOyB9CiAgICAgdm9pZCBwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihj
b25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRh
c2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBh
c3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlxdWVfcHRy
PFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVh
ZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CkBAIC0xNTE3LDcgKzE1MTcsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9wZW5kaW5nVGFza3NUaW1lcjsKLSAgICBWZWN0b3I8
T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKIAogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCmluZGV4IGM5MDIwZmUuLmQxMzVmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTUwLDEyICs1MCw5IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBy
b2Nlc3NNZXNzYWdlc1Nvb25UYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBQcm9jZXNzTWVzc2FnZXNTb29uVGFzayk7Ci0gICAgfQorICAgIFdURl9NQUtF
X1VOSVFVRShQcm9jZXNzTWVzc2FnZXNTb29uVGFzayk7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKTsKQEAgLTExOSw3
ICsxMTYsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVz
c2FnZXNTb29uKCkKIHsKLSAgICBwb3N0VGFzayhQcm9jZXNzTWVzc2FnZXNTb29uVGFzazo6Y3Jl
YXRlKCkpOworICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc01lc3NhZ2VzU29v
blRhc2s+KCkpOwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVz
c2FnZVBvcnRFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggODdiMjdkZC4uMWUzNWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgfTsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSA9IDA7
IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHku
CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPikgPSAwOyAv
LyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5Lgog
CiAgICAgLy8gR2V0cyB0aGUgbmV4dCBpZCBpbiBhIGNpcmN1bGFyIHNlcXVlbmNlIGZyb20gMSB0
byAyXjMxLTEuCiAgICAgaW50IGNpcmN1bGFyU2VxdWVudGlhbElEKCk7CkBAIC0xNTcsMTggKzE1
NywxNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3NhZ2VU
YXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPiBjcmVhdGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2Us
IGxldmVsLCBtZXNzYWdlKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKLSAgICBwcml2YXRlOgog
ICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAgICAgOiBtX3Nv
dXJjZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgICAgICAgICAs
IG1fbWVzc2FnZShtZXNzYWdlLmlzb2xhdGVkQ29weSgpKQogICAgICAgICB7CiAgICAgICAgIH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSBPVkVSUklERTsKKyAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlU291cmNlIG1fc291cmNl
OwogICAgICAgICBNZXNzYWdlTGV2ZWwgbV9sZXZlbDsKICAgICAgICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGM2Mjg1YjEuLmU3NWFj
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzksMTIgKzM5LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIHsKIAogY2xhc3MgRGlzcGF0Y2hDYWxs
YmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGlzcGF0Y2hDYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNz
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBkYXRhKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaXNwYXRjaENhbGxiYWNrVGFzayhjYWxs
YmFjaywgZGF0YSkpOwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUVfQVJHUygyLCBEaXNwYXRj
aENhbGxiYWNrVGFzaywgU3RyaW5nQ2FsbGJhY2sqLCBjb25zdCBTdHJpbmcmKTsKIAorcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikK
ICAgICB7CiAgICAgICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZGF0YSk7CkBAIC02NSw3
ICs2Miw3IEBAIHByaXZhdGU6CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQog
ewotICAgIGNvbnRleHQtPnBvc3RUYXNrKERpc3BhdGNoQ2FsbGJhY2tUYXNrOjpjcmVhdGUodGhp
cywgZGF0YSkpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0
Y2hDYWxsYmFja1Rhc2s+KHN0YXRpY19jYXN0PFN0cmluZ0NhbGxiYWNrKj4odGhpcyksIGRhdGEp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA3MzU3
YjQ1Li43Yzk0Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTExOCwxMiArMTExOCw5IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVD
YWxsYmFjaygpCiB9CiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9n
cmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1Rv
dGFsLCBwcm9ncmVzc0RvbmUpKTsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoNCwg
Q2FsbENhY2hlTGlzdGVuZXJUYXNrLCBEb2N1bWVudExvYWRlciomLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCYsIGludCYsIGludCYpOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCiAg
ICAgewogICAgICAgICAKQEAgLTExNjcsNyArMTE2NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2
ZW50CiAgICAgCiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09
IGxvYWRlcik7CiAKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENhY2hlTGlz
dGVuZXJUYXNrOjpjcmVhdGUobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVz
c0RvbmUpKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1
ZTxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+KGxvYWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwg
cHJvZ3Jlc3NEb25lKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXRVcGRh
dGVTdGF0dXMoVXBkYXRlU3RhdHVzIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZDI4MDcw
NS4uOGIxZDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTc5LDggKzc5LDggQEAgcHVibGljOgog
ICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiwgY29uc3QgVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKIAogICAgIC8vIFdv
cmtlckxvYWRlclByb3h5Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgdmlydHVhbCBib29sIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHBvc3RU
YXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShz
dGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gV29ya2VyUmVwb3J0aW5nUHJveHkKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwpA
QCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvCiAgICAgcmV0dXJuIG5h
bWUgPT0gbV9uYW1lOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9h
ZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3ZvaWQg
U2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayht
X3dvcmtlckRvY3VtZW50c0xvY2spOwogCkBAIC0xNTIsMTUgKzE1MiwxNSBAQCB2b2lkIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzawogICAgIC8vIEp1c3QgcGljayBhbiBhcmJpdHJhcnkgYWN0aXZlIGRvY3Vt
ZW50IGZyb20gdGhlIEhhc2hTZXQgYW5kIHBhc3MgbG9hZCByZXF1ZXN0cyB0byBpdC4KICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHVzZXIg
Y2xvc2VzIHRoZSBkb2N1bWVudCBtaWQtbG9hZCwgdmlhIGEgc2hhZG93IGRvY3VtZW50IG9yIHNv
bWUgb3RoZXIgc29sdXRpb24/CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKihtX3dvcmtlckRv
Y3VtZW50cy5iZWdpbigpKTsKLSAgICBkb2N1bWVudC0+cG9zdFRhc2sodGFzayk7CisgICAgZG9j
dW1lbnQtPnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29ya2Vy
UHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29s
IFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHN0
ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKGlzQ2xvc2luZygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKLSAgICBtX3RocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKKyAgICBtX3RocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShzdGQ6Om1vdmUodGFzayksIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNTIsMTggKzI1Miw5IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNsb3NlKCkKIH0KIAog
Y2xhc3MgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcmVkV29ya2Vy
Q29ubmVjdFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5l
bCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2hhcmVkV29ya2VyQ29ubmVj
dFRhc2soY2hhbm5lbCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJDb25u
ZWN0VGFzayhQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKLSAgICAgICAg
OiBtX2NoYW5uZWwoY2hhbm5lbCkKLSAgICB7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFVRV9B
UkdTKDEsIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbD4mKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgUmVmUHRyPE1l
c3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqc2NyaXB0Q29udGV4dCk7CkBA
IC0yNzYsNiArMjY3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5k
aXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgfQogCitwcml2YXRl
OgorICAgIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiBjaGFubmVsKQorICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVsKQorICAgIHsKKyAgICB9
CisKICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7CiB9OwogCkBAIC0z
NjQsNyArMzYxLDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6d29ya2Vy
U2NyaXB0TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiBwcm94eSwKICAgICAgICAgcHJveHkuc2V0
VGhyZWFkKHRocmVhZCk7CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICB9Ci0gICAgcHJv
eHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6
Y3JlYXRlKHBvcnQpKTsKKyAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0
ZDo6bWFrZV91bmlxdWU8U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s+KHBvcnQpKTsKIH0KIAogYm9v
bCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVkV29ya2VycyhEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC00MTIsNyArNDA5LDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3IK
ICAgICB9CiAgICAgLy8gSWYgcHJveHkgaXMgYWxyZWFkeSBydW5uaW5nLCBqdXN0IGNvbm5lY3Qg
dG8gaXQgLSBvdGhlcndpc2UsIGtpY2sgb2ZmIGEgbG9hZGVyIHRvIGxvYWQgdGhlIHNjcmlwdC4K
ICAgICBpZiAocHJveHktPnRocmVhZCgpKQotICAgICAgICBwcm94eS0+dGhyZWFkKCktPnJ1bkxv
b3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6Y3JlYXRlKHBvcnQpKTsKKyAg
ICAgICAgcHJveHktPnRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1
ZTxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4ocG9ydCkpOwogICAgIGVsc2UgewogICAgICAgICBS
ZWZQdHI8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgU2hh
cmVkV29ya2VyU2NyaXB0TG9hZGVyKHdvcmtlciwgcG9ydCwgcHJveHkucmVsZWFzZSgpKSk7CiAg
ICAgICAgIGxvYWRlci0+bG9hZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKaW5kZXggMGNjNDc4OS4uOGI0NGY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NywxMiArNDcsOSBAQCBXb3JrZXJF
dmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiB9CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVl
dWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgRklOQUwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RXZlbnREaXNwYXRj
aGVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVl
JiBldmVudFF1ZXVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERp
c3BhdGNoZXJUYXNrKGV2ZW50LCBldmVudFF1ZXVlKSk7Ci0gICAgfQorICAgIFdURl9NQUtFX1VO
SVFVRV9BUkdTKDIsIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2ssIFJlZlB0
cjxFdmVudD4mLCBXb3JrZXJFdmVudFF1ZXVlJik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIH5F
dmVudERpc3BhdGNoZXJUYXNrKCkKICAgICB7CiAgICAgICAgIGlmIChtX2V2ZW50KQpAQCAtOTcs
OSArOTQsOSBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBwcnBFdmVudCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKLSAgICBPd25QdHI8RXZl
bnREaXNwYXRjaGVyVGFzaz4gdGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZShldmVu
dCwgKnRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXJUYXNrPihldmVudCwgKnRoaXMpOwog
ICAgIG1fZXZlbnRUYXNrTWFwLmFkZChldmVudC5yZWxlYXNlKCksIHRhc2suZ2V0KCkpOwotICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKaW5kZXggMjkzNzk3NC4uYjlhZTZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTY3LDEyICs2Nyw5IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzayk7Ci0gICAgfQor
ICAgIFdURl9NQUtFX1VOSVFVRShDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzayk7CiAKK3B1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAq
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC04Miw2ICs3OSw5IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzaygp
IHsgfQogfTsKIAogV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0
dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OmNsb3NlKCkKICAgICAvLyBBZnRlciBtX2Nsb3NpbmcgaXMgc2V0LCBhbGwgdGhlIHRh
c2tzIGluIHRoZSBxdWV1ZSBjb250aW51ZSB0byBiZSBmZXRjaGVkIGJ1dCBvbmx5CiAgICAgLy8g
dGFza3Mgd2l0aCBpc0NsZWFudXBUYXNrKCk9PXRydWUgd2lsbCBiZSBleGVjdXRlZC4KICAgICBt
X2Nsb3NpbmcgPSB0cnVlOwotICAgIHBvc3RUYXNrKENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNr
OjpjcmVhdGUoKSk7CisgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxDbG9zZVdvcmtlckds
b2JhbFNjb3BlVGFzaz4oKSk7CiB9CiAKIFdvcmtlck5hdmlnYXRvciogV29ya2VyR2xvYmFsU2Nv
cGU6Om5hdmlnYXRvcigpIGNvbnN0CkBAIC0xODAsOSArMTgwLDkgQEAgYm9vbCBXb3JrZXJHbG9i
YWxTY29wZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFz
aykKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNr
PiB0YXNrKQogewotICAgIHRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2sodGFzayk7CisgICAg
dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykpOwogfQogCiBpbnQg
V29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+
IGFjdGlvbiwgaW50IHRpbWVvdXQpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBjb25zdAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0
VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVh
dGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPEFkZENvbnNvbGVNZXNzYWdlVGFzaz4oc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXYKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29s
dW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAg
aWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVz
c2FnZVRhc2s6OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RU
YXNrKHN0ZDo6bWFrZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxldmVs
LCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAyNTMyYjkyLi5jNWFiN2YzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC04Myw3ICs4Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+
KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3lu
Y2hyb25vdXNseS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPikgT1ZFUlJJREU7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJl
YWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICAgICAgLy8gV29ya2VyR2xvYmFsU2NvcGUKICAgICAg
ICAgV29ya2VyR2xvYmFsU2NvcGUqIHNlbGYoKSB7IHJldHVybiB0aGlzOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKaW5kZXggMTg1NDJiNi4uMzA0ODVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaApAQCAtNDksMTIg
KzQ5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+V29ya2VyTG9h
ZGVyUHJveHkoKSB7IH0KIAogICAgICAgICAvLyBQb3N0cyBhIHRhc2sgdG8gdGhlIHRocmVhZCB3
aGljaCBydW5zIHRoZSBsb2FkaW5nIGNvZGUgKG5vcm1hbGx5LCB0aGUgbWFpbiB0aHJlYWQpLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
a1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikg
PSAwOwogCiAgICAgICAgIC8vIFBvc3RzIGNhbGxiYWNrcyBmcm9tIGxvYWRpbmcgY29kZSB0byB0
aGUgV29ya2VyR2xvYmFsU2NvcGUuIFRoZSAnbW9kZScgaXMgdXNlZCB0byBkaWZmZXJlbnRpYXRl
CiAgICAgICAgIC8vIHNwZWNpZmljIHN5bmNocm9ub3VzIGxvYWRpbmcgcmVxdWVzdHMgc28gdGhl
eSBjYW4gYmUgJ25lc3RlZCcsIHBlciBzcGVjLgogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIHRhc2sgd2FzIHBvc3RlZCBzdWNjZXNzZnVsbHkuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOworICAgICAgICB2aXJ0
dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1ZV9w
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAw
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggMjAwYzA4ZS4uZGJhMThhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
QEAgLTU1LDE5ICs1NSw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VX
b3JrZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckdsb2JhbFNj
b3BlVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayht
ZXNzYWdlLCBjaGFubmVscykpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBNZXNzYWdlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICAgICAg
OiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQotICAg
IHsKLSAgICB9CisgICAgV1RGX01BS0VfVU5JUVVFX0FSR1MoMiwgTWVzc2FnZVdvcmtlckdsb2Jh
bFNjb3BlVGFzaywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiwgUGFzc093blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mKTsKIAorcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4
dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKQEAgLTc4LDI1ICs2OCwyMCBAQCBwcml2YXRlOgog
ICAgIH0KIAogcHJpdmF0ZToKKyAgICBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkK
KyAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgIHsKKyAgICB9CisKICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOwogfTsKIAogY2xhc3MgTWVzc2FnZVdvcmtlclRh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVz
c2FnZSwgY2hhbm5lbHMsIG1lc3NhZ2luZ1Byb3h5KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IE1lc3NhZ2VXb3JrZXJUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQotICAgICAgICA6IG1fbWVzc2FnZShtZXNz
YWdlKQotICAgICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCi0gICAgICAgICwgbV9tZXNzYWdp
bmdQcm94eShtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgfQorICAgIFdURl9NQUtFX1VOSVFV
RV9BUkdTKDMsIE1lc3NhZ2VXb3JrZXJUYXNrLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYsIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Kik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7CiAgICAgICAgIFdvcmtl
ciogd29ya2VyT2JqZWN0ID0gbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyT2JqZWN0KCk7CkBAIC0x
MDgsMjggKzkzLDIyIEBAIHByaXZhdGU6CiAgICAgfQogCiBwcml2YXRlOgorICAgIE1lc3NhZ2VX
b3JrZXJUYXNrKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5n
UHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQorICAg
ICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCisgICAgICAgICwgbV9tZXNzYWdpbmdQcm94eSht
ZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAgfQorCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbV9tZXNzYWdlOwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
bV9jaGFubmVsczsKICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsK
IH07CiAKIGNsYXNzIFdvcmtlckV4Y2VwdGlvblRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyRXhj
ZXB0aW9uVGFzaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdvcmtlck1l
c3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV29ya2VyRXhjZXB0aW9uVGFzayhlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc291cmNlVVJMLCBtZXNzYWdpbmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBXb3JrZXJFeGNlcHRpb25UYXNrKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICAgICAgOiBtX2Vycm9y
TWVzc2FnZShlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkpCi0gICAgICAgICwgbV9saW5lTnVt
YmVyKGxpbmVOdW1iZXIpCi0gICAgICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQot
ICAgICAgICAsIG1fc291cmNlVVJMKHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSkKLSAgICAgICAg
LCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQotICAgIHsKLSAgICB9CisgICAgV1RG
X01BS0VfVU5JUVVFX0FSR1MoNSwgV29ya2VyRXhjZXB0aW9uVGFzaywgY29uc3QgU3RyaW5nJiwg
aW50JiwgaW50JiwgY29uc3QgU3RyaW5nJiwgV29ya2VyTWVzc2FnaW5nUHJveHkqKTsKIAorcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSBtX21lc3Nh
Z2luZ1Byb3h5LT53b3JrZXJPYmplY3QoKTsKQEAgLTE0NCw2ICsxMjMsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbihtX2Vycm9yTWVzc2FnZSwgbV9s
aW5lTnVtYmVyLCBtX2NvbHVtbk51bWJlciwgbV9zb3VyY2VVUkwsIDApOwogICAgIH0KIAorcHJp
dmF0ZToKKyAgICBXb3JrZXJFeGNlcHRpb25UYXNrKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICAgICAgOiBtX2Vy
cm9yTWVzc2FnZShlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9saW5l
TnVtYmVyKGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVy
KQorICAgICAgICAsIG1fc291cmNlVVJMKHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSkKKyAgICAg
ICAgLCBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQorICAgIHsKKyAgICB9CisKICAg
ICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQg
bV9jb2x1bW5OdW1iZXI7CkBAIC0xNTIsMTAgKzE0MSwxMiBAQCBwcml2YXRlOgogfTsKIAogY2xh
c3MgV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgeworICAgIFdURl9NQUtFX1VOSVFVRV9BUkdTKDEsIFdvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkVGFzaywgV29ya2VyTWVzc2FnaW5nUHJveHkqKTsKKwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayhtZXNzYWdp
bmdQcm94eSkpOworICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJHbG9iYWxTY29wZURl
c3Ryb3llZEludGVybmFsKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY0LDE5ICsxNTUsMTYg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgIHsKLSAgICAgICAgbV9tZXNzYWdpbmdQcm94
eS0+d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwotICAgIH0KLQogICAgIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIAogY2xhc3MgV29ya2Vy
VGVybWluYXRlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAg
ICBXVEZfTUFLRV9VTklRVUVfQVJHUygxLCBXb3JrZXJUZXJtaW5hdGVUYXNrLCBXb3JrZXJNZXNz
YWdpbmdQcm94eSopOworCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGVy
bWluYXRlVGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkK
KyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRlcm1pbmF0ZVRhc2sobWVz
c2FnaW5nUHJveHkpKTsKKyAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+dGVybWluYXRlV29ya2Vy
R2xvYmFsU2NvcGUoKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODUsMTkgKzE3MywxNiBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAgICBtX21lc3NhZ2luZ1Byb3h5LT50
ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgIH0KLQogICAgIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIAogY2xhc3MgV29ya2VyVGhyZWFkQWN0aXZp
dHlSZXBvcnRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworICAg
IFdURl9NQUtFX1VOSVFVRV9BUkdTKDMsIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzaywg
V29ya2VyTWVzc2FnaW5nUHJveHkqLCBib29sLCBib29sJik7CisKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s+IGNyZWF0ZShXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGJvb2wgY29uZmlybWluZ01lc3NhZ2Us
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrKG1lc3NhZ2luZ1Byb3h5LCBjb25maXJt
aW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CisgICAgICAgIG1fbWVzc2FnaW5nUHJv
eHktPnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKG1fY29uZmlybWluZ01lc3NhZ2UsIG1f
aGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMDgsMjEgKzE5Mywy
MSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAgICBtX21lc3NhZ2luZ1By
b3h5LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChtX2NvbmZpcm1pbmdNZXNzYWdlLCBt
X2hhc1BlbmRpbmdBY3Rpdml0eSk7Ci0gICAgfQotCiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkq
IG1fbWVzc2FnaW5nUHJveHk7CiAgICAgYm9vbCBtX2NvbmZpcm1pbmdNZXNzYWdlOwogICAgIGJv
b2wgbV9oYXNQZW5kaW5nQWN0aXZpdHk7CiB9OwogCiBjbGFzcyBQb3N0TWVzc2FnZVRvUGFnZUlu
c3BlY3RvclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CisgICAg
V1RGX01BS0VfVU5JUVVFX0FSR1MoMiwgUG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrLCBX
b3JrZXJNZXNzYWdpbmdQcm94eSosIGNvbnN0IFN0cmluZyYpOworCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrPiBjcmVhdGUoV29y
a2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQb3N0TWVzc2FnZVRvUGFnZUluc3Bl
Y3RvclRhc2sobWVzc2FnaW5nUHJveHksIG1lc3NhZ2UpKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgICAgICBpZiAoV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlY3RvciogcGFn
ZUluc3BlY3RvciA9IG1fbWVzc2FnaW5nUHJveHktPm1fcGFnZUluc3BlY3RvcikKKyAgICAgICAg
ICAgIHBhZ2VJbnNwZWN0b3ItPmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIobV9tZXNzYWdlKTsK
KyNlbmRpZgogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIzMiwyMyArMjE3LDE5IEBAIHByaXZhdGU6
CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikKLSAgICB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYg
KFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IqIHBhZ2VJbnNwZWN0b3IgPSBt
X21lc3NhZ2luZ1Byb3h5LT5tX3BhZ2VJbnNwZWN0b3IpCi0gICAgICAgICAgICBwYWdlSW5zcGVj
dG9yLT5kaXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKG1fbWVzc2FnZSk7Ci0jZW5kaWYKLSAgICB9
Ci0KICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKICAgICBTdHJp
bmcgbV9tZXNzYWdlOwogfTsKIAogY2xhc3MgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKKyAgICBXVEZfTUFLRV9VTklR
VUVfQVJHUygxLCBOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrLCBib29sJik7CisKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrPiBj
cmVhdGUoYm9vbCBpc09uTGluZSkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayhpc09uTGluZSkpOworICAgICAgICBB
dG9taWNTdHJpbmcgZXZlbnROYW1lID0gbV9pc09uTGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQ7CisgICAgICAgIFdvcmtlckdsb2JhbFNj
b3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4o
Y29udGV4dCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yNTcsMTMgKzIzOCw2IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQotICAgIHsK
LSAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNPbkxpbmUgPyBldmVudE5hbWVz
KCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50OwotICAgICAgICBXb3Jr
ZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9i
YWxTY29wZSo+KGNvbnRleHQpOwotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgfQotCiAg
ICAgYm9vbCBtX2lzT25MaW5lOwogfTsKIApAQCAtMzA3LDEyICsyODEsMTIgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3QKICAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB0aHJlYWQg
PSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0
dGluZ3MsIHNvdXJjZUNvZGUsICp0aGlzLCAqdGhpcywgc3RhcnRNb2RlLCBkb2N1bWVudC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJlY2F0ZWRIZWFkZXIoKSwgZG9jdW1lbnQtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyVHlwZSgpLCBkb2N1bWVudC0+dG9w
T3JpZ2luKCkpOwogICAgIHdvcmtlclRocmVhZENyZWF0ZWQodGhyZWFkKTsKICAgICB0aHJlYWQt
PnN0YXJ0KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcywgc2NyaXB0VVJM
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2Nv
cGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBzdGF0aWNfY2FzdDxXb3JrZXJNZXNz
YWdpbmdQcm94eSo+KHRoaXMpLCBzY3JpcHRVUkwpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBj
aGFubmVscykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1lc3Nh
Z2VXb3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMsIHRoaXMpKTsKKyAgICBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdv
cmtlclRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzLCBzdGF0aWNfY2FzdDxXb3JrZXJNZXNzYWdpbmdQ
cm94eSo+KHRoaXMpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCkBA
IC0zMjIsMzEgKzI5NiwzMSBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkUwogCiAgICAgaWYgKG1f
d29ya2VyVGhyZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAg
ICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhNZXNzYWdlV29ya2VyR2xv
YmFsU2NvcGVUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMpKTsKKyAgICAgICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VXb3Jr
ZXJHbG9iYWxTY29wZVRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzKSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFz
azo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiht
ZXNzYWdlLCBjaGFubmVscykpOwogfQogCi1ib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorYm9vbCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBt
b2RlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVChtX3dvcmtlclRocmVhZCk7Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7CisgICAgbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRhc2spLCBtb2RlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xv
YWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIC8vIEZJWE1FOiBJbiBj
YXNlIG9mIG5lc3RlZCB3b3JrZXJzLCB0aGlzIHNob3VsZCBnbyBkaXJlY3RseSB0byB0aGUgcm9v
dCBEb2N1bWVudCBjb250ZXh0LgogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayh0
YXNrKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bW92ZSh0
YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIHRoaXMpKTsK
KyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyRXhjZXB0aW9uVGFzaz4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCwgc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPih0aGlzKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwg
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQpAQCAtMzc0LDkgKzM0OCw5IEBAIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQ+CiAgICAgICAgIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQgPSB0YXNrQ291bnQ7CiAg
ICAgICAgIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gdHJ1ZTsgLy8gV29ya2Vy
IGluaXRpYWxpemF0aW9uIG1lYW5zIGEgcGVuZGluZyBhY3Rpdml0eS4KIAorICAgICAgICBhdXRv
IHF1ZXVlZEVhcmx5VGFza3MgPSBzdGQ6Om1vdmUobV9xdWV1ZWRFYXJseVRhc2tzKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQotICAgICAgICAgICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0u
cmVsZWFzZSgpKTsKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmNsZWFyKCk7CisgICAgICAg
ICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bW92ZShxdWV1ZWRF
YXJseVRhc2tzW2ldKSk7CiAgICAgfQogfQogCkBAIC0zOTQsNyArMzY4LDcgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
CiAgICAgaWYgKCFtX3dvcmtlclRocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNr
OjpjcmVhdGUoaXNPbmxpbmUpKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzaz4oaXNPbmxp
bmUpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJv
eWVkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBwcm94eSkKQEAgLTQ2NSwxNCArNDM5LDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCiB7Ci0gICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZFRhc2s6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4o
c3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPih0aGlzKSkpOwogICAgIC8vIFdpbGwg
ZXhlY3V0ZSB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkgb24gY29udGV4dCdz
IHRocmVhZC4KIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFsU2Nv
cGVDbG9zZWQoKQogewogICAgIC8vIEV4ZWN1dGVzIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3Bl
KCkgb24gcGFyZW50IGNvbnRleHQncyB0aHJlYWQuCi0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhXb3JrZXJUZXJtaW5hdGVUYXNrOjpjcmVhdGUodGhpcykpOworICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJU
ZXJtaW5hdGVUYXNrPihzdGF0aWNfY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eSo+KHRoaXMpKSk7
CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkSW50ZXJuYWwoKQpAQCAtNTAzLDE5ICs0NzcsMTkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rvcihj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s6OmNyZWF0ZSh0aGlzLCBtZXNz
YWdlKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzaz4oc3RhdGljX2Nhc3Q8V29ya2Vy
TWVzc2FnaW5nUHJveHkqPih0aGlzKSwgbWVzc2FnZSkpOwogfQogI2VuZGlmCiAKIHZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RU
YXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRoaXMsIHRydWUsIGhh
c1BlbmRpbmdBY3Rpdml0eSkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s+KHN0YXRp
Y19jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5Kj4odGhpcyksIHRydWUsIGhhc1BlbmRpbmdBY3Rp
dml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5h
bCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVw
b3J0VGFzazo6Y3JlYXRlKHRoaXMsIGZhbHNlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8V29ya2Vy
VGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPihzdGF0aWNfY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94
eSo+KHRoaXMpLCBmYWxzZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CiAgICAgLy8gV2lsbCBleGVj
dXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKCkgb24gY29udGV4dCdzIHRocmVhZC4K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmlu
ZGV4IGI2YjQ5ZjIuLjgwMmJjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTgxLDggKzgxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJMb2FkZXJQcm94eS4KICAgICAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVk
dWxlIGxvYWRpbmcKICAgICAgICAgLy8gcmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJh
Y2sgdG8gV29ya2VyR2xvYmFsU2NvcGUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1Rv
TG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURF
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcm
IG1vZGUpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihz
dGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShz
dGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmlu
ZyYgbW9kZSkgT1ZFUlJJREU7CiAKICAgICAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKFBh
c3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPik7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CiAK
LSAgICAgICAgVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9x
dWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBh
IHRocmVhZCBvYmplY3QgY3JlYXRlZC4KKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNr
cyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4K
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQ
YWdlSW5zcGVjdG9yKiBtX3BhZ2VJbnNwZWN0b3I7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGY0YTJlZmMuLmVjMzU5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMTk2LDI0ICsxOTYsMjQgQEAgdm9p
ZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQogICAgIG1fbWVzc2FnZVF1ZXVlLmtpbGwoKTsK
IH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAg
IHBvc3RUYXNrRm9yTW9kZSh0YXNrLCBkZWZhdWx0TW9kZSgpKTsKKyAgICBwb3N0VGFza0Zvck1v
ZGUoc3RkOjptb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5M
b29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRl
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewot
ICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKHRhc2ssIGRlZmF1
bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRL
aWxsKFRhc2s6OmNyZWF0ZShzdGQ6Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRD
b3B5KCkpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQog
ewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5pc29s
YXRlZENvcHkoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUoc3Rk
Ojptb3ZlKHRhc2spLCBtb2RlLmlzb2xhdGVkQ29weSgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxXb3JrZXJSdW5Mb29wOjpUYXNrPiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCitzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6
VGFzazo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPihuZXcgVGFzayh0YXNrLCBtb2RlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPihuZXcgVGFzayhzdGQ6Om1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3Jr
ZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29w
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMjIzLDggKzIyMyw4IEBAIHZv
aWQgV29ya2VyUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYg
cnVuTG9vcCwgU2NyaXB0RXhlY3V0CiAgICAgICAgIG1fdGFzay0+cGVyZm9ybVRhc2soY29udGV4
dCk7CiB9CiAKLVdvcmtlclJ1bkxvb3A6OlRhc2s6OlRhc2soUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi0gICAgOiBtX3Rh
c2sodGFzaykKK1dvcmtlclJ1bkxvb3A6OlRhc2s6OlRhc2soc3RkOjp1bmlxdWVfcHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6
IG1fdGFzayhzdGQ6Om1vdmUodGFzaykpCiAgICAgLCBtX21vZGUobW9kZS5pc29sYXRlZENvcHko
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggM2RlZTVh
NS4uYTcyNjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTYw
LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgp
OwogICAgICAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VRdWV1
ZS5raWxsZWQoKTsgfQogCi0gICAgICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5h
dGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZv
aWQgcG9zdFRhc2tGb3JNb2RlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0
VGFza0FuZFRlcm1pbmF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4pOworICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICAg
ICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJZDsg
fQogCkBAIC03MSwxNSArNzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFz
cyBUYXNrIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUYXNrPiBjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGFzaz4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAgIH5UYXNrKCkg
eyB9CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAg
ICAgVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgICAgICBUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAg
Ci0gICAgICAgICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gbV90YXNr
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IG1fdGFzazsKICAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CiAgICAgICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA2NzMzZDE0Li42MThkN2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xODksMTIgKzE4
OSw5IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogfQogCiBjbGFzcyBXb3Jr
ZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkU2h1
dGRvd25GaW5pc2hUYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2soKSk7Ci0gICAgfQorICAgIFdURl9N
QUtFX1VOSVFVRShXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2spOwogCitwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250
ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMjA3LDE1ICsyMDQsMTUgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFz
aygpIHsgfQogfTsKIAogY2xhc3MgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNr
KCkpOwotICAgIH0KKyAgICBXVEZfTUFLRV9VTklRVUUoV29ya2VyVGhyZWFkU2h1dGRvd25TdGFy
dFRhc2spOwogCitwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgKmNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMjQz
LDEwICsyNDAsMTMgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFN0aWNrIGEgc2h1dGRvd24gY29t
bWFuZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSwgc28gdGhhdCB3ZSBkZWFsCiAgICAgICAgIC8v
IHdpdGggYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAg
ICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNrKFdvcmtlclRocmVhZFNodXRkb3duRmlu
aXNoVGFzazo6Y3JlYXRlKCkpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2so
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+KCkpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCitwcml2YXRlOgorICAgIFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrKCkgeyB9
CiB9OwogCiB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCkBAIC0yNjEsMTQgKzI2MSwyMCBAQCB2
b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAg
ICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChtX3dvcmtlckdsb2JhbFNjb3BlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBtX3J1bkxv
b3AucG9zdFRhc2tBbmRUZXJtaW5hdGUoV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s+KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKIH0KIAogY2xhc3MgUmVsZWFz
ZUZhc3RNYWxsb2NGcmVlTWVtb3J5VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHsKKyAgICBXVEZfTUFLRV9VTklRVUUoUmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
VGFzayk7CisKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIE9WRVJSSURFIHsgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnkoKTsgfQorCitwcml2YXRlOgorICAgIFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2so
KSB7IH0KIH07CiAKIHZvaWQgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1v
cnlJbkFsbFRocmVhZHMoKQpAQCAtMjc3LDcgKzI4Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpy
ZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKQogICAgIEhhc2hTZXQ8V29y
a2VyVGhyZWFkKj4mIHRocmVhZHMgPSB3b3JrZXJUaHJlYWRzKCk7CiAgICAgSGFzaFNldDxXb3Jr
ZXJUaHJlYWQqPjo6aXRlcmF0b3IgZW5kID0gdGhyZWFkcy5lbmQoKTsKICAgICBmb3IgKEhhc2hT
ZXQ8V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9yIGl0ID0gdGhyZWFkcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5ydW5Mb29wKCkucG9zdFRhc2soYWRvcHRQdHIobmV3
IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2spKTsKKyAgICAgICAgKCppdCktPnJ1bkxv
b3AoKS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eVRhc2s+KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216720</attachid>
            <date>2013-11-12 13:56:12 -0800</date>
            <delta_ts>2014-02-05 17:35:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123804-20131112135601.patch</filename>
            <type>text/plain</type>
            <size>83290</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczMTdmZDJmMjdjZjFm
OGM4OTJiMDFkNDhjZjE0ODkzYTU3NzI2NC4uMzQyMjlhOTdhYzYyOTdjYzdmYzk1Y2YxZmE4ZTU3
OTgxMDUxNTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0xMS0xMiAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFuYWdlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgZGVyaXZhdGl2ZXMgdGhyb3VnaCBzdGQ6OnVuaXF1ZV9w
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzgw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsYXNz
ZXMgdGhhdCBpbmhlcml0IGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBzaG91bGQg
YmUgbWFuYWdlZCB0aHJvdWdoIHN0ZDo6dW5pcXVlX3B0ci4KKyAgICAgICAgVGhpcyByZXF1aXJl
cyBmb3IgdGhlIGNvbnN0cnVjdG9ycyBvZiB0aGVzZSBjbGFzc2VzIHRvIGJlIHB1YmxpYyBzbyBz
dGQ6Om1ha2VfdW5pcXVlIGNhbiBiZSB1c2VkLAorICAgICAgICBidXQgYWxzbyBtYWtlcyB0aGUg
c3RhdGljIGNyZWF0ZSgpIG1ldGhvZHMgcmVkdW5kYW50LgorCisgICAgICAgICogTW9kdWxlcy9x
dW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUluZm86OnF1ZXJ5VXNhZ2VB
bmRRdW90YSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlSW5mbzo6cmVxdWVzdFF1b3RhKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlcmVmQ29udGV4dFRhc2s6OkRlcmVmQ29udGV4dFRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxpdmVyUGVu
ZGluZ0NhbGxiYWNrVGFzazo6RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2spOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6RGF0YWJhc2VDcmVhdGlvbkNhbGxi
YWNrVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFz
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOiBSZW1v
dmUgdGhlIHVudXNlZCBDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2sgY2xhc3Mu
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMQ2FsbGJhY2tXcmFwcGVyOjpTYWZlUmVsZWFzZVRhc2s6OlNhZmVSZWxlYXNlVGFz
ayk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3MpOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6Oldvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s6Oldvcmtlckds
b2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGV0ZUNhbGxiYWNrRGF0YVRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrOjp+SlNUZXN0Q2Fs
bGJhY2spOgorICAgICAgICAqIGRvbS9Dcm9zc1RocmVhZFRhc2suaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUNhbGxiYWNrVGFzayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
VGFza0NvbnRleHQ6OlBlcmZvcm1UYXNrQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkUmVjZWl2ZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvc3RU
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVk
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojpwcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24pOgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1N0cmluZ0NhbGxiYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZ0NhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbGxDYWNoZUxpc3RlbmVyVGFzazo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFz
ayk6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0VG9Xb3JrZXIpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVu
dFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvYWRlclBy
b3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVh
ZENyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlm
eU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29uZmlybU1lc3NhZ2VG
cm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
OjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clJ1bkxvb3A6OlRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpUYXNrOjpUYXNrKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKToKKwogMjAxMy0xMS0xMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBJREJUcmFuc2Fj
dGlvbiB0YXNrcyBhc3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaAppbmRleCBmZmNlN2I2NzUxN2I2MGFjZjdlNGQ1
NGM5M2JiMzk0NzVkNDliNmJiLi41NTRjODA2MTI5YWY4MTQyMTE5ZTRkYWM2YWNmZGY2ODg0MTE5
Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VFcnJv
ckNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlRXJy
b3JDYWxsYmFjay5oCkBAIC01MCwxNiArNTAsMTEgQEAgcHVibGljOgogCiAgICAgY2xhc3MgQ2Fs
bGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4gY2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUgZWMp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsbGJhY2tUYXNr
KGNhbGxiYWNrLCBlYykpOwotICAgICAgICB9CisgICAgICAgIENhbGxiYWNrVGFzayhQYXNzUmVm
UHRyPFN0b3JhZ2VFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIENhbGxiYWNrVGFzayhQYXNzUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxi
YWNrPiwgRXhjZXB0aW9uQ29kZSk7Ci0KICAgICAgICAgUmVmUHRyPFN0b3JhZ2VFcnJvckNhbGxi
YWNrPiBtX2NhbGxiYWNrOwogICAgICAgICBFeGNlcHRpb25Db2RlIG1fZWM7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAKaW5kZXggNjI3NWVm
OWQ1YmY1ZDE2Nzg3OGMwMGFkNTQ3ZTMyYzgxYjRlZThjYy4uM2MzNGJjZDZmOTc4MDdhYzM0OGYx
N2Q4ZmMzYjk0MzY2MTI2MjMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9TdG9yYWdlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9T
dG9yYWdlSW5mby5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTdG9yYWdlSW5mbzo6cXVlcnlV
c2FnZUFuZFF1b3RhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnQK
ICAgICBTdG9yYWdlUXVvdGEqIHN0b3JhZ2VRdW90YSA9IGdldFN0b3JhZ2VRdW90YShzdG9yYWdl
VHlwZSk7CiAgICAgaWYgKCFzdG9yYWdlUXVvdGEpIHsKICAgICAgICAgLy8gVW5rbm93biBzdG9y
YWdlIHR5cGUgaXMgcmVxdWVzdGVkLgotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrOjpjcmVhdGUoZXJyb3JD
YWxsYmFjaywgTk9UX1NVUFBPUlRFRF9FUlIpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2Fs
bGJhY2tUYXNrPihlcnJvckNhbGxiYWNrLCBOT1RfU1VQUE9SVEVEX0VSUikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIHN0b3JhZ2VRdW90YS0+cXVlcnlVc2FnZUFuZFF1b3RhKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkBAIC03
MCw3ICs3MCw3IEBAIHZvaWQgU3RvcmFnZUluZm86OnJlcXVlc3RRdW90YShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpCiAgICAgU3RvcmFnZVF1b3RhKiBz
dG9yYWdlUXVvdGEgPSBnZXRTdG9yYWdlUXVvdGEoc3RvcmFnZVR5cGUpOwogICAgIGlmICghc3Rv
cmFnZVF1b3RhKSB7CiAgICAgICAgIC8vIFVua25vd24gc3RvcmFnZSB0eXBlIGlzIHJlcXVlc3Rl
ZC4KLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soU3RvcmFnZUVycm9y
Q2FsbGJhY2s6OkNhbGxiYWNrVGFzazo6Y3JlYXRlKGVycm9yQ2FsbGJhY2ssIE5PVF9TVVBQT1JU
RURfRVJSKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8U3RvcmFnZUVycm9yQ2FsbGJhY2s6OkNhbGxiYWNrVGFzaz4oZXJyb3JDYWxs
YmFjaywgTk9UX1NVUFBPUlRFRF9FUlIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBz
dG9yYWdlUXVvdGEtPnJlcXVlc3RRdW90YShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBuZXdRdW90
YUluQnl0ZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDg2OWM4NWYwZDcw
YjNjOTZlYTZhODA3NTU1OWZkYzIzNGZiZWVjMTguLjkwODRjNDM3ZTZkYWI5NDU0ODBkYTk3MmMx
ZWRhM2FmMmE2NzUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCkBAIC04Niw5ICs4Niw5IEBAIERhdGFiYXNlOjpEYXRhYmFzZShQYXNz
UmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCwKIAogY2xhc3Mg
RGVyZWZDb250ZXh0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEZXJlZkNvbnRleHRUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0KQorICAgIERlcmVmQ29u
dGV4dFRhc2soUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0KQorICAg
ICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBEZXJlZkNvbnRleHRUYXNrKGNvbnRleHQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTEwMCwx
MSArMTAwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIERlcmVmQ29udGV4dFRhc2soUGFz
c1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0KQotICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQotICAgIHsKLSAgICB9Ci0gICAgCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKQEAgLTExNiw3ICsxMTEsNyBAQCBEYXRhYmFz
ZTo6fkRhdGFiYXNlKCkKICAgICAgICAgLy8gRGVyZWZDb250ZXh0VGFzazo6Y3JlYXRlLgogICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwogICAgICAgICAKLSAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGVyZWZDb250ZXh0VGFzazo6Y3JlYXRlKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCkpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxEZXJlZkNvbnRleHRUYXNrPihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpKSk7CiAgICAgfQogfQogCkBAIC0yMDUsOSArMjAw
LDkgQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1IKIAogY2xhc3MgRGVsaXZlclBlbmRpbmdDYWxs
YmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+IGNyZWF0
ZShQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKKyAgICBEZWxpdmVyUGVu
ZGluZ0NhbGxiYWNrVGFzayhQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikK
KyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayh0cmFuc2FjdGlvbikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKQEAgLTIxNiwxNyArMjExLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgRGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24pCi0gICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAg
ICB7Ci0gICAgfQotCiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwog
fTsKIAogdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKFNRTFRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pKTsK
KyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
RGVsaXZlclBlbmRpbmdDYWxsYmFja1Rhc2s+KHRyYW5zYWN0aW9uKSk7CiB9CiAKIFZlY3RvcjxT
dHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
NGVlZDZlMjAwMWQ5NGRhOWYzNWU3NjY3ZTBhMDk4ZjI0YWRkNTk2Yi4uMjlhZTU2NTM0ZDg1ZjBi
NDg0ZTA5NTQ4MzJhMjRiNGE1MzQ0ZTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTE5LDkgKzExOSwx
MCBAQCB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUp
CiAKIGNsYXNzIERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGF0
YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRh
dGFiYXNlLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2spCisg
ICAgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayhQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRh
YmFzZSwgUGFzc1JlZlB0cjxEYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjaykKKyAgICAgICAgOiBt
X2RhdGFiYXNlKGRhdGFiYXNlKQorICAgICAgICAsIG1fY3JlYXRpb25DYWxsYmFjayhjYWxsYmFj
aykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGF0YWJhc2VDcmVhdGlvbkNh
bGxiYWNrVGFzayhkYXRhYmFzZSwgY3JlYXRpb25DYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKQEAgLTEzMCwx
MiArMTMxLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZUNyZWF0
aW9uQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRy
PERhdGFiYXNlQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCi0gICAgICAgICwgbV9jcmVhdGlvbkNhbGxiYWNrKGNhbGxiYWNrKQotICAgIHsKLSAgICB9
Ci0KICAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgUmVmUHRyPERhdGFiYXNl
Q2FsbGJhY2s+IG1fY3JlYXRpb25DYWxsYmFjazsKIH07CkBAIC0zMjksNyArMzI0LDcgQEAgUGFz
c1JlZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGUKIAogICAgIGlmIChiYWNrZW5kLT5pc05ldygpICYmIGNyZWF0
aW9uQ2FsbGJhY2suZ2V0KCkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFz
ZS5nZXQoKSk7Ci0gICAgICAgIGRhdGFiYXNlLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rhc2s6OmNyZWF0ZShkYXRhYmFzZSwgY3Jl
YXRpb25DYWxsYmFjaykpOworICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ3JlYXRpb25DYWxsYmFja1Rh
c2s+KGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGRh
dGFiYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTeW5jLmNwcAppbmRleCBmOTJjMzRmZjBhY2JjOGZmZjIxZTg0NGFhZDY1MGU3OTAyNjUx
MDQ4Li42NjIyYmMxZjg5MGJjODE0MzQzZTZiNjU3OTViMGZiYmVkN2I0ZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCkBA
IC0xNTgsMjcgKzE1OCw2IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjptYXJrQXNEZWxldGVkQW5kQ2xv
c2UoKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGRvIHNvbWV0aGluZyBzaW1pbGFyIHRvIGNsb3Nl
SW1tZWRpYXRlbHkoKSwgYnV0IGluIGEgc3luYyB3YXkKIH0KIAotY2xhc3MgQ2xvc2VTeW5jRGF0
YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENsb3NlU3luY0RhdGFiYXNl
T25Db250ZXh0VGhyZWFkVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBkYXRh
YmFzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2xvc2VTeW5jRGF0YWJh
c2VPbkNvbnRleHRUaHJlYWRUYXNrKGRhdGFiYXNlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgIHsKLSAgICAgICAg
bV9kYXRhYmFzZS0+Y2xvc2VJbW1lZGlhdGVseSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBD
bG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2soUGFzc1JlZlB0cjxEYXRhYmFzZVN5
bmM+IGRhdGFiYXNlKQotICAgICAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCi0gICAgewotICAg
IH0KLQotICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1fZGF0YWJhc2U7Ci19OwotCiB2b2lkIERh
dGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggYzE4
NGEzNzM4MDUzODI0ZTI3N2E1MDA4YmVhNzRhNWM0M2RhMzY3MC4uNTM0ZGYxNGVmMjY4NDJhY2Ex
MjE4NzhiM2Q0NDFmZmZkMTgxNTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGNvbnRleHQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
cmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgICAgIGNhbGxiYWNrID0gbV9jYWxsYmFjay5y
ZWxlYXNlKCkubGVha1JlZigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnBvc3RUYXNr
KFNhZmVSZWxlYXNlVGFzazo6Y3JlYXRlKGNhbGxiYWNrKSk7CisgICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2FmZVJlbGVhc2VUYXNrPihjYWxsYmFjaykpOwogICAg
IH0KIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkKQEAgLTkwLDkgKzkwLDkgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBjbGFzcyBTYWZlUmVsZWFzZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxTYWZlUmVsZWFzZVRhc2s+IGNyZWF0ZShUKiBjYWxsYmFja1RvUmVsZWFzZSkKKyAgICAg
ICAgZXhwbGljaXQgU2FmZVJlbGVhc2VUYXNrKFQqIGNhbGxiYWNrVG9SZWxlYXNlKQorICAgICAg
ICAgICAgOiBtX2NhbGxiYWNrVG9SZWxlYXNlKGNhbGxiYWNrVG9SZWxlYXNlKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNhZmVSZWxlYXNlVGFzayhjYWxsYmFj
a1RvUmVsZWFzZSkpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0xMDUsMTEgKzEwNSw2IEBA
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgU2FmZVJlbGVh
c2VUYXNrKFQqIGNhbGxiYWNrVG9SZWxlYXNlKQotICAgICAgICAgICAgOiBtX2NhbGxiYWNrVG9S
ZWxlYXNlKGNhbGxiYWNrVG9SZWxlYXNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQogICAgICAg
ICBUKiBtX2NhbGxiYWNrVG9SZWxlYXNlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggNmVkM2NhMjdmZjI1YWJi
MGU0NzMzMGEyNjg2MTQ5ZDcxNTUxMGU2Yy4uNzY2MjNjZWUxODkzZWQzZDkwNzI5ZjZmNTdjMzIy
YTk1MDEzZWE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAKQEAgLTIzMiw5ICsyMzIsOCBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcygpCiAgICAgICAgIG1f
Y29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjaywgdGhpcykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4+IHRhc2tzOwotICAgIHRhc2tzLnN3YXAobV9wZW5kaW5nVGFza3Mp
OwotICAgIGZvciAoVmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj46
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB0YXNrcy5iZWdpbigpOyBpdGVyICE9IHRhc2tzLmVuZCgp
OyArK2l0ZXIpCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPj4gdGFza3MgPSBzdGQ6Om1vdmUobV9wZW5kaW5nVGFza3MpOworICAgIGZvciAo
YXV0byBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQoKTsgKytpdGVyKQog
ICAgICAgICAoKml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGQzNjRjNjU2NDc4NTQyOTU5
MjEyOWRmZTBjMGU5YjZhMDdmZDcwZWUuLjkwMzM4Yzg0ZGUzYTQzYTNjYTE1MWNlYjk4ZWExNTU1
YjRkNzYzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiAgICAgdW5zaWdu
ZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50OwogICAgIGJvb2wgbV9zdXNwZW5kZWQ7Ci0gICAgVmVj
dG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFza3M7
CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
Pj4gbV9wZW5kaW5nVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlYjZhYzU3NTlkNmFjM2Uz
NDJhMjQyNWQxNWMxMjg0ODVhMmZmMWYyLi45OGIwMTE3Y2YyOWE4YTFkYzgxZjIwNjgyNzIyOTBk
OWVjYWQyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTM2MSwxMSArMzYxLDEyIEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6On5CcmlkZ2UoKQogCiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXIqIHBlZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdv
cmtlckNsaWVudFdyYXBwZXIpCisgICAgV29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFz
ayhXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlciogcGVlciwgV29ya2VyTG9h
ZGVyUHJveHkqIGxvYWRlclByb3h5LAorICAgICAgICBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKKyAgICAgICAg
OiBtX3BlZXIocGVlcikKKyAgICAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQorICAg
ICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcih3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxp
emVUYXNrKHBlZXIsIGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzaygpIHsgfQpA
QCAtMzgzLDE1ICszODQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRh
c2soKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgV29y
a2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayhXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6UGVlciogcGVlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICAgICAgOiBtX3BlZXIocGVlcikKLSAgICAg
ICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQotICAgICAgICAsIG1fd29ya2VyQ2xpZW50
V3JhcHBlcih3b3JrZXJDbGllbnRXcmFwcGVyKQotICAgIHsKLSAgICB9Ci0KICAgICBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlciogbV9wZWVyOwogICAgIFdvcmtlckxvYWRl
clByb3h5KiBtX2xvYWRlclByb3h5OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKQEAgLTQwNiw3ICszOTgs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5U
aHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgUGVlciogcGVlciA9IFBlZXI6OmNy
ZWF0ZShjbGllbnRXcmFwcGVyLCAqbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlKTsKICAg
ICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZSgKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Oldvcmtlckds
b2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s6OmNyZWF0ZShwZWVyLCBsb2FkZXJQcm94eSwgY2xp
ZW50V3JhcHBlciksIHRhc2tNb2RlKTsKKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXpl
VGFzaz4ocGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSk7CiAgICAg
aWYgKCFzZW50KSB7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmNsZWFyUGVlcigpOwogICAgICAg
ICBkZWxldGUgcGVlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5oCmluZGV4IGQzMjFjNTdmMDVjOWYwMjMyZjFlN2QwNGNhNDQyMWMzNzRiMDg2MjUuLjU3YzM5
ODVjYmM3YjQzZTkyYTEyN2RkYTlmMDI2ZTZkMmQyNTM3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNzcsMjAgKzc3LDEyIEBAIHByaXZhdGU6
CiAKIGNsYXNzIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RGVsZXRlQ2Fs
bGJhY2tEYXRhVGFzaz4gY3JlYXRlKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVDYWxsYmFja0RhdGFUYXNrKGRhdGEpKTsKLSAg
ICB9CisgICAgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhKU0NhbGxiYWNrRGF0YSogZGF0YSkgOiBt
X2RhdGEoZGF0YSkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopCi0gICAgewotICAgICAgICBkZWxldGUgbV9kYXRhOwotICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgZGVs
ZXRlIG1fZGF0YTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotcHJpdmF0ZToKLQotICAgIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soSlND
YWxsYmFja0RhdGEqIGRhdGEpIDogbV9kYXRhKGRhdGEpIHt9CiAKK3ByaXZhdGU6CiAgICAgSlND
YWxsYmFja0RhdGEqIG1fZGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmgKaW5kZXggNjcyY2M4NTIxNDYyNjNiMTM5OTZh
YzM4ZGM4MDFjNWE0ODhhZWVhNC4uMjM3NjNhZjA1MWNkODBkY2ZhOGE0NmY3MDc1MTY1NzY1Y2Yy
NWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3RUYXNrLmgKQEAgLTM1LDE2ICszNSwxMCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdENhbGxi
YWNrOwogCiBjbGFzcyBKU0dsb2JhbE9iamVjdFRhc2sgRklOQUwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SlNH
bG9iYWxPYmplY3RUYXNrPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6UXVldWVUYXNrVG9FdmVudExvb3BDYWxsYmFj
a0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyLCBQYXNzUmVmUHRyPEpTQzo6VGFza0NvbnRleHQ+IHRh
c2tDb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBKU0dsb2JhbE9i
amVjdFRhc2soZ2xvYmFsT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKLSAgICB9
Ci0KKyAgICBKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Okdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlOjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25Q
dHIsIFBhc3NSZWZQdHI8SlNDOjpUYXNrQ29udGV4dD4pOwogICAgIHZpcnR1YWwgfkpTR2xvYmFs
T2JqZWN0VGFzaygpOwogCiBwcml2YXRlOgotICAgIEpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUds
b2JhbE9iamVjdCosIEpTQzo6R2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1RvRXZl
bnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxKU0M6OlRhc2tDb250ZXh0Pik7
Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
IE9WRVJSSURFOwogCiAgICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IG1fY2FsbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApp
bmRleCA5MThiNzlhNjZkNzUyZWM2MDdlMDQyOGRkMGFhNmY5YWE4OTU4Nzc2Li4xOTBjMTU4ZTJk
Nzc1ZjZiOTI5MzMxZGE1MThiZmFjYThiMGI2YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIEpT
RE9NV2luZG93QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRM
b29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
OjpRdWV1ZVRhc2tUb0V2ZW50TG9vcENhbGxiYWNrRnVuY3Rpb25QdHIgZnVuY3Rpb25QdHIsIFBh
c3NSZWZQdHI8VGFza0NvbnRleHQ+IHRhc2tDb250ZXh0KQogewogICAgIGNvbnN0IEpTRE9NV2lu
ZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01XaW5kb3dCYXNlKil0aGlzT2Jq
ZWN0LCBmdW5jdGlvblB0ciwgdGFza0NvbnRleHQpKTsKKyAgICB0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmpl
Y3RUYXNrPigoSlNET01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCBmdW5jdGlvblB0ciwgdGFza0Nv
bnRleHQpKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93
U2hlbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGZmNWZkYmU2MTBmZGM3YWYwYmQzY2E0NDA0NzA5ZDU4
YmM5Yzc3N2YuLjQyZWY4NzU0ZGQ5MmVhMzA1NDRmY2JlZDc5MTFmNzQyZmM5NjZjZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kgogdm9p
ZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCwgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OlF1ZXVlVGFza1Rv
RXZlbnRMb29wQ2FsbGJhY2tGdW5jdGlvblB0ciBmdW5jdGlvblB0ciwgUGFzc1JlZlB0cjxUYXNr
Q29udGV4dD4gdGFza0NvbnRleHQpCiB7CiAgICAgY29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxjb25zdCBKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNET01HbG9iYWxPYmplY3QqKXRo
aXNPYmplY3QsIGZ1bmN0aW9uUHRyLCB0YXNrQ29udGV4dCkpOworICAgIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2Jh
bE9iamVjdFRhc2s+KChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09iamVjdCwgZnVuY3Rpb25QdHIs
IHRhc2tDb250ZXh0KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAzM2QzZDQ0YjczM2MwOGU4MTY0MmMxZGE1MTI0N2Q3MTJmNGQ4YTg0Li5kMDkwOTRkMjAx
MDk3MWI2YTk0ZDg3NWEyNDk1ZGRhNzRhNDJkNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzA5OCw3ICszMDk4LDcg
QEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSlcbiIp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBkZWxldGUgbV9kYXRhO1xuIik7CiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s6OmNy
ZWF0ZShtX2RhdGEpKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjb250
ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPERlbGV0ZUNhbGxiYWNrRGF0YVRhc2s+KG1f
ZGF0YSkpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWZuZGVmIE5ERUJVR1xuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9kYXRhID0gMDtcbiIpOwogICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IDAxMWMw
NGQ2MjIzZjE5MTExMjhhZGE5ZjZmMDQ3ZWM1NjBiODUxMzcuLjY0NmYwNDA3NGRmNWJmZWExMjlm
ZmY3YTAzM2E3MjY2MDdmN2NlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcApAQCAtNDksNyArNDks
NyBAQCBKU1Rlc3RDYWxsYmFjazo6fkpTVGVzdENhbGxiYWNrKCkKICAgICBpZiAoIWNvbnRleHQg
fHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCiAgICAgICAgIGRlbGV0ZSBtX2RhdGE7CiAg
ICAgZWxzZQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhEZWxldGVDYWxsYmFja0RhdGFUYXNr
OjpjcmVhdGUobV9kYXRhKSk7CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91
bmlxdWU8RGVsZXRlQ2FsbGJhY2tEYXRhVGFzaz4obV9kYXRhKSk7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIG1fZGF0YSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
cm9zc1RocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaApp
bmRleCA2Y2M1Zjg0MjE1NmQyMGU4MDg2NWNhMzQ4NTYyOGQxYTcyNTc3ZGQyLi5lODI0MmE5N2Iw
OWM2YjA4OTg2MTI1YzM3YzZjOGY1NjIyZDAyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhy
ZWFkVGFzay5oCkBAIC02MywyNCArNjMsMTggQEAgcHVibGljOgogICAgIHR5cGVkZWYgQ3Jvc3NU
aHJlYWRUYXNrMTxQMSwgTVAxPiBDcm9zc1RocmVhZFRhc2s7CiAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwogCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFy
YW0xIHBhcmFtZXRlcjEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3Nz
VGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAg
Q3Jvc3NUaHJlYWRUYXNrMShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKICAgICAg
ICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEp
CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgqbV9tZXRo
b2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1ldGhv
ZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiB9OwpAQCAtOTMsMTIgKzg3LDYgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAxPjo6
UGFyYW1UeXBlIFBhcmFtMTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1Ry
YWl0czxQMj46OlBhcmFtVHlwZSBQYXJhbTI7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFy
YW0yIHBhcmFtZXRlcjIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3Nz
VGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrMihNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1l
dGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAg
ICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0ZXIxKQpAQCAtMTA2LDEyICs5NCwxMiBAQCBwcml2
YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICAoKm1f
bWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMik7CiAgICAgfQogCi1w
cml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiAgICAg
UDIgbV9wYXJhbWV0ZXIyOwpAQCAtMTI2LDEyICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDI+OjpQYXJhbVR5cGUgUGFyYW0yOwog
ICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBl
IFBhcmFtMzsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRl
KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFy
YW0zIHBhcmFtZXRlcjMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3Nz
VGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsK
LSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrMyhNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzKQog
ICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1l
dGVyMSkKQEAgLTE0MCwxMiArMTIyLDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1l
dGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMpOwogICAgIH0KIAotcHJpdmF0ZToKICAg
ICBNZXRob2QgbV9tZXRob2Q7CiAgICAgUDEgbV9wYXJhbWV0ZXIxOwogICAgIFAyIG1fcGFyYW1l
dGVyMjsKQEAgLTE2MiwxMiArMTQ0LDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAzPjo6UGFyYW1UeXBlIFBhcmFtMzsKICAgICB0eXBlZGVm
IHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0
aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0
ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1l
dGVyMywgcGFyYW1ldGVyNCkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRh
c2s0KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwg
UGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQogICAgICAgICA6IG1fbWV0aG9k
KG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTE3NywxMiAr
MTUzLDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIy
LCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1l
dGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0ZXIy
OwpAQCAtMjAxLDEyICsxNzcsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9z
c1RocmVhZFRhc2tUcmFpdHM8UDQ+OjpQYXJhbVR5cGUgUGFyYW00OwogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKIAotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2Qs
IFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMs
IFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFy
YW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSkpOwotICAgIH0KLQot
cHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2s1KE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJh
bWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJh
bWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSkKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAg
ICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yMTcsMTIgKzE4NywxMiBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICAo
Km1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0
ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSk7CiAgICAgfQogCi1wcml2YXRlOgogICAg
IE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3BhcmFtZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0
ZXIyOwpAQCAtMjQzLDEyICsyMTMsNiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBD
cm9zc1RocmVhZFRhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKIAot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRo
b2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRl
cjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRl
cjYpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayht
ZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBh
cmFtZXRlcjUsIHBhcmFtZXRlcjYpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgQ3Jvc3NUaHJl
YWRUYXNrNihNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRl
cjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRl
cjUsIFBhcmFtNiBwYXJhbWV0ZXI2KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAg
ICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTI2MCwxMiArMjI0LDEyIEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgqbV9t
ZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMs
IG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYpOwogICAgIH0KIAotcHJp
dmF0ZToKICAgICBNZXRob2QgbV9tZXRob2Q7CiAgICAgUDEgbV9wYXJhbWV0ZXIxOwogICAgIFAy
IG1fcGFyYW1ldGVyMjsKQEAgLTI4OCwxMiArMjUyLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFA2Pjo6UGFyYW1UeXBlIFBhcmFtNjsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNz46OlBhcmFtVHlwZSBQ
YXJhbTc7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShN
ZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFt
MyBwYXJhbWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFt
NiBwYXJhbWV0ZXI2LCBQYXJhbTcgcGFyYW1ldGVyNykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
MiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1l
dGVyNykpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2s3KE1ldGhvZCBt
ZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFt
ZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFt
ZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAg
ICAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTMwNiwxMiArMjY0LDEyIEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgq
bV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRl
cjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYsIG1fcGFyYW1ldGVy
Nyk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIE1ldGhvZCBtX21ldGhvZDsKICAgICBQMSBtX3Bh
cmFtZXRlcjE7CiAgICAgUDIgbV9wYXJhbWV0ZXIyOwpAQCAtMzM1LDEzICsyOTMsNyBAQCBwdWJs
aWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDY+OjpQYXJh
bVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRz
PFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFk
VGFza1RyYWl0czxQOD46OlBhcmFtVHlwZSBQYXJhbTg7Ci0gICAgCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFt
ZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFt
ZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFt
ZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJh
bWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3LCBw
YXJhbWV0ZXI4KSk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKKwogICAgIENyb3NzVGhyZWFkVGFz
azgoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQ
YXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQ
YXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQog
ICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBA
IC0zNTQsMTMgKzMwNiwxMyBAQCBwcml2YXRlOgogICAgICwgbV9wYXJhbWV0ZXI4KHBhcmFtZXRl
cjgpCiAgICAgewogICAgIH0KLSAgICAKKworcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAg
ICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFt
ZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJhbWV0ZXI1LCBtX3BhcmFtZXRlcjYsIG1fcGFyYW1l
dGVyNywgbV9wYXJhbWV0ZXI4KTsKICAgICB9Ci0gICAgCi1wcml2YXRlOgorCiAgICAgTWV0aG9k
IG1fbWV0aG9kOwogICAgIFAxIG1fcGFyYW1ldGVyMTsKICAgICBQMiBtX3BhcmFtZXRlcjI7CkBA
IC0zNzMsNTUgKzMyNSw1NSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
Y3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAg
ICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrMTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46
OlR5cGUsIE1QMT46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1Ro
cmVhZFRhc2sxPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxPj4oCiAg
ICAgICAgIG1ldGhvZCwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIE1QMj4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNr
Mjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrMjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
MT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDI+
PigKICAgICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1QYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKK3N0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAg
dm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3QgUDMm
IHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazM8dHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1Q
Mz46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2sz
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+OjpUeXBlLCBNUDM+PigKICAgICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENv
cGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShw
YXJhbWV0ZXIyKSwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIE1QND4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
Y3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0KSwKICAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25z
dCBQNCYgcGFyYW1ldGVyNCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNDx0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlw
ZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1Q
ND46OmNyZWF0ZSgKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s0
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
VHlwZSwgTVA0Pj4oCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29w
eShwYXJhbWV0ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShw
YXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1l
IE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lk
ICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29u
c3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFyYW1l
dGVyNSkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVh
ZENvcGllcjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpU
eXBlLCBNUDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAg
ICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+OjpjcmVhdGUoCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNTx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBN
UDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgICAgICB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDU+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHko
cGFyYW1ldGVyNCksCkBAIC00MjksMTIgKzM4MSwxMiBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUg
UDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLVBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1
bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFz
aygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDUsIE1QNiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQs
IGNvbnN0IFA1JiBwYXJhbWV0ZXI1LCBjb25zdCBQNiYgcGFyYW1ldGVyNikKIHsKLSAgICByZXR1
cm4gQ3Jvc3NUaHJlYWRUYXNrNjx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUs
IE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAotICAgICAgICB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6VHlwZSwgTVA2
Pjo6Y3JlYXRlKAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzazY8
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
Mz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpU
eXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBl
bmFtZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNj4+KAogICAgICAgICAgICAgbWV0
aG9kLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
LCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICBD
cm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKQEAgLTQ0MiwxMyArMzk0LDEzIEBAIFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUg
TVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0
LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0
eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3PgotUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRo
b2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
LCBNUDcpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwg
Y29uc3QgUDMmIHBhcmFtZXRlcjMsIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LCBjb25zdCBQNSYgcGFy
YW1ldGVyNSwgY29uc3QgUDYmIHBhcmFtZXRlcjYsIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQogewot
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwg
dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrNzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMT46OlR5cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBN
UDIsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAogICAgICAgICB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQND46OlR5cGUsIE1QNCwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDU+OjpUeXBlLCBNUDUsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA2
Pjo6VHlwZSwgTVA2LAotICAgICAgICB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNz46OlR5
cGUsIE1QNz46OmNyZWF0ZSgKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+
OjpUeXBlLCBNUDc+PigKICAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgIENyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpj
b3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCkBA
IC00NTcsMTMgKzQwOSwxMyBAQCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1Q
NSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywg
dHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KLVBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAorc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCptZXRo
b2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
LCBNUDcsIE1QOCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRl
cjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUm
IHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywg
Y29uc3QgUDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazg8dHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhy
ZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46
OlR5cGUsIE1QMywKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s4
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+OjpUeXBlLCBNUDMsCiAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+OjpUeXBl
LCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6VHlwZSwgTVA1LCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQNj46OlR5cGUsIE1QNiwKLSAgICB0eXBlbmFtZSBDcm9zc1Ro
cmVhZENvcGllcjxQNz46OlR5cGUsIE1QNywgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+
OjpUeXBlLCBNUDg+OjpjcmVhdGUoCisgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+
OjpUeXBlLCBNUDcsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6VHlwZSwgTVA4Pj4o
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwgQ3Jvc3NUaHJl
YWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29w
eShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNzBiNjdjMmQzMzIwY2E2NjIxNzQ5MzIxMjI5ZGRj
NmM1N2Q1NDMzZi4uNTg0Mzc1NzIxNTc4ZTJhMjk3NjY4MGFkOGJhZmNlMmMyZDYwYWI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzQxLDcgKzQ3NDEsNyBAQCB2b2lkIERvY3VtZW50
OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZldGNo
Q29udHJvbCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgp
KSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxB
ZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgdm9pZCBEb2N1bWVudDo6YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QKIHZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRU
aHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNyZWF0
ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFrZV91
bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3NjgsMTQgKzQ3NjgsMTQgQEAgU2VjdXJpdHlP
cmlnaW4qIERvY3VtZW50Ojp0b3BPcmlnaW4oKSBjb25zdAogc3RydWN0IFBlcmZvcm1UYXNrQ29u
dGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVyZm9ybVRhc2tDb250ZXh0KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGVyZm9ybVRhc2tDb250ZXh0KFdl
YWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCisgICAgUGVyZm9ybVRhc2tDb250ZXh0KFdlYWtQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
dGFzaykKICAgICAgICAgOiBkb2N1bWVudFJlZmVyZW5jZShkb2N1bWVudCkKLSAgICAgICAgLCB0
YXNrKHRhc2spCisgICAgICAgICwgdGFzayhzdGQ6Om1vdmUodGFzaykpCiAgICAgewogICAgIH0K
IAogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IGRvY3VtZW50UmVmZXJlbmNlOwotICAgIE93blB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrOwogfTsKIAogdm9pZCBEb2N1bWVudDo6
ZGlkUmVjZWl2ZVRhc2sodm9pZCogdW50eXBlZENvbnRleHQpCkBAIC00NzkxLDIyICs0NzkxLDIy
IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVudHlwZWRDb250ZXh0KQog
CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKChwYWdlICYmIHBh
Z2UtPmRlZmVyc0xvYWRpbmcoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZG9jdW1lbnQtPm1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjb250ZXh0LT50
YXNrLnJlbGVhc2UoKSk7CisgICAgICAgIGRvY3VtZW50LT5tX3BlbmRpbmdUYXNrcy5hcHBlbmQo
c3RkOjptb3ZlKGNvbnRleHQtPnRhc2spKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGNvbnRleHQtPnRhc2stPnBlcmZvcm1UYXNrKGRvY3VtZW50KTsKIH0KIAotdm9pZCBEb2N1bWVu
dDo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNrKQordm9pZCBEb2N1bWVudDo6cG9zdFRh
c2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChk
aWRSZWNlaXZlVGFzaywgbmV3IFBlcmZvcm1UYXNrQ29udGV4dChtX3dlYWtGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKSwgdGFzaykpOworICAgIGNhbGxPbk1haW5UaHJlYWQoZGlkUmVjZWl2ZVRhc2ss
IG5ldyBQZXJmb3JtVGFza0NvbnRleHQobV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHN0
ZDo6bW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIERvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZp
cmVkKFRpbWVyPERvY3VtZW50PiopCiB7CiAgICAgd2hpbGUgKCFtX3BlbmRpbmdUYXNrcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgT3duUHRyPFRhc2s+IHRhc2sgPSBtX3BlbmRpbmdUYXNrc1swXS5y
ZWxlYXNlKCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiB0YXNrID0gc3RkOjptb3Zl
KG1fcGVuZGluZ1Rhc2tzWzBdKTsKICAgICAgICAgbV9wZW5kaW5nVGFza3MucmVtb3ZlKDApOwog
ICAgICAgICB0YXNrLT5wZXJmb3JtVGFzayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGZjMzYzNGFlMWQwZDQ0YWVlYWQ2NGFiMzVlZGQ2NGJkZTQyNzBlZjcuLjI2YmU4ODYy
Y2VkMWQwZGIxYTQzMzVlZjcxY2I2MTMwYWY2ZGE1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC05MzEsNyArOTMxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNETlNQcmVmZXRjaEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRE5TUHJlZmV0Y2hFbmFibGVkOyB9CiAgICAgdm9pZCBwYXJz
ZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhl
IHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMg
dGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQg
c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQg
cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CkBAIC0xNTE3LDcg
KzE1MTcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9wZW5k
aW5nVGFza3NUaW1lcjsKLSAgICBWZWN0b3I8T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKIAogI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM5MDIwZmVhZTY0MGNiYmU1M2U1
MGFjYmEyNzU0NDI2ZWM1MWQzZTIuLjM2Y2YwZTc4YjY2NWU1ODBjMmNmNGFmZmUwNmRjYTFiMjgw
Yzg5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKQEAgLTUxLDExICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvY2Vz
c01lc3NhZ2VzU29vblRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UHJvY2Vzc01lc3NhZ2VzU29vblRhc2s+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByb2Nlc3NNZXNz
YWdlc1Nvb25UYXNrKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmRp
c3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKTsKQEAgLTExOSw3ICsxMTQsNyBAQCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAKIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCkKIHsKLSAgICBw
b3N0VGFzayhQcm9jZXNzTWVzc2FnZXNTb29uVGFzazo6Y3JlYXRlKCkpOworICAgIHBvc3RUYXNr
KHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc01lc3NhZ2VzU29vblRhc2s+KCkpOwogfQogCiB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggODdiMjdkZGNl
YzQ4NGM1M2NlYTZlNzEwNmYzMmFlY2Q3MmM1OTY2My4uMWUzNWUwNzEwNTdlNzM0NzczNmZlYzNi
NTU0ZGU5ODA1MTViZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSA9IDA7IC8vIEV4ZWN1dGVz
IHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVh
bCB2b2lkIHBvc3RUYXNrKHN0ZDo6dW5pcXVlX3B0cjxUYXNrPikgPSAwOyAvLyBFeGVjdXRlcyB0
aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgLy8gR2V0
cyB0aGUgbmV4dCBpZCBpbiBhIGNpcmN1bGFyIHNlcXVlbmNlIGZyb20gMSB0byAyXjMxLTEuCiAg
ICAgaW50IGNpcmN1bGFyU2VxdWVudGlhbElEKCk7CkBAIC0xNTcsMTggKzE1NywxNCBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGlj
IFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8QWRkQ29uc29s
ZU1lc3NhZ2VUYXNrPiBjcmVhdGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNz
YWdlKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKLSAgICBwcml2YXRlOgogICAgICAgICBBZGRD
b25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2Up
CiAgICAgICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgICAgICAgICAsIG1fbWVzc2FnZSht
ZXNzYWdlLmlzb2xhdGVkQ29weSgpKQogICAgICAgICB7CiAgICAgICAgIH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsK
KyAgICBwcml2YXRlOgogICAgICAgICBNZXNzYWdlU291cmNlIG1fc291cmNlOwogICAgICAgICBN
ZXNzYWdlTGV2ZWwgbV9sZXZlbDsKICAgICAgICAgU3RyaW5nIG1fbWVzc2FnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGM2Mjg1YjE3MTViYzY3MmY1YzlkODhiMWU5
NjRkMTUxMDEwMTJhY2YuLmRmNzc4OWVmNjBhZTI5YjgxOTViNTdkYmRhOTQ2ZGI1M2IyMDZlY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtNDAsOSArNDAsMTAgQEAg
bmFtZXNwYWNlIHsKIAogY2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rhc2sgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
RGlzcGF0Y2hDYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBj
YWxsYmFjaywgY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIERpc3BhdGNoQ2FsbGJhY2tUYXNrKFBh
c3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRhdGEpCisg
ICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGlzcGF0Y2hDYWxsYmFja1Rhc2soY2Fs
bGJhY2ssIGRhdGEpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCkBAIC01MSwxMiArNTIsNiBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIERpc3BhdGNoQ2FsbGJhY2tUYXNrKFBhc3NSZWZQdHI8U3RyaW5nQ2Fs
bGJhY2s+IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKLSAgICAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgfQotCiAgICAg
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBtX2NhbGxiYWNrOwogICAgIGNvbnN0IFN0cmluZyBtX2Rh
dGE7CiB9OwpAQCAtNjUsNyArNjAsNyBAQCBwcml2YXRlOgogCiB2b2lkIFN0cmluZ0NhbGxiYWNr
OjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgZGF0YSkKIHsKLSAgICBjb250ZXh0LT5wb3N0VGFzayhEaXNwYXRjaENhbGxiYWNr
VGFzazo6Y3JlYXRlKHRoaXMsIGRhdGEpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhzdGQ6Om1h
a2VfdW5pcXVlPERpc3BhdGNoQ2FsbGJhY2tUYXNrPih0aGlzLCBkYXRhKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzM1N2I0NWZhNmFhN2QwY2Qx
MTM3MGM0NWZhNjM3ZGIzZWY4MDU1Ni4uYzNmNGE4YTE2YzQ0YjNlYzEzOWU3YmQzN2FiMWI0ZmU4
ZjA1MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTExMTksOSArMTExOSwxMiBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJh
Y2soKQogCiBjbGFzcyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENh
Y2hlTGlzdGVuZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVy
LCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3Rh
bCwgaW50IHByb2dyZXNzRG9uZSkKKyAgICBDYWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0
cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBl
dmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSkKKyAgICAgICAgOiBt
X2RvY3VtZW50TG9hZGVyKGxvYWRlcikKKyAgICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAg
ICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJvZ3Jlc3NUb3RhbCkKKyAgICAgICAgLCBtX3Byb2dy
ZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNzVG90YWwsIHBy
b2dyZXNzRG9uZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBPVkVSUklERQpAQCAtMTEzOCwxNCArMTE0MSw2
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNr
KFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OkV2ZW50SUQgZXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpCi0g
ICAgICAgIDogbV9kb2N1bWVudExvYWRlcihsb2FkZXIpCi0gICAgICAgICwgbV9ldmVudElEKGV2
ZW50SUQpCi0gICAgICAgICwgbV9wcm9ncmVzc1RvdGFsKHByb2dyZXNzVG90YWwpCi0gICAgICAg
ICwgbV9wcm9ncmVzc0RvbmUocHJvZ3Jlc3NEb25lKQotICAgIHsKLSAgICB9Ci0KICAgICBSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50SUQgbV9ldmVudElEOwogICAgIGludCBtX3Byb2dyZXNzVG90YWw7CkBAIC0x
MTY3LDcgKzExNjIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVy
VGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudAogICAgIAogICAgIEFTU0VS
VChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIpOwogCi0gICAgZnJh
bWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFzazo6Y3JlYXRlKGxv
YWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKSk7CisgICAgZnJhbWUt
PmRvY3VtZW50KCktPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENhY2hlTGlzdGVuZXJU
YXNrPihsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0VXBkYXRlU3RhdHVzKFVwZGF0ZVN0YXR1
cyBzdGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGQyODA3MDVlYjQ4NzE2NThkODMzZTE1YzBj
MmYxMzgzZjg2Y2ZmYjAuLmE3MWY5Nzk5YzZhOGIyZDM0M2M4YzE0MTViMGY5NGExMjVmNjkzOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJl
cG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKICAgICBib29sIG1h
dGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwotICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVy
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgdmly
dHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoc3RkOjp1bmlxdWVf
cHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKQEAgLTEzOSw3ICsx
MzksNyBAQCBib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbwogICAgIHJldHVybiBuYW1lID09IG1fbmFt
ZTsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit2b2lkIFNoYXJlZFdvcmtl
clByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV93b3JrZXJEb2N1
bWVudHNMb2NrKTsKIApAQCAtMTUyLDE1ICsxNTIsMTUgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm94
eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sKICAgICAvLyBKdXN0IHBpY2sgYW4gYXJiaXRyYXJ5IGFjdGl2ZSBkb2N1bWVudCBmcm9tIHRo
ZSBIYXNoU2V0IGFuZCBwYXNzIGxvYWQgcmVxdWVzdHMgdG8gaXQuCiAgICAgLy8gRklYTUU6IERv
IHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2VyIGNsb3NlcyB0aGUg
ZG9jdW1lbnQgbWlkLWxvYWQsIHZpYSBhIHNoYWRvdyBkb2N1bWVudCBvciBzb21lIG90aGVyIHNv
bHV0aW9uPwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICoobV93b3JrZXJEb2N1bWVudHMuYmVn
aW4oKSk7Ci0gICAgZG9jdW1lbnQtPnBvc3RUYXNrKHRhc2spOworICAgIGRvY3VtZW50LT5wb3N0
VGFzayhzdGQ6Om1vdmUodGFzaykpOwogfQogCi1ib29sIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorYm9vbCBTaGFyZWRXb3Jr
ZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1ZV9w
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIGlmIChpc0Nsb3NpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFT
U0VSVChtX3RocmVhZCk7Ci0gICAgbV90aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
dGFzaywgbW9kZSk7CisgICAgbV90aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoc3Rk
Ojptb3ZlKHRhc2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjUzLDE3ICsy
NTMsMTIgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6Y2xvc2UoKQogCiBjbGFzcyBTaGFyZWRX
b3JrZXJDb25uZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4g
Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhjaGFubmVs
KSk7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQogICAgICAgICA6IG1fY2hhbm5lbChj
aGFubmVsKQogICAgIHsKICAgICB9CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQpCiAgICAgewogICAg
ICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKCpzY3Jp
cHRDb250ZXh0KTsKQEAgLTM2NCw3ICszNTksNyBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5Ojp3b3JrZXJTY3JpcHRMb2FkZWQoU2hhcmVkV29ya2VyUHJveHkmIHByb3h5LAog
ICAgICAgICBwcm94eS5zZXRUaHJlYWQodGhyZWFkKTsKICAgICAgICAgdGhyZWFkLT5zdGFydCgp
OwogICAgIH0KLSAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFNoYXJlZFdv
cmtlckNvbm5lY3RUYXNrOjpjcmVhdGUocG9ydCkpOworICAgIHByb3h5LnRocmVhZCgpLT5ydW5M
b29wKCkucG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4o
cG9ydCkpOwogfQogCiBib29sIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFy
ZWRXb3JrZXJzKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQxMiw3ICs0MDcsNyBAQCB2b2lkIERl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXI+IHdvcgogICAgIH0KICAgICAvLyBJZiBwcm94eSBpcyBhbHJlYWR5IHJ1bm5p
bmcsIGp1c3QgY29ubmVjdCB0byBpdCAtIG90aGVyd2lzZSwga2ljayBvZmYgYSBsb2FkZXIgdG8g
bG9hZCB0aGUgc2NyaXB0LgogICAgIGlmIChwcm94eS0+dGhyZWFkKCkpCi0gICAgICAgIHByb3h5
LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpj
cmVhdGUocG9ydCkpOworICAgICAgICBwcm94eS0+dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFz
ayhzdGQ6Om1ha2VfdW5pcXVlPFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrPihwb3J0KSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+IGxvYWRlciA9
IGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIod29ya2VyLCBwb3J0LCBwcm94
eS5yZWxlYXNlKCkpKTsKICAgICAgICAgbG9hZGVyLT5sb2FkKHVybCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAppbmRleCAwY2M0Nzg5YjMwNmQ5YjE0OGE5
Y2QyMTc0N2UwODkyMTViOTU4NjM3Li5hNTY5NDYyNmU4YTAzYmYzMGUwZDQxMDg4ZDk1ZmZlYmQ3
OWU0YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAK
QEAgLTQ4LDkgKzQ4LDExIEBAIFdvcmtlckV2ZW50UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkK
IAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzayBGSU5BTCA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCisgICAgRXZlbnREaXNwYXRjaGVy
VGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1
ZSkKKyAgICAgICAgOiBtX2V2ZW50KGV2ZW50KQorICAgICAgICAsIG1fZXZlbnRRdWV1ZShldmVu
dFF1ZXVlKQorICAgICAgICAsIG1faXNDYW5jZWxsZWQoZmFsc2UpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGlzcGF0Y2hlclRhc2soZXZlbnQsIGV2ZW50UXVldWUp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5FdmVudERpc3BhdGNoZXJUYXNrKCkKQEAgLTgwLDEz
ICs4Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRXZlbnREaXNwYXRjaGVy
VGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1
ZSkKLSAgICAgICAgOiBtX2V2ZW50KGV2ZW50KQotICAgICAgICAsIG1fZXZlbnRRdWV1ZShldmVu
dFF1ZXVlKQotICAgICAgICAsIG1faXNDYW5jZWxsZWQoZmFsc2UpCi0gICAgewotICAgIH0KLQog
ICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKICAgICBXb3JrZXJFdmVudFF1ZXVlJiBtX2V2ZW50
UXVldWU7CiAgICAgYm9vbCBtX2lzQ2FuY2VsbGVkOwpAQCAtOTcsOSArOTIsOSBAQCBib29sIFdv
cmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkK
ICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlZlB0cjxF
dmVudD4gZXZlbnQgPSBwcnBFdmVudDsKLSAgICBPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFzaz4g
dGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZShldmVudCwgKnRoaXMpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudERpc3BhdGNoZXJUYXNrPihldmVudCwgKnRoaXMpOwogICAgIG1fZXZlbnRUYXNrTWFw
LmFkZChldmVudC5yZWxlYXNlKCksIHRhc2suZ2V0KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5wb3N0VGFzayh0YXNrLnJlbGVhc2UoKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMjkz
Nzk3NDA1ZDUxNDlhN2Q1ZDc3MDJiNjY4NTNhOGYzYzVlOWQ4YS4uNmU1N2E2ZWJmZWIwYWNjMjgw
ZjA1NjMzM2M1NDkyZThmODQ0N2M2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTY4LDExICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q2xvc2VX
b3JrZXJHbG9iYWxTY29wZVRhc2s+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENsb3NlV29ya2VyR2xvYmFsU2NvcGVUYXNrKTsKLSAgICB9Ci0KICAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC0xNTMsNyArMTQ4LDcgQEAgdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6Y2xvc2UoKQogICAgIC8vIEFmdGVyIG1fY2xvc2luZyBpcyBzZXQsIGFsbCB0aGUg
dGFza3MgaW4gdGhlIHF1ZXVlIGNvbnRpbnVlIHRvIGJlIGZldGNoZWQgYnV0IG9ubHkKICAgICAv
LyB0YXNrcyB3aXRoIGlzQ2xlYW51cFRhc2soKT09dHJ1ZSB3aWxsIGJlIGV4ZWN1dGVkLgogICAg
IG1fY2xvc2luZyA9IHRydWU7Ci0gICAgcG9zdFRhc2soQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRh
c2s6OmNyZWF0ZSgpKTsKKyAgICBwb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPENsb3NlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrPigpKTsKIH0KIAogV29ya2VyTmF2aWdhdG9yKiBXb3JrZXJHbG9iYWxT
Y29wZTo6bmF2aWdhdG9yKCkgY29uc3QKQEAgLTE4MCw5ICsxNzUsOSBAQCBib29sIFdvcmtlckds
b2JhbFNjb3BlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0
YXNrKQordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soc3RkOjp1bmlxdWVfcHRyPFRh
c2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKKyAg
ICB0aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIGlu
dCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dChQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlv
bj4gYWN0aW9uLCBpbnQgdGltZW91dCkKQEAgLTI2NSw3ICsyNjAsNyBAQCB2b2lkIFdvcmtlckds
b2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGNvbnN0CiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRl
eHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6OmNy
ZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8QWRkQ29uc29sZU1lc3NhZ2VUYXNrPihzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3Niw3ICsyNzEsNyBAQCB2b2lkIFdvcmtl
ckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldgogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAg
ICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVN
ZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgcG9z
dFRhc2soc3RkOjptYWtlX3VuaXF1ZTxBZGRDb25zb2xlTWVzc2FnZVRhc2s+KHNvdXJjZSwgbGV2
ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDI1MzJiOTI2ZGQzM2Y2MTNkMTE3YjIz
Y2U4NDFiYTFhY2MwNDVmYzQuLmM1YWI3ZjMxNTBlOTk1YjUxNTg0NjNmOTRhYzZhNGM4MDQyNDQz
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTgz
LDcgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NP
d25QdHI8VGFzaz4pIE9WRVJSSURFOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3Mg
dGhyZWFkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soc3Rk
Ojp1bmlxdWVfcHRyPFRhc2s+KSBPVkVSUklERTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29u
dGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgICAgICAvLyBXb3JrZXJHbG9iYWxT
Y29wZQogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogc2VsZigpIHsgcmV0dXJuIHRoaXM7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCAxODU0MmI2
ZmU3NTVmMjBmNjRhNjVmNTI5ZWMwNDg4NDI0ZTZhNDhhLi4zMDQ4NWE0NmZlYmJmM2Y2NjU4MzJl
YWU5OThkODczOTQ0ZWJiZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvYWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2Fk
ZXJQcm94eS5oCkBAIC00OSwxMiArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIH5Xb3JrZXJMb2FkZXJQcm94eSgpIHsgfQogCiAgICAgICAgIC8vIFBvc3RzIGEg
dGFzayB0byB0aGUgdGhyZWFkIHdoaWNoIHJ1bnMgdGhlIGxvYWRpbmcgY29kZSAobm9ybWFsbHks
IHRoZSBtYWluIHRocmVhZCkuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVy
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7CiAKICAgICAgICAgLy8gUG9zdHMgY2FsbGJhY2tzIGZy
b20gbG9hZGluZyBjb2RlIHRvIHRoZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhlICdtb2RlJyBpcyB1
c2VkIHRvIGRpZmZlcmVudGlhdGUKICAgICAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9h
ZGluZyByZXF1ZXN0cyBzbyB0aGV5IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAgICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KLSAg
ICAgICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2Rl
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29u
c3QgU3RyaW5nJiBtb2RlKSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRl
eCAyMDBjMDhlNTNmZGQzNzI2MWQ4MmUyMzNkMTI4MTYzNjM5NmEyZTlhLi5kMjYzMDU3NDViMTg0
MDI5YjAyYmZlNTQxODAyYzYxYjI5NzQzNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTYsMTggKzU2LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBN
ZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzKSk7Ci0gICAgfQot
Ci1wcml2YXRlOgogICAgIE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2soUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzKQogICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAg
ICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNj
cmlwdENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC03NywxOSArNzIsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgY29udGV4dC0+dGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCku
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGNvbnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0
eSgpKTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9tZXNzYWdlOwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFu
bmVsczsKIH07CiAKIGNsYXNzIE1lc3NhZ2VXb3JrZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3Nh
Z2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IE1lc3NhZ2VXb3JrZXJUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzLCBtZXNzYWdp
bmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBNZXNzYWdlV29ya2VyVGFzayhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdp
bmdQcm94eSkKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgLCBtX2NoYW5u
ZWxzKGNoYW5uZWxzKQpAQCAtOTcsNiArODUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
K3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdENvbnRleHQpCiAgICAgewogICAgICAgICBXb3JrZXIqIHdvcmtlck9iamVj
dCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwpAQCAtMTA3LDcgKzk2LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwgbV9tZXNzYWdlKSk7CiAgICAgfQogCi1wcml2YXRl
OgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKICAgICBPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgV29ya2VyTWVzc2Fn
aW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CkBAIC0xMTUsMTIgKzEwMyw2IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFdvcmtlckV4Y2VwdGlvblRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyRXhjZXB0
aW9uVGFzaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV29ya2VyRXhjZXB0aW9uVGFzayhlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlVVJMLCBtZXNzYWdpbmdQcm94eSkpOwotICAgIH0KLQotcHJpdmF0ZToK
ICAgICBXb3JrZXJFeGNlcHRpb25UYXNrKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAgICAgOiBtX2Vycm9yTWVz
c2FnZShlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCkpCiAgICAgICAgICwgbV9saW5lTnVtYmVy
KGxpbmVOdW1iZXIpCkBAIC0xMzAsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Citwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSBt
X21lc3NhZ2luZ1Byb3h5LT53b3JrZXJPYmplY3QoKTsKQEAgLTE1MywxNyArMTM2LDEyIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdp
bmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzayhtZXNzYWdpbmdQcm94eSkpOwotICAg
IH0KLQotcHJpdmF0ZToKICAgICBXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2soV29ya2Vy
TWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQogICAgICAgICA6IG1fbWVzc2FnaW5nUHJv
eHkobWVzc2FnaW5nUHJveHkpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAg
ICBtX21lc3NhZ2luZ1Byb3h5LT53b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCk7
CkBAIC0xNzQsMTcgKzE1MiwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBXb3JrZXJUZXJtaW5hdGVU
YXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRlcm1pbmF0ZVRhc2s+IGNyZWF0ZShXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdvcmtlclRlcm1pbmF0ZVRhc2sobWVzc2FnaW5nUHJveHkpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6CiAgICAgV29ya2VyVGVybWluYXRlVGFzayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVz
c2FnaW5nUHJveHkpCiAgICAgICAgIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkK
ICAgICB7CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikKICAgICB7CiAgICAgICAgIG1fbWVzc2FnaW5nUHJveHkt
PnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7CkBAIC0xOTUsMTIgKzE2OCw2IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s+IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQ
cm94eSogbWVzc2FnaW5nUHJveHksIGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJU
aHJlYWRBY3Rpdml0eVJlcG9ydFRhc2sobWVzc2FnaW5nUHJveHksIGNvbmZpcm1pbmdNZXNzYWdl
LCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgV29ya2VyVGhy
ZWFkQWN0aXZpdHlSZXBvcnRUYXNrKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94
eSwgYm9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCiAgICAg
ICAgIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKICAgICAgICAgLCBtX2NvbmZp
cm1pbmdNZXNzYWdlKGNvbmZpcm1pbmdNZXNzYWdlKQpAQCAtMjA4LDYgKzE3NSw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBtX21lc3NhZ2luZ1By
b3h5LT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChtX2NvbmZpcm1pbmdNZXNzYWdlLCBt
X2hhc1BlbmRpbmdBY3Rpdml0eSk7CkBAIC0yMjAsMTggKzE4OCwxMyBAQCBwcml2YXRlOgogCiBj
bGFzcyBQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UG9zdE1l
c3NhZ2VUb1BhZ2VJbnNwZWN0b3JUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1l
c3NhZ2luZ1Byb3h5LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayhtZXNzYWdpbmdQ
cm94eSwgbWVzc2FnZSkpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICBQb3N0TWVzc2FnZVRvUGFn
ZUluc3BlY3RvclRhc2soV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQ
cm94eSkKICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZS5pc29sYXRlZENvcHkoKSkKICAgICB7
CiAgICAgfQogCitwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikKICAgICB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTI0Niwx
NyArMjA5LDEyIEBAIHByaXZhdGU6CiAKIGNsYXNzIE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzaz4gY3JlYXRlKGJv
b2wgaXNPbkxpbmUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZVRhc2soaXNPbkxpbmUpKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAg
Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayhib29sIGlzT25MaW5lKQogICAgICAgICA6IG1f
aXNPbkxpbmUoaXNPbkxpbmUpCiAgICAgewogICAgIH0KIAorcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICB7
CiAgICAgICAgIEF0b21pY1N0cmluZyBldmVudE5hbWUgPSBtX2lzT25MaW5lID8gZXZlbnROYW1l
cygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudDsKQEAgLTMxMiw3ICsy
NzAsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdAogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscykKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKE1lc3NhZ2VX
b3JrZXJUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMsIHRoaXMpKTsKKyAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVdvcmtl
clRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzLCB0aGlzKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCkBAIC0zMjIsMzEgKzI4MCwzMSBAQCB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkUwogCiAgICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1l
ZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
ayhNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrOjpjcmVhdGUobWVzc2FnZSwgY2hhbm5lbHMp
KTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s+KG1lc3NhZ2UsIGNoYW5uZWxzKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdv
cmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgICAg
IG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlV29ya2Vy
R2xvYmFsU2NvcGVUYXNrPihtZXNzYWdlLCBjaGFubmVscykpOwogfQogCi1ib29sIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQorYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFz
aywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChtX3dvcmtlclRocmVhZCk7Ci0gICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7Cisg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoc3RkOjptb3ZlKHRh
c2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+IHRhc2spCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVy
KHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewog
ICAgIC8vIEZJWE1FOiBJbiBjYXNlIG9mIG5lc3RlZCB3b3JrZXJzLCB0aGlzIHNob3VsZCBnbyBk
aXJlY3RseSB0byB0aGUgcm9vdCBEb2N1bWVudCBjb250ZXh0LgogICAgIEFTU0VSVChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayh0YXNrKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0
aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBz
b3VyY2VVUkwsIHRoaXMpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRXhjZXB0aW9uVGFzaz4oZXJyb3JNZXNzYWdlLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOwogfQogCiBzdGF0aWMgdm9p
ZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQpAQCAtMzc0LDkgKzMzMiw5IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRo
cmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+CiAgICAgICAgIG1f
dW5jb25maXJtZWRNZXNzYWdlQ291bnQgPSB0YXNrQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhy
ZWFkSGFkUGVuZGluZ0FjdGl2aXR5ID0gdHJ1ZTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIG1l
YW5zIGEgcGVuZGluZyBhY3Rpdml0eS4KIAorICAgICAgICBhdXRvIHF1ZXVlZEVhcmx5VGFza3Mg
PSBzdGQ6Om1vdmUobV9xdWV1ZWRFYXJseVRhc2tzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQotICAgICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0ucmVsZWFzZSgpKTsKLSAgICAg
ICAgbV9xdWV1ZWRFYXJseVRhc2tzLmNsZWFyKCk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bW92ZShxdWV1ZWRFYXJseVRhc2tzW2ldKSk7CiAg
ICAgfQogfQogCkBAIC0zOTQsNyArMzUyLDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgaWYgKCFtX3dvcmtl
clRocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhOb3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2VUYXNrOjpjcmVhdGUoaXNPbmxpbmUp
KTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlx
dWU8Tm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzaz4oaXNPbmxpbmUpKTsKIH0KIAogdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBwcm94eSkKQEAgLTQ2NSwx
NCArNDIzLDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojp3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhXb3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZFRhc2s6OmNyZWF0ZSh0
aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4odGhpcykpOwogICAgIC8vIFdp
bGwgZXhlY3V0ZSB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkgb24gY29udGV4
dCdzIHRocmVhZC4KIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xvYmFs
U2NvcGVDbG9zZWQoKQogewogICAgIC8vIEV4ZWN1dGVzIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCkgb24gcGFyZW50IGNvbnRleHQncyB0aHJlYWQuCi0gICAgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5wb3N0VGFzayhXb3JrZXJUZXJtaW5hdGVUYXNrOjpjcmVhdGUodGhpcykpOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJUZXJtaW5hdGVUYXNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKQpAQCAtNTAzLDE5ICs0NjEsMTkg
QEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6dGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUo
KQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
TWVzc2FnZVRvUGFnZUluc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rv
clRhc2s6OmNyZWF0ZSh0aGlzLCBtZXNzYWdlKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9y
VGFzaz4odGhpcywgbWVzc2FnZSkpOwogfQogI2VuZGlmCiAKIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRo
cmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRoaXMsIHRydWUsIGhhc1BlbmRpbmdBY3Rp
dml0eSkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s+KHRoaXMsIHRydWUsIGhhc1Bl
bmRpbmdBY3Rpdml0eSkpOwogICAgIC8vIFdpbGwgZXhlY3V0ZSByZXBvcnRQZW5kaW5nQWN0aXZp
dHlJbnRlcm5hbCgpIG9uIGNvbnRleHQncyB0aHJlYWQuCiB9CiAKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkK
IHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFj
dGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKHRoaXMsIGZhbHNlLCBoYXNQZW5kaW5nQWN0aXZpdHkp
KTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPih0aGlzLCBmYWxzZSwgaGFzUGVuZGlu
Z0FjdGl2aXR5KSk7CiAgICAgLy8gV2lsbCBleGVjdXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUlu
dGVybmFsKCkgb24gY29udGV4dCdzIHRocmVhZC4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGI2YjQ5ZjI5NTBkZjkzNjRmYmU4ZGYz
MmY3ZjFiYjQ5ODY0ZjhiNGUuLjgwMmJjYzRkMmZmN2UzZjI2MDRjMzIzZWEwZGUwNTY5YzQ3OTA2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgK
QEAgLTgxLDggKzgxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbXBsZW1l
bnRhdGlvbiBvZiBXb3JrZXJMb2FkZXJQcm94eS4KICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgY2FsbGVkIG9uIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxvYWRpbmcKICAgICAg
ICAgLy8gcmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8gV29ya2VyR2xvYmFs
U2NvcGUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpIE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGJv
b2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShzdGQ6OnVuaXF1ZV9wdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgT1ZFUlJJREU7
CiAKICAgICAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVk
V29ya2VyVGhyZWFkPik7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7CiAKLSAgICAgICAgVmVjdG9yPE93
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAv
LyBUYXNrcyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3Jl
YXRlZC4KKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUg
dW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yKiBtX3Bh
Z2VJbnNwZWN0b3I7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCmluZGV4IGY0YTJlZmM4NjM3ZDYyZmUyMDY2N2MzYzFjZDAwOGY5NjgyNDMwYmYuLmVjMzU5
YzUyMzgzMjNjNDM5NjdkZjRlZjA1YjJmNDU1MWY1ZjU4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMTk2LDI0ICsxOTYsMjQgQEAgdm9pZCBXb3JrZXJS
dW5Mb29wOjp0ZXJtaW5hdGUoKQogICAgIG1fbWVzc2FnZVF1ZXVlLmtpbGwoKTsKIH0KIAotdm9p
ZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIHBvc3RUYXNr
Rm9yTW9kZSh0YXNrLCBkZWZhdWx0TW9kZSgpKTsKKyAgICBwb3N0VGFza0Zvck1vZGUoc3RkOjpt
b3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0FuZFRlcm1pbmF0ZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2spCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKHN0ZDo6dW5p
cXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIG1fbWVz
c2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKHRhc2ssIGRlZmF1bHRNb2RlKCku
aXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKFRhc2s6
OmNyZWF0ZShzdGQ6Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpKTsK
IH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lk
IFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1f
bWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFzaywgbW9kZS5pc29sYXRlZENvcHko
KSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUoc3RkOjptb3ZlKHRh
c2spLCBtb2RlLmlzb2xhdGVkQ29weSgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJS
dW5Mb29wOjpUYXNrPiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitzdGQ6
OnVuaXF1ZV9wdHI8V29ya2VyUnVuTG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBj
b25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPihu
ZXcgVGFzayh0YXNrLCBtb2RlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPihu
ZXcgVGFzayhzdGQ6Om1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29w
OjpUYXNrOjpwZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMjIzLDggKzIyMyw4IEBAIHZvaWQgV29ya2Vy
UnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCwg
U2NyaXB0RXhlY3V0CiAgICAgICAgIG1fdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7CiB9CiAK
LVdvcmtlclJ1bkxvb3A6OlRhc2s6OlRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi0gICAgOiBtX3Rhc2sodGFzaykK
K1dvcmtlclJ1bkxvb3A6OlRhc2s6OlRhc2soc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICA6IG1fdGFzayhz
dGQ6Om1vdmUodGFzaykpCiAgICAgLCBtX21vZGUobW9kZS5pc29sYXRlZENvcHkoKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggM2RlZTVhNTNmMWRhMjVm
OTdjNTIyYzViNjRjZTlhNjYzM2M3NjRjZS4uYTcyNjQ2ZjI1MDcyNjc4ZTc4NTA4MDgxNjQ5MjBj
MTc2YjJlYWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTYw
LDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgp
OwogICAgICAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VRdWV1
ZS5raWxsZWQoKTsgfQogCi0gICAgICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5h
dGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0gICAgICAgIHZv
aWQgcG9zdFRhc2tGb3JNb2RlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgIHZvaWQgcG9zdFRhc2soc3RkOjp1bmlx
dWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0
VGFza0FuZFRlcm1pbmF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4pOworICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShzdGQ6OnVuaXF1ZV9wdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICAg
ICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJZDsg
fQogCkBAIC03MSwxNSArNzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFz
cyBUYXNrIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUYXNrPiBjcmVhdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGFzaz4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAgIH5UYXNrKCkg
eyB9CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZGU7IH0KICAgICAgICAgICAgIHZvaWQgcGVyZm9ybVRhc2soY29uc3QgV29ya2VyUnVuTG9vcCYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAg
ICAgVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNv
bnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgICAgICBUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAg
Ci0gICAgICAgICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gbV90YXNr
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IG1fdGFzazsKICAgICAgICAgICAgIFN0cmluZyBtX21vZGU7CiAgICAgICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA2NzMzZDE0MTA4MzJmNTQz
NmJmNDdkMDgxZjk3YWYxZWZmZDNmNDk2Li5lOWMxMWE0MTIzMTIwN2IzODU4MTk1MTA2ZjQ1ZTVj
MGU1YjdjMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0x
OTAsMTEgKzE5MCw2IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogCiBjbGFz
cyBXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhy
ZWFkU2h1dGRvd25GaW5pc2hUYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2soKSk7Ci0gICAgfQotCiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgKmNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250
ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwpAQCAtMjExLDExICsyMDYsNiBAQCBwdWJsaWM6
CiAKIGNsYXNzIFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdv
cmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzaygpKTsKLSAgICB9
Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAq
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CkBAIC0yNDMsNyArMjMzLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIC8vIFN0aWNrIGEgc2h1dGRvd24gY29tbWFuZCBhdCB0aGUgZW5kIG9m
IHRoZSBxdWV1ZSwgc28gdGhhdCB3ZSBkZWFsCiAgICAgICAgIC8vIHdpdGggYWxsIHRoZSBjbGVh
bnVwIHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KLSAgICAgICAgd29ya2VyR2xvYmFs
U2NvcGUtPnBvc3RUYXNrKFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzazo6Y3JlYXRlKCkp
OworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMjYxLDcgKzI1
MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KG1fd29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAg
IG1fcnVuTG9vcC5wb3N0VGFza0FuZFRlcm1pbmF0ZShXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0
VGFzazo6Y3JlYXRlKCkpOworICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJtaW5hdGUo
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzaz4oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgbV9ydW5Mb29wLnRlcm1pbmF0ZSgpOwpAQCAtMjc3LDcg
KzI2Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJ
bkFsbFRocmVhZHMoKQogICAgIEhhc2hTZXQ8V29ya2VyVGhyZWFkKj4mIHRocmVhZHMgPSB3b3Jr
ZXJUaHJlYWRzKCk7CiAgICAgSGFzaFNldDxXb3JrZXJUaHJlYWQqPjo6aXRlcmF0b3IgZW5kID0g
dGhyZWFkcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8V29ya2VyVGhyZWFkKj46Oml0ZXJhdG9y
IGl0ID0gdGhyZWFkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5y
dW5Mb29wKCkucG9zdFRhc2soYWRvcHRQdHIobmV3IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eVRhc2spKTsKKyAgICAgICAgKCppdCktPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1ha2VfdW5p
cXVlPFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2s+KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="239739"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>