<?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>36949</bug_id>
          
          <creation_ts>2010-04-01 04:48:41 -0700</creation_ts>
          <short_desc>Web Inspector: remove inspector methods from ScriptExecutionContext and derived classes</short_desc>
          <delta_ts>2010-04-07 09:18:54 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>levin</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>207084</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-01 04:48:41 -0700</bug_when>
    <thetext>We used to have several inspector methods exposed via delegating methods in ScriptExecutionContext and its derived classes (Document &amp; WorkerContext). Since we now expose InspectorController from ScriptExecutionContext, removing those methods allows us to simplify things a bit. This also allows to remove extra parameter to Document::addMessage that used to select between two possible message destinations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207835</commentid>
    <comment_count>1</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-02 05:54:01 -0700</bug_when>
    <thetext>We also decided to remove logging of XHR and script import as part of this change, as these seem to have little value (covered by resource tracking) and clutter console logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207837</commentid>
    <comment_count>2</comment_count>
      <attachid>52410</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-02 05:55:36 -0700</bug_when>
    <thetext>Created attachment 52410
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207839</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-02 06:04:19 -0700</bug_when>
    <thetext>Attachment 52410 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/workers/WorkerContext.cpp:208:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 49 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>207843</commentid>
    <comment_count>4</comment_count>
      <attachid>52411</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-02 06:39:27 -0700</bug_when>
    <thetext>Created attachment 52411
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts (style fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207856</commentid>
    <comment_count>5</comment_count>
      <attachid>52411</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-02 08:09:13 -0700</bug_when>
    <thetext>Comment on attachment 52411
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts (style fixed)

&gt;  
&gt; -        scriptExecutionContext()-&gt;scriptImported(scriptLoader.identifier(), scriptLoader.script());
&gt;  #if ENABLE(INSPECTOR)
&gt; -        scriptExecutionContext()-&gt;addMessage(InspectorControllerDestination, JSMessageSource, LogMessageType, LogMessageLevel, &quot;Worker script imported: \&quot;&quot; + *it + &quot;\&quot;.&quot;, callerLine, callerURL);
&gt; +        if (InspectorController* inspector = scriptExecutionContext()-&gt;inspectorController())
&gt; +            inspector-&gt;scriptImported(scriptLoader.identifier(), scriptLoader.script());
&gt;  #endif
Looks like after this change script imports won&apos;t be reported to the user because InspectorController will be 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207858</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-02 08:17:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 52411 [details])
&gt; &gt;  
&gt; &gt; -        scriptExecutionContext()-&gt;scriptImported(scriptLoader.identifier(), scriptLoader.script());
&gt; &gt;  #if ENABLE(INSPECTOR)
&gt; &gt; -        scriptExecutionContext()-&gt;addMessage(InspectorControllerDestination, JSMessageSource, LogMessageType, LogMessageLevel, &quot;Worker script imported: \&quot;&quot; + *it + &quot;\&quot;.&quot;, callerLine, callerURL);
&gt; &gt; +        if (InspectorController* inspector = scriptExecutionContext()-&gt;inspectorController())
&gt; &gt; +            inspector-&gt;scriptImported(scriptLoader.identifier(), scriptLoader.script());
&gt; &gt;  #endif
&gt; Looks like after this change script imports won&apos;t be reported to the user
&gt; because InspectorController will be 0.

addMessage() was dropped intentionally (we don&apos;t want this reported to console), and scriptImported() didn&apos;t work before (used to be notImplemented() before the patch) -- this will only be fixed once we implement worker debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207861</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-02 08:29:33 -0700</bug_when>
    <thetext>I don&apos;t think that refactoring code and drastically changing observable behavior should be done in one patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207863</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-02 08:31:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I don&apos;t think that refactoring code and drastically changing observable
&gt; behavior should be done in one patch.

What do you mean by &quot;drastically changing observable behavior&quot;? Afaik all clients were not implementing the callback that is getting removed + the only visible change is that we are stopping polluting inspector&apos;s console (not to be confused with Console) by the XHR-related records.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207866</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-02 08:38:15 -0700</bug_when>
    <thetext>Yes. Why do this in the same patch with refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207867</commentid>
    <comment_count>10</comment_count>
      <attachid>52411</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 08:40:20 -0700</bug_when>
    <thetext>Comment on attachment 52411
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts (style fixed)

This patch looks great.  I&apos;m really happy we&apos;re going to stop spamming the console with XHR finished messages.

I&apos;m surprised this didn&apos;t change the expected results of any LayoutTests.  I&apos;d imagine that any test that used XHR would have its expected output changed.  Are you sure you ran all the tests?

Please separate this change into two patches:
1) Removing the console spam.
2) Removing all the dead code.

Thanks for the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207872</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-02 08:50:15 -0700</bug_when>
    <thetext>Removing console spam should be done in a separate bug whose title says so. We might already have one, I didn&apos;t search.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207877</commentid>
    <comment_count>12</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-02 09:00:50 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 52411 [details])
&gt; This patch looks great.  I&apos;m really happy we&apos;re going to stop spamming the
&gt; console with XHR finished messages.
&gt; 
&gt; I&apos;m surprised this didn&apos;t change the expected results of any LayoutTests.  I&apos;d
&gt; imagine that any test that used XHR would have its expected output changed. 
&gt; Are you sure you ran all the tests?
&gt; 
&gt; Please separate this change into two patches:
&gt; 1) Removing the console spam.
&gt; 2) Removing all the dead code.
&gt; 
&gt; Thanks for the patch.

Thanks -- I&apos;ll split the patch. The tests are fine, &apos;cause we removed
messages that were only sent to inspector console (not the Console) -- there
don&apos;t seem to be tests that cover this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207880</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 09:15:51 -0700</bug_when>
    <thetext>&gt; Thanks -- I&apos;ll split the patch. The tests are fine, &apos;cause we removed
&gt; messages that were only sent to inspector console (not the Console) -- there
&gt; don&apos;t seem to be tests that cover this.

Ah, I see.  Well, it&apos;s too bad we don&apos;t have coverage of this then.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209039</commentid>
    <comment_count>14</comment_count>
      <attachid>52636</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-06 07:20:34 -0700</bug_when>
    <thetext>Created attachment 52636
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (split XHR/importScripts logging into separate patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209040</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-06 07:27:18 -0700</bug_when>
    <thetext>Attachment 52636 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebCommonWorkerClient.h:52:  Should have a space between // and comment  [whitespace/comments] [4]
WebCore/workers/WorkerContext.cpp:207:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/workers/WorkerContext.cpp:210:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/chromium/src/WebWorkerClientImpl.h:81:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 4 in 45 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>209046</commentid>
    <comment_count>16</comment_count>
      <attachid>52638</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-06 07:51:04 -0700</bug_when>
    <thetext>Created attachment 52638
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209080</commentid>
    <comment_count>17</comment_count>
      <attachid>52638</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-06 09:39:44 -0700</bug_when>
    <thetext>Comment on attachment 52638
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed)

Please file a bug for the code cleanup and put it into the TODO comments. Otherwise looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209083</commentid>
    <comment_count>18</comment_count>
      <attachid>52647</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-06 09:46:46 -0700</bug_when>
    <thetext>Created attachment 52647
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (added bug reference for TODO)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209108</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-06 10:45:31 -0700</bug_when>
    <thetext>+    // TODO(37155): the below is for compatibility only and
+    // should be removed once Chromium is updated to remove
+    // message destination parameter

Please don&apos;t use TODO, use FIXME. And please give a full bug URL - there are several bug tracking systems in use for the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209118</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-06 10:51:26 -0700</bug_when>
    <thetext>+        Removed redundant FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache()

I don&apos;t think that&apos;s true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209122</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-06 10:56:48 -0700</bug_when>
    <thetext>+    virtual void postConsoleMessageToWorkerObject(
+        int sourceIdentifier,
+        int messageType,
+        int messageLevel,
+        const WebString&amp; message,
+        int lineNumber,
+        const WebString&amp; sourceURL)

This isn&apos;t common style in WebKit. We don&apos;t wrap lines to make them fit on an iPhone screen.

     dispatchTaskToMainThread(createCallbackTask(&amp;postConsoleMessageTask, this,
-                                                static_cast&lt;int&gt;(destination),
                                                 static_cast&lt;int&gt;(source),
                                                 static_cast&lt;int&gt;(type),
                                                 static_cast&lt;int&gt;(level),

I&apos;m not sure if these type casts are necessary.

-__ZN20WebFrameLoaderClient39dispatchDidLoadResourceByXMLHttpRequestEmRKN7WebCore12ScriptStringE

There is no need to touch WebCore.order - Apple updates it as necessary, and it&apos;s not used by other vendors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209468</commentid>
    <comment_count>22</comment_count>
      <attachid>52638</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:43:13 -0700</bug_when>
    <thetext>Comment on attachment 52638
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed)

Cleared Yury Semikhatsky&apos;s review+ from obsolete attachment 52638 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209546</commentid>
    <comment_count>23</comment_count>
      <attachid>52719</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-07 02:41:19 -0700</bug_when>
    <thetext>Created attachment 52719
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed, ChangeLog entries fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209552</commentid>
    <comment_count>24</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-04-07 03:09:01 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; +    virtual void postConsoleMessageToWorkerObject(
&gt; +        int sourceIdentifier,
&gt; +        int messageType,
&gt; +        int messageLevel,
&gt; +        const WebString&amp; message,
&gt; +        int lineNumber,
&gt; +        const WebString&amp; sourceURL)
&gt; 
&gt; This isn&apos;t common style in WebKit. We don&apos;t wrap lines to make them fit on an
&gt; iPhone screen.

Considering style guide does not state this explicitly, I thought it might be good idea to preserve existing wrapping style for the file. Fixed per your request, though.

&gt; 
&gt;      dispatchTaskToMainThread(createCallbackTask(&amp;postConsoleMessageTask, this,
&gt; -                                                static_cast&lt;int&gt;(destination),
&gt;                                                  static_cast&lt;int&gt;(source),
&gt;                                                  static_cast&lt;int&gt;(type),
&gt;                                                  static_cast&lt;int&gt;(level),
&gt; 
&gt; I&apos;m not sure if these type casts are necessary.

They&apos;re not indeed (fixed this as well). As you can see, it wasn&apos;t me who added them, just tried to minimize patch footprint.

&gt; -__ZN20WebFrameLoaderClient39dispatchDidLoadResourceByXMLHttpRequestEmRKN7WebCore12ScriptStringE
&gt; 
&gt; There is no need to touch WebCore.order - Apple updates it as necessary, and
&gt; it&apos;s not used by other vendors.

Thanks, fixed. 

&gt;+        Removed redundant
&gt; FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache()
&gt; I don&apos;t think that&apos;s true.

Indeed, I accidently put a wrong method name there. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209666</commentid>
    <comment_count>25</comment_count>
      <attachid>52719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 09:18:46 -0700</bug_when>
    <thetext>Comment on attachment 52719
Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed, ChangeLog entries fixed)

Clearing flags on attachment: 52719

Committed r57210: &lt;http://trac.webkit.org/changeset/57210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209668</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-07 09:18:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52410</attachid>
            <date>2010-04-02 05:55:36 -0700</date>
            <delta_ts>2010-04-02 06:39:27 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts.</desc>
            <filename>no-inspector-methods-in-doc.patch</filename>
            <type>text/plain</type>
            <size>66271</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Njk5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCBsb2dn
aW5nIG9mIHJlc291cmNlIGxvYWRpbmcgZnJvbSBYSFIgYW5kIHdvcmtlciBjb250ZXh0J3MgaW1w
b3J0U2NyaXB0CisgICAgICAgIGNhbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjppbXBvcnRT
Y3JpcHRzQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
Y29ubmVjdCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiB3b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3Nh
Z2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgor
CiAyMDEwLTA0LTAyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCwxMyArMTEwLDggQEAgSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6OmltcG9ydFNj
cmlwdHMoRQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwotICAgIGludHB0
cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgc291cmNlVVJMOwotICAgIEpTVmFsdWUgZnVuY3Rp
b247Ci0gICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGV4ZWMsIHNp
Z25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCBzb3VyY2VVUkwsIGZ1bmN0aW9uKTsKIAotICAgIGlt
cGwoKS0+aW1wb3J0U2NyaXB0cyh1cmxzLCBzb3VyY2VVUkwsIHNpZ25lZExpbmVOdW1iZXIgPj0g
MCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwLCBlYyk7CisgICAgaW1wbCgpLT5pbXBvcnRTY3JpcHRz
KHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDE0ICs5MCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNv
bnRleHQ6OmkKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAKLSAgICBTdHJpbmcgY2FsbGVyVVJMOwotICAgIGlmICghVjhQcm94eTo6c291
cmNlTmFtZShjYWxsZXJVUkwpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAg
IGludCBjYWxsZXJMaW5lOwotICAgIGlmICghVjhQcm94eTo6c291cmNlTGluZU51bWJlcihjYWxs
ZXJMaW5lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBjYWxsZXJMaW5l
ICs9IDE7Ci0KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxzOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgYXJncy5MZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
QEAgLTExMCw3ICsxMDIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0
OjppCiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29ya2VyQ29udGV4dDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICB3b3JrZXJDb250ZXh0LT5pbXBvcnRTY3JpcHRzKHVybHMsIGNhbGxlclVSTCwgY2FsbGVyTGlu
ZSwgZWMpOworICAgIHdvcmtlckNvbnRleHQtPmltcG9ydFNjcmlwdHModXJscywgZWMpOwogCiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDY0Niw0OSArNDY0NiwxMyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZUROU1ByZWZl
dGNoQ29udHJvbEhlCiAKIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICB3
aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwotfQotCi12b2lkIERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uKSB7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXJEZXN0
aW5hdGlvbjoKLSAgICAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRp
ZgotICAgIGNhc2UgQ29uc29sZURlc3RpbmF0aW9uOgotICAgICAgICBpZiAoRE9NV2luZG93KiB3
aW5kb3cgPSBkb21XaW5kb3coKSkKLSAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgRG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQot
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgcGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2VuZGlmCi0gICAgRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgICAgICBmcmFtZUxvYWRlci0+bm90aWZp
ZXIoKS0+ZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VT
dHJpbmcpOwotICAgIH0KKyAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIERvY3VtZW50Ojph
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBp
ZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2NyaXB0
SW1wb3J0ZWQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGlkZW50aWZpZXIpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2VTdHJpbmcpOwotI2VuZGlm
CisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCisgICAgICAgIHdpbmRv
dy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQgOiBO
b25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODY4LDkgKzg2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZpcnR1YWwgdm9pZCByZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsg
Ly8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4K
IAogI2lmIFVTRShKU0MpCkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShy
ZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKIAotICAgIGVudW0gTWVzc2FnZURl
c3RpbmF0aW9uIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyRGVzdGluYXRpb24sCi0jZW5kaWYKLSAgICAgICAgQ29uc29sZURlc3RpbmF0aW9uLAot
ICAgIH07Ci0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTk1LDkgKzg4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2Ny
aXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogICAgICAgICAKICAgICAgICAgLy8gQWN0aXZlIG9iamVj
dHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBi
ZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1heSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9r
ZWQuCiAgICAgICAgIGJvb2wgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3Qg
U2NyaXB0U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgaW50IGxlbmd0aCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU2NyaXB0U3RyaW5nJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEhhbmRsZU9ubG9hZEV2ZW50cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwpJbmRleDog
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkocmV2aXNpb24gNTY5ODApCisr
KyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMywxMSArMTAzLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRv
TG9hZAogI2VuZGlmCiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZExvYWRSZXNv
dXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3Jp
cHRTdHJpbmcmIHNvdXJjZVN0cmluZykKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBz
b3VyY2VTdHJpbmcpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjphc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNl
U3RyaW5nKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwzMiArMTE5LDMyIEBAIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7CiAKICAg
ICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQg
IiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAg
ICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1f
dXJsLnByb3RvY29sSXMoIndzcyIpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29j
a2V0ICIgKyB1cmwuc3RyaW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIldyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0cmluZygp
LCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fdXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiVVJMIGhhcyBmcmFnbWVudCBjb21wb25lbnQgIiArIHVybC5zdHJpbmco
KSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVVJMIGhhcyBm
cmFnbWVudCBjb21wb25lbnQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9
IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmICghaXNWYWxpZFByb3RvY29sU3RyaW5nKG1fcHJvdG9jb2wpKSB7Ci0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24s
IEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV3Jv
bmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAnIiArIGVuY29kZVByb3RvY29sU3RyaW5nKG1fcHJv
dG9jb2wpICsgIiciLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIXBvcnRB
bGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgcG9ydCAlZCBibG9j
a2VkIiwgdXJsLnBvcnQoKSksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVkIGJsb2NrZWQiLCB1cmwucG9y
dCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTRUNVUklU
WV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cgogICAgICAgICByZXR1cm47CiAgICAg
Y29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRh
dGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdl
LiIsIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5j
bGllbnRPcmlnaW4oKSk7CiAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKICAgICB9CiB9CkBAIC0y
NjUsNyArMjY1LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihjbwog
ICAgICAgICBtX2J1ZmZlclNpemUgKz0gbGVuOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0
KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVzKSBpcyB0b28gbG9uZy4iLCBtX2J1ZmZlclNp
emUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IGZyYW1lIChhdCAlZCBieXRlcykgaXMg
dG9vIGxvbmcuIiwgbV9idWZmZXJTaXplICsgbGVuKSwgMCwgbV9oYW5kc2hha2UuY2xpZW50T3Jp
Z2luKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NiwyMiAr
MjQ2LDIyIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2gKICAgICBl
bHNlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNlQ29kZSho
ZWFkZXIsIGxlbik7CiAgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBoYW5kc2hh
a2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmlnaW4o
KSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJTaG9ydCBzZXJ2ZXIgaGFuZHNoYWtl
OiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2luKCkp
OwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb2RlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9j
b250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZvdW5k
OiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2luKCkp
OworICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29kZSBmb3VuZDog
IiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgICAgIHJldHVybiBsZW47CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmss
ICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChj
b2RlID09ICI0MDEiKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0aW9uIHJl
cXVpcmVkLCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4oKSk7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBdXRoZW50aWNhdGlvbiByZXF1aXJlZCwgYnV0
IG5vdCBpbXBsZW1lbnRlZCB5ZXQuIiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAg
cmV0dXJuIGxlbjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxl
ZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24s
IEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5l
eHBlY3RlZCByZXNwb25zZSBjb2RlOiIgKyBjb2RlLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNv
ZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBsZW47CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNzYsNyArMjc2LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVh
ZFNlcnZlckhhbmRzaAogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0
VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKICAg
ICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiQmFkIFVwZ3JhZGUgaGVhZGVyOiAiICsgdHJpbUNvbnNvbGVN
ZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBwIC0g
aGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKICAgICAgICAgfQog
ICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CkBAIC0yODgs
NyArMjg4LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaAogICAg
ICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlciwg
c2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMSkpIHsKICAgICAgICAgICAgIG1f
bW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xl
RGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiQmFkIENvbm5lY3Rpb24gaGVhZGVyOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAs
IGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5k
IC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVy
ICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKICAgICAgICAgfQogICAg
ICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDE7CkBAIC0zOTks
MTMgKzM5OSwxMyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQCiAg
ICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwICsgMSA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHAgKyAyOwotICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1l
c3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGF0ICIgKyB0cmltQ29u
c29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIENSIGlu
IG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3Jp
Z2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgQ1Ig
aW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRP
cmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjYXNlICdc
bic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVbmV4cGVjdGVkIExGIGluIG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQg
LSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVu
ZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQyOSw3ICs0
MjksNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQCiAgICAgICAg
ICAgICBjYXNlICdccic6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
ICdcbic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0
aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwg
ZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpw
KTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHAgPj0gZW5kIHx8
ICpwICE9ICdcbicpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xl
RGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgYXQgIiArIHRyaW1Db25z
b2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAg
bV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgYXQgIiAr
IHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVT
dHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKQEAgLTQ4Mywy
NCArNDgzLDI0IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGUKICAg
ICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CiAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgIGlm
IChtX3dzT3JpZ2luLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3ZWJzb2Nr
ZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3
ZWJzb2NrZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV93c0xvY2F0aW9uLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3ZWJzb2NrZXQtbG9jYXRpb24nIGhlYWRlciBpcyBt
aXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJF
cnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlvbicgaGVh
ZGVyIGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93c09yaWdpbikgewotICAgICAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiBvcmlnaW4gbWlzbWF0Y2g6ICIgKyBjbGllbnRPcmlnaW4oKSArICIgIT0g
IiArIG1fd3NPcmlnaW4sIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDog
IiArIGNsaWVudE9yaWdpbigpICsgIiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjbGllbnRMb2NhdGlvbigpICE9
IG1fd3NMb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBsb2NhdGlvbiBtaXNtYXRj
aDogIiArIGNsaWVudExvY2F0aW9uKCkgKyAiICE9ICIgKyBtX3dzTG9jYXRpb24sIDAsIGNsaWVu
dE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNv
Y2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1pc21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSAr
ICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGll
bnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogcHJv
dG9jb2wgbWlzbWF0Y2g6ICIgKyBtX2NsaWVudFByb3RvY29sICsgIiAhPSAiICsgbV93c1Byb3Rv
Y29sLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9y
IGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBwcm90b2NvbCBtaXNtYXRjaDogIiArIG1fY2xp
ZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dzUHJvdG9jb2wsIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZGUgPSBDb25uZWN0ZWQ7CkluZGV4OiBX
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1Njk4
MCkKKysrIFdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlCiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpOwogfQogCi12b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEJhc2U6
OmltcG9ydFNjcmlwdHModXJscywgY2FsbGVyVVJMLCBjYWxsZXJMaW5lLCBlYyk7CisgICAgQmFz
ZTo6aW1wb3J0U2NyaXB0cyh1cmxzLCBlYyk7CiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFBy
b3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIH0KIApJ
bmRleDogV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA1
Njk4MCkKKysrIFdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgICAgIC8vIE92ZXJyaWRkZW4gdG8gYWxsb3cgdXMgdG8gY2hlY2sgb3VyIHBl
bmRpbmcgYWN0aXZpdHkgYWZ0ZXIgZXhlY3V0aW5nIGltcG9ydGVkIHNjcmlwdC4KLSAgICAgICAg
dmlydHVhbCB2b2lkIGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNv
bnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dXJscywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAg
IHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCkgeyByZXR1cm4gdGhpczsgfQpJbmRleDogV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgLy8gV29ya2VyUmVwb3J0aW5nUHJveHkK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OwotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNz
YWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAg
IHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHREZXN0cm95ZWQoKTsKIApAQCAtMTY1LDE2ICsxNjUsMTYgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvVwogICAgICAgICAoKml0ZXIpLT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNrLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCi1zdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3Nh
Z2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGRvY3VtZW50LCBNZXNzYWdlRGVzdGluYXRp
b24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCitzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGRvY3VtZW50LCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIGRvY3VtZW50LT5hZGRNZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIGRvY3VtZW50LT5h
ZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit2
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fd29ya2VyRG9jdW1lbnRzTG9jayk7
CiAgICAgZm9yIChIYXNoU2V0PERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3dvcmtlckRv
Y3VtZW50cy5iZWdpbigpOyBpdGVyICE9IG1fd29ya2VyRG9jdW1lbnRzLmVuZCgpOyArK2l0ZXIp
Ci0gICAgICAgICgqaXRlciktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNv
bGVNZXNzYWdlVGFzaywgZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOworICAgICAgICAoKml0ZXIpLT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFNoYXJlZFdv
cmtlclByb3h5Ojp3b3JrZXJDb250ZXh0Q2xvc2VkKCkKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgpAQCAtMTUxLDE4ICsxNTIsNiBAQCBib29sIFdvcmtlckNvbnRleHQ6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtlckNvbnRleHQ6OnJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3Jp
cHRTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGlu
ZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTc1Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0OjpzY3Jp
cHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1F
OiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGluZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc1Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2sp
CiB7CiAgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKQEAgLTE4OCwxMiAr
MTc3LDggQEAgdm9pZCBXb3JrZXJDb250ZXh0OjpjbGVhckludGVydmFsKGludCB0aQogICAgIERP
TVRpbWVyOjpyZW1vdmVCeUlkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsK
IH0KIAotdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSNpZiAhRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBVTlVTRURfUEFSQU0oY2FsbGVyVVJMKTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGVyTGluZSk7Ci0jZW5kaWYKICAgICBlYyA9IDA7CiAgICAgVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIHVybHNFbmQgPSB1cmxzLmVuZCgpOwogICAgIFZlY3RvcjxLVVJMPiBjb21w
bGV0ZWRVUkxzOwpAQCAtMjE3LDkgKzIwMiwxMCBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9y
dFNjcmlwdHMoY29uc3QgCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNjcmlwdEltcG9ydGVkKHNjcmlwdExvYWRlci5p
ZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQoKSk7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEluc3BlY3Rv
ckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
TG9nTWVzc2FnZUxldmVsLCAiV29ya2VyIHNjcmlwdCBpbXBvcnRlZDogXCIiICsgKml0ICsgIlwi
LiIsIGNhbGxlckxpbmUsIGNhbGxlclVSTCk7CisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkgeworICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChzY3JpcHRM
b2FkZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOworICAgICAgICB9CiAj
ZW5kaWYKIAogICAgICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CkBAIC0yNDEsOSArMjI3LDkg
QEAgdm9pZCBXb3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29ucwogICAgICAgICB0aHJl
YWQoKS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIFdvcmtlckNv
bnRleHQ6OmFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQordm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7
Ci0gICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1By
b3h5KCkucG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA1Njk4MCkK
KysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDkgKzc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlw
dFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEltcG9y
dGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcp
OwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsgLy8g
RXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAog
ICAgICAgICAvLyBXb3JrZXJHbG9iYWxTY29wZQpAQCAtODgsNyArODUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3Ip
OwogCiAgICAgICAgIC8vIFdvcmtlclV0aWxzCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVS
TCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKSBjb25zdDsKIAogICAgICAg
ICAvLyBUaW1lcnMKQEAgLTk5LDcgKzk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2Uo
TWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXRO
b3RpZmljYXRpb25zKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
R2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgpAQCAtMjc4LDE2ICsyNzksMTYgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvbgogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CiB9CiAgICAgCi1zdGF0aWMgdm9pZCBwb3N0
Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVzc2FnZURlc3RpbmF0aW9uIGRlc3Rp
bmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQorc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNzYWdpbmdQcm94eSog
bWVzc2FnaW5nUHJveHksIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgaWYgKG1lc3NhZ2luZ1Byb3h5
LT5hc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb250ZXh0LT5hZGRN
ZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOworICAgIGNvbnRleHQtPmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0
Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2Fn
ZVRhc2ssIHRoaXMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRD
cmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiB3b3JrZXJUaHJlYWQpCklu
ZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkocmV2aXNpb24gNTY5ODAp
CisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5
IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCk7CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyUmVwb3J0aW5nUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UmVwb3J0aW5nUHJveHkuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJDb3JlL3dvcmtlcnMvV29y
a2VyUmVwb3J0aW5nUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RD
b25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKICAgICAgICAgLy8gSW52
b2tlZCB3aGVuIGNsb3NlKCkgaXMgaW52b2tlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCkgPSAwOwpJbmRleDogV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJz
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC02ODEsNyArNjgyLDcgQEAgc3RhdGljIHZvaWQgcmVw
b3J0VW5zYWZlVXNhZ2UoU2NyaXB0RXhlYwogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQgdXNhZ2Ugd2l0aG91dCBpbmRpY2F0aW5n
IHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgogICAgIC8vIFdlIHNob3VsZCBwYXNzIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBzbyB3ZSBjYW4gdGVsbCB0aGUgY29uc29sZSB3aGVyZSB0aGUg
bWlzdGFrZSBvY2N1cnJlZC4KLSAgICBjb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICBjb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBT
dHJpbmcoKSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTg3MSw5ICs4NzIsOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hM
b2FkaW5nKHVuCiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgbV9yZXNwb25zZVRleHQgKz0g
bV9kZWNvZGVyLT5mbHVzaCgpOwogCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQp
OwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRNZXNzYWdlKEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6
IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kVVJM
KTsKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGluc3BlY3Rvci0+
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcmVzcG9uc2VU
ZXh0KTsKICNlbmRpZgogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTY5OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtv
diAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmVkIG9ic29sZXRlIG1ldGhvZCAoZGlzcGF0Y2hEaWRMb2Fk
UmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KSAKKyAgICAgICAgZnJvbSBGcmFtZUxvYWRlckNsaWVu
dCBpbnRlcmZhY2UuCisgICAgICAgIFJlbW92ZWQgTWVzc2FnZURlc3RpbmF0aW9uIHBhcmFtZXRl
ciBmcm9tIGNvbnNvbGUgbWVzc2FnZSByZWFsdGVkCisgICAgICAgIGNhbGxzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAq
IHB1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJX
b3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2spOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJCYXNlLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudElt
cGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayk6CisgICAgICAgICogc3Jj
L1dlYldvcmtlckNsaWVudEltcGwuaDoKKwogMjAxMC0wNC0wMSAgSmF5IENpdmVsbGkgIDxqY2l2
ZWxsaUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCShy
ZXZpc2lvbiA1Njk4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2Vy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KAotICAgICAgICBpbnQgZGVzdGluYXRpb25J
ZGVudGlmaWVyLAogICAgICAgICBpbnQgc291cmNlSWRlbnRpZmllciwKICAgICAgICAgaW50IG1l
c3NhZ2VUeXBlLAogICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTY5ODApCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwNiwxMiArNDA2LDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkTAogICAgIHJldHVybiBmYWxzZTsgIC8vIERvIG5vdCBzdXBwcmVzcyByZW1haW5p
bmcgbm90aWZpY2F0aW9ucwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KAotICAgIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwKLSAgICBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZSkKLXsKLX0KLQogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKIHsK
ICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdFN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0KCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAJKHJldmlz
aW9uIDU2OTgwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk5LDggKzE5OSw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdEV4
Y2VwdGlvblRhc2soU2MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgV2ViV29ya2VyQmFzZTo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlU291cmNlIHNvdXJjZSwKK3ZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2VMZXZlbCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLApAQCAtMjA4LDcgKzIwNyw2IEBA
IHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFz
aygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oZGVzdGluYXRpb24pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50Pihzb3VyY2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obGV2ZWwpLApAQCAtMjE3
LDcgKzIxNSw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG8KIAog
dm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZGVzdGluYXRpb24sIGludCBzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlu
ZU51bWJlciwKQEAgLTIyNSw3ICsyMjMsNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25z
b2xlTWVzc2FnZVRhCiB7CiAgICAgaWYgKCF0aGlzUHRyLT5jb21tb25DbGllbnQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIHRoaXNQdHItPmNvbW1vbkNsaWVudCgpLT5wb3N0Q29uc29sZU1lc3Nh
Z2VUb1dvcmtlck9iamVjdChkZXN0aW5hdGlvbiwgc291cmNlLAorICAgIHRoaXNQdHItPmNvbW1v
bkNsaWVudCgpLT5wb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGUsIGxldmVsLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgJKHJldmlzaW9uIDU2OTgwKQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIGludCwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KAotICAgICAgICBXZWJDb3JlOjpNZXNzYWdlRGVzdGluYXRpb24sIFdlYkNvcmU6
Ok1lc3NhZ2VTb3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VUeXBlLAorICAgICAgICBXZWJDb3JlOjpN
ZXNzYWdlU291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKICAgICAgICAgV2ViQ29yZTo6TWVz
c2FnZUxldmVsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sKTsKQEAg
LTExNSw3ICsxMTUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVz
c2FnZVRhc2soCiAgICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCiAgICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCi0gICAgICAgIGludCBkZXN0aW5h
dGlvbiwKICAgICAgICAgaW50IHNvdXJjZSwKICAgICAgICAgaW50IHR5cGUsCiAgICAgICAgIGlu
dCBsZXZlbCwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVAogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKLXZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoaW50IGRlc3RpbmF0aW9uSWQsCit2b2lkIFdlYldvcmtlckNsaWVudElt
cGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KGludCBkZXN0aW5hdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCkBA
IC0yNjEsMTAgKzI2MSwxOSBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xl
TWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkKIHsK
KyAgICBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2VJZCwgbWVzc2FnZVR5
cGUsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwor
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dChpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiBzb3VyY2VVUkwpCit7CiAgICAgaWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBtX3dv
cmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRh
c2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxldmVsLApAQCAtMjc0LDggKzI4Myw3IEBAIHZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNf
Y2FzdDxNZXNzYWdlRGVzdGluYXRpb24+KGRlc3RpbmF0aW9uSWQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3Vy
Y2VJZCksCisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRNZXNzYWdlKHN0YXRpY19j
YXN0PE1lc3NhZ2VTb3VyY2U+KHNvdXJjZUlkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5cGU+KG1lc3NhZ2VUeXBlKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2Fn
ZUxldmVsPihtZXNzYWdlTGV2ZWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcobWVzc2FnZSksIGxpbmVOdW1iZXIsCkBAIC0zODMsNyArMzkxLDYgQEAg
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0RXhjZXB0aW9uVAogCiB2b2lkIFdlYldvcmtl
ckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhp
c1B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBkZXN0aW5hdGlvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKQEAgLTM5MSw4ICsz
OTgsNyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIHRo
aXNQdHItPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxN
ZXNzYWdlRGVzdGluYXRpb24+KGRlc3RpbmF0aW9uSWQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihz
b3VyY2VJZCksCisgICAgdGhpc1B0ci0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRNZXNz
YWdlKHN0YXRpY19jYXN0PE1lc3NhZ2VTb3VyY2U+KHNvdXJjZUlkKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5
cGU+KG1lc3NhZ2VUeXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZUxldmVsPihtZXNzYWdlTGV2ZWwpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBs
aW5lTnVtYmVyLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiwg
aW50LCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNz
YWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgaW50LCBjb25zdCBXZWJTdHJpbmcmLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGNv
bnN0IFdlYlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdChpbnQsIGludCwgaW50LCBjb25zdCBXZWJTdHJpbmcmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGNvbnN0IFdlYlN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENsb3NlZCgpOwpAQCAtMTI1LDcgKzEyNyw2IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgc3RhdGljIHZvaWQgcG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0aW5hdGlvbklk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKSW5kZXg6IFdlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biA1Njk5OCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmVkIG9ic29sZXRlIG1ldGhvZCAoZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1
ZXN0KQorICAgICAgICBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgogMjAxMC0wNC0wMSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTY5ODAp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQ1LDExICs5NDUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
ICBpZGVudGlmaWVyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJD
b3JlOjpTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU2OTk4KQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTA0LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlZCBvYnNvbGV0ZSBtZXRob2QgKGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRw
UmVxdWVzdCkgCisgICAgICAgIGZyb20gRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDEwLTAzLTMx
ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCShyZXZpc2lvbiA1Njk4MCkKKysr
IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjM0LDExICs2MzQsNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmRpc3BhdGNoRGlkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1
bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtMTk0
LDcgKzE5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRw
UmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2OTk4KQorKysgV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNC0wMiAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgb2Jzb2xldGUgbWV0aG9kIChkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QpIAorICAgICAgICBmcm9tIEZyYW1l
TG9hZGVyQ2xpZW50IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW06CisgICAgICAgICogV2ViS2l0Lm9yZGVyOgorCiAyMDEwLTA0LTAxICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0
cnkgVGl0b3YuCkluZGV4OiBXZWJLaXQvbWFjL1dlYktpdC5vcmRlcgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvbWFjL1dl
YktpdC5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtNzg0LDcgKzc4NCw2IEBAIF9fWkw0MV91cGRh
dGVGb2N1c2VkQW5kQWN0aXZlU3RhdGVUaW1lckMKIF9oYWx0VGltZXJGaXJlZAogX19aTjIwV2Vi
RnJhbWVMb2FkZXJDbGllbnQxN29iamVjdENvbnRlbnRUeXBlRVJLTjdXZWJDb3JlNEtVUkxFUktO
UzBfNlN0cmluZ0UKIF9XS1NldE5TVVJMUmVxdWVzdFNob3VsZENvbnRlbnRTbmlmZgotX19aTjIw
V2ViRnJhbWVMb2FkZXJDbGllbnQzOWRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVx
dWVzdEVtUktON1dlYkNvcmUxMlNjcmlwdFN0cmluZ0UKIC1bV2ViVmlld0ZhY3RvcnkgcGx1Z2lu
c0luZm9dCiArW1dlYlBsdWdpbkRhdGFiYXNlIHNoYXJlZERhdGFiYXNlXQogLVtXZWJQbHVnaW5E
YXRhYmFzZSBpbml0XQpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3
ICsxMjYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFs
U3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFp
bkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0
cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRT
dHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKSW5kZXg6
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsMTAgKzM0OCw2IEBAIGJvb2wg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5n
JiBzb3VyY2VTdHJpbmcpCi17Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpJbmRl
eDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Njk5OCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNC0wMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgb2Jzb2xldGUgbWV0aG9kIChkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1M
SHR0cFJlcXVlc3QpIAorICAgICAgICBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wNC0wMiAg
VGFzdWt1IFN1enVraSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5NSwxMSArODk1LDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZExv
YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3Qg
V2ViQ29yZTo6U2NyaXB0U3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUVdlYlBhZ2UqIHBhZ2UgPSBtX3dl
YkZyYW1lLT5wYWdlKCk7CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJiBzb3Vy
Y2VTdHJpbmcpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9h
ZEV2ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1Njk5OCkKKysr
IFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIG9ic29sZXRl
IG1ldGhvZCAoZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KSAKKyAgICAg
ICAgZnJvbSBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0wMSAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MywxMCArMjQzLDYgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYQogICAgIHJlc291cmNlTG9h
ZERlbGVnYXRlLT5kaWRGYWlsTG9hZGluZ1dpdGhFcnJvcih3ZWJWaWV3LCBpZGVudGlmaWVyLCB3
ZWJFcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShsb2FkZXIpKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci19Ci0KIGJvb2wgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
IGxlbmd0aCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygp
OwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVu
Z3RoUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmco
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRw
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdFN0
cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9u
ZyBsb25nIGxlbmd0aCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxv
YWRFdmVudHMoKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNTY5OTgpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5
YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIG9ic29sZXRlIG1ldGhvZCAoZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KSAKKyAgICAgICAgZnJvbSBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guY3BwOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgor
CiAyMDEwLTAzLTMxICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzMzLDExICs3MzMsNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3Bh
dGNoRGlkTG9hCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25n
LCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewotICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gNTY5
ODApCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0
cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52411</attachid>
            <date>2010-04-02 06:39:27 -0700</date>
            <delta_ts>2010-04-06 07:21:02 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls. Remove logging upon successful XHR &amp; importScripts (style fixed)</desc>
            <filename>no-inspector-methods-in-doc.patch</filename>
            <type>text/plain</type>
            <size>66257</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Njk5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCBsb2dn
aW5nIG9mIHJlc291cmNlIGxvYWRpbmcgZnJvbSBYSFIgYW5kIHdvcmtlciBjb250ZXh0J3MgaW1w
b3J0U2NyaXB0CisgICAgICAgIGNhbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRl
eHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjppbXBvcnRT
Y3JpcHRzQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
Y29ubmVjdCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiB3b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3Nh
Z2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0VW5zYWZlVXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgor
CiAyMDEwLTA0LTAyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCwxMyArMTEwLDggQEAgSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6OmltcG9ydFNj
cmlwdHMoRQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwotICAgIGludHB0
cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgc291cmNlVVJMOwotICAgIEpTVmFsdWUgZnVuY3Rp
b247Ci0gICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGV4ZWMsIHNp
Z25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCBzb3VyY2VVUkwsIGZ1bmN0aW9uKTsKIAotICAgIGlt
cGwoKS0+aW1wb3J0U2NyaXB0cyh1cmxzLCBzb3VyY2VVUkwsIHNpZ25lZExpbmVOdW1iZXIgPj0g
MCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwLCBlYyk7CisgICAgaW1wbCgpLT5pbXBvcnRTY3JpcHRz
KHVybHMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDE0ICs5MCw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNv
bnRleHQ6OmkKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAKLSAgICBTdHJpbmcgY2FsbGVyVVJMOwotICAgIGlmICghVjhQcm94eTo6c291
cmNlTmFtZShjYWxsZXJVUkwpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAg
IGludCBjYWxsZXJMaW5lOwotICAgIGlmICghVjhQcm94eTo6c291cmNlTGluZU51bWJlcihjYWxs
ZXJMaW5lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLSAgICBjYWxsZXJMaW5l
ICs9IDE7Ci0KICAgICBWZWN0b3I8U3RyaW5nPiB1cmxzOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgYXJncy5MZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
QEAgLTExMCw3ICsxMDIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0
OjppCiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4V29ya2VyQ29udGV4dDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICB3b3JrZXJDb250ZXh0LT5pbXBvcnRTY3JpcHRzKHVybHMsIGNhbGxlclVSTCwgY2FsbGVyTGlu
ZSwgZWMpOworICAgIHdvcmtlckNvbnRleHQtPmltcG9ydFNjcmlwdHModXJscywgZWMpOwogCiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDY0Niw0OSArNDY0NiwxMyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZUROU1ByZWZl
dGNoQ29udHJvbEhlCiAKIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICB3
aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwotfQotCi12b2lkIERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uKSB7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXJEZXN0
aW5hdGlvbjoKLSAgICAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAgICAgIHJldHVybjsKLSNlbmRp
ZgotICAgIGNhc2UgQ29uc29sZURlc3RpbmF0aW9uOgotICAgICAgICBpZiAoRE9NV2luZG93KiB3
aW5kb3cgPSBkb21XaW5kb3coKSkKLSAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgRG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQot
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgcGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2VuZGlmCi0gICAgRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgICAgICBmcmFtZUxvYWRlci0+bm90aWZp
ZXIoKS0+ZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VT
dHJpbmcpOwotICAgIH0KKyAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIERvY3VtZW50Ojph
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBp
ZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2NyaXB0
SW1wb3J0ZWQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGlkZW50aWZpZXIpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2VTdHJpbmcpOwotI2VuZGlm
CisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCisgICAgICAgIHdpbmRv
dy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRleHQgOiBO
b25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODY4LDkgKzg2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZpcnR1YWwgdm9pZCByZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KTsg
Ly8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4K
IAogI2lmIFVTRShKU0MpCkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShy
ZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKIAotICAgIGVudW0gTWVzc2FnZURl
c3RpbmF0aW9uIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyRGVzdGluYXRpb24sCi0jZW5kaWYKLSAgICAgICAgQ29uc29sZURlc3RpbmF0aW9uLAot
ICAgIH07Ci0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTk1LDkgKzg4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2Ny
aXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogICAgICAgICAKICAgICAgICAgLy8gQWN0aXZlIG9iamVj
dHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBi
ZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1heSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9r
ZWQuCiAgICAgICAgIGJvb2wgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3Qg
U2NyaXB0U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgaW50IGxlbmd0aCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU2NyaXB0U3RyaW5nJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEhhbmRsZU9ubG9hZEV2ZW50cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwpJbmRleDog
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkocmV2aXNpb24gNTY5ODApCisr
KyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMywxMSArMTAzLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRv
TG9hZAogI2VuZGlmCiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZExvYWRSZXNv
dXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3Jp
cHRTdHJpbmcmIHNvdXJjZVN0cmluZykKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBz
b3VyY2VTdHJpbmcpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjphc3NpZ25JZGVu
dGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNl
U3RyaW5nKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwzMiArMTE5LDMyIEBAIHZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7CiAKICAg
ICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgdXJsIGZvciBXZWJTb2NrZXQg
IiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAg
ICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1f
dXJsLnByb3RvY29sSXMoIndzcyIpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29j
a2V0ICIgKyB1cmwuc3RyaW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIldyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0cmluZygp
LCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fdXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiVVJMIGhhcyBmcmFnbWVudCBjb21wb25lbnQgIiArIHVybC5zdHJpbmco
KSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVVJMIGhhcyBm
cmFnbWVudCBjb21wb25lbnQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9
IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmICghaXNWYWxpZFByb3RvY29sU3RyaW5nKG1fcHJvdG9jb2wpKSB7Ci0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24s
IEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV3Jv
bmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAnIiArIGVuY29kZVByb3RvY29sU3RyaW5nKG1fcHJv
dG9jb2wpICsgIiciLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIXBvcnRB
bGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgcG9ydCAlZCBibG9j
a2VkIiwgdXJsLnBvcnQoKSksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVkIGJsb2NrZWQiLCB1cmwucG9y
dCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTRUNVUklU
WV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cgogICAgICAgICByZXR1cm47CiAgICAg
Y29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRh
dGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdl
LiIsIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRzaGFrZS5j
bGllbnRPcmlnaW4oKSk7CiAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKICAgICB9CiB9CkBAIC0y
NjUsNyArMjY1LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihjbwog
ICAgICAgICBtX2J1ZmZlclNpemUgKz0gbGVuOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0
KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVzKSBpcyB0b28gbG9uZy4iLCBtX2J1ZmZlclNp
emUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IGZyYW1lIChhdCAlZCBieXRlcykgaXMg
dG9vIGxvbmcuIiwgbV9idWZmZXJTaXplICsgbGVuKSwgMCwgbV9oYW5kc2hha2UuY2xpZW50T3Jp
Z2luKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NiwyMiAr
MjQ2LDIyIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2gKICAgICBl
bHNlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNlQ29kZSho
ZWFkZXIsIGxlbik7CiAgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBoYW5kc2hh
a2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmlnaW4o
KSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJTaG9ydCBzZXJ2ZXIgaGFuZHNoYWtl
OiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2luKCkp
OwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb2RlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9j
b250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZvdW5k
OiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2luKCkp
OworICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29kZSBmb3VuZDog
IiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgICAgIHJldHVybiBsZW47CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmss
ICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChj
b2RlID09ICI0MDEiKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0aW9uIHJl
cXVpcmVkLCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4oKSk7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBdXRoZW50aWNhdGlvbiByZXF1aXJlZCwgYnV0
IG5vdCBpbXBsZW1lbnRlZCB5ZXQuIiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAg
cmV0dXJuIGxlbjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxl
ZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24s
IEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5l
eHBlY3RlZCByZXNwb25zZSBjb2RlOiIgKyBjb2RlLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNv
ZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBsZW47CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNzYsNyArMjc2LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVh
ZFNlcnZlckhhbmRzaAogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0
VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKICAg
ICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiQmFkIFVwZ3JhZGUgaGVhZGVyOiAiICsgdHJpbUNvbnNvbGVN
ZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBwIC0g
aGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKICAgICAgICAgfQog
ICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CkBAIC0yODgs
NyArMjg4LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaAogICAg
ICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlciwg
c2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMSkpIHsKICAgICAgICAgICAgIG1f
bW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xl
RGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiQmFkIENvbm5lY3Rpb24gaGVhZGVyOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAs
IGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5k
IC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVy
ICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKICAgICAgICAgfQogICAg
ICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDE7CkBAIC0zOTks
MTMgKzM5OSwxMyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQCiAg
ICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwICsgMSA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHAgKyAyOwotICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1l
c3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGF0ICIgKyB0cmltQ29u
c29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIENSIGlu
IG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3Jp
Z2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgQ1Ig
aW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRP
cmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjYXNlICdc
bic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVbmV4cGVjdGVkIExGIGluIG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQg
LSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVu
ZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQyOSw3ICs0
MjksNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQCiAgICAgICAg
ICAgICBjYXNlICdccic6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
ICdcbic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0
aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwg
ZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpw
KTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHAgPj0gZW5kIHx8
ICpwICE9ICdcbicpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xl
RGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgYXQgIiArIHRyaW1Db25z
b2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAg
bV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgYXQgIiAr
IHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVT
dHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKQEAgLTQ4Mywy
NCArNDgzLDI0IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGUKICAg
ICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CiAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgIGlm
IChtX3dzT3JpZ2luLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3ZWJzb2Nr
ZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3
ZWJzb2NrZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV93c0xvY2F0aW9uLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3ZWJzb2NrZXQtbG9jYXRpb24nIGhlYWRlciBpcyBt
aXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJF
cnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlvbicgaGVh
ZGVyIGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93c09yaWdpbikgewotICAgICAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiBvcmlnaW4gbWlzbWF0Y2g6ICIgKyBjbGllbnRPcmlnaW4oKSArICIgIT0g
IiArIG1fd3NPcmlnaW4sIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDog
IiArIGNsaWVudE9yaWdpbigpICsgIiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjbGllbnRMb2NhdGlvbigpICE9
IG1fd3NMb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBsb2NhdGlvbiBtaXNtYXRj
aDogIiArIGNsaWVudExvY2F0aW9uKCkgKyAiICE9ICIgKyBtX3dzTG9jYXRpb24sIDAsIGNsaWVu
dE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNv
Y2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1pc21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSAr
ICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGll
bnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogcHJv
dG9jb2wgbWlzbWF0Y2g6ICIgKyBtX2NsaWVudFByb3RvY29sICsgIiAhPSAiICsgbV93c1Byb3Rv
Y29sLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9y
IGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBwcm90b2NvbCBtaXNtYXRjaDogIiArIG1fY2xp
ZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dzUHJvdG9jb2wsIDAsIGNsaWVudE9yaWdpbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZGUgPSBDb25uZWN0ZWQ7CkluZGV4OiBX
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1Njk4
MCkKKysrIFdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlCiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpOwogfQogCi12b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEJhc2U6
OmltcG9ydFNjcmlwdHModXJscywgY2FsbGVyVVJMLCBjYWxsZXJMaW5lLCBlYyk7CisgICAgQmFz
ZTo6aW1wb3J0U2NyaXB0cyh1cmxzLCBlYyk7CiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFBy
b3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIH0KIApJ
bmRleDogV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA1
Njk4MCkKKysrIFdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgICAgIC8vIE92ZXJyaWRkZW4gdG8gYWxsb3cgdXMgdG8gY2hlY2sgb3VyIHBl
bmRpbmcgYWN0aXZpdHkgYWZ0ZXIgZXhlY3V0aW5nIGltcG9ydGVkIHNjcmlwdC4KLSAgICAgICAg
dmlydHVhbCB2b2lkIGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNv
bnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dXJscywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAg
IHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCkgeyByZXR1cm4gdGhpczsgfQpJbmRleDogV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgLy8gV29ya2VyUmVwb3J0aW5nUHJveHkK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
OwotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNz
YWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAg
IHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHREZXN0cm95ZWQoKTsKIApAQCAtMTY1LDE2ICsxNjUsMTYgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvVwogICAgICAgICAoKml0ZXIpLT5wb3N0VGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRpb25UYXNrLCBlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCi1zdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3Nh
Z2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGRvY3VtZW50LCBNZXNzYWdlRGVzdGluYXRp
b24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCitzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGRvY3VtZW50LCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIGRvY3VtZW50LT5hZGRNZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIGRvY3VtZW50LT5h
ZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit2
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fd29ya2VyRG9jdW1lbnRzTG9jayk7
CiAgICAgZm9yIChIYXNoU2V0PERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3dvcmtlckRv
Y3VtZW50cy5iZWdpbigpOyBpdGVyICE9IG1fd29ya2VyRG9jdW1lbnRzLmVuZCgpOyArK2l0ZXIp
Ci0gICAgICAgICgqaXRlciktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNv
bGVNZXNzYWdlVGFzaywgZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOworICAgICAgICAoKml0ZXIpLT5wb3N0VGFzayhjcmVh
dGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFNoYXJlZFdv
cmtlclByb3h5Ojp3b3JrZXJDb250ZXh0Q2xvc2VkKCkKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgpAQCAtMTUxLDE4ICsxNTIsNiBAQCBib29sIFdvcmtlckNvbnRleHQ6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdvcmtlckNvbnRleHQ6OnJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3Jp
cHRTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGlu
ZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTc1Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0OjpzY3Jp
cHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1F
OiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGluZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc1Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2sp
CiB7CiAgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKQEAgLTE4OCwxMiAr
MTc3LDggQEAgdm9pZCBXb3JrZXJDb250ZXh0OjpjbGVhckludGVydmFsKGludCB0aQogICAgIERP
TVRpbWVyOjpyZW1vdmVCeUlkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsK
IH0KIAotdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSNpZiAhRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBVTlVTRURfUEFSQU0oY2FsbGVyVVJMKTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGVyTGluZSk7Ci0jZW5kaWYKICAgICBlYyA9IDA7CiAgICAgVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIHVybHNFbmQgPSB1cmxzLmVuZCgpOwogICAgIFZlY3RvcjxLVVJMPiBjb21w
bGV0ZWRVUkxzOwpAQCAtMjE3LDkgKzIwMiw5IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0
U2NyaXB0cyhjb25zdCAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2NyaXB0SW1wb3J0ZWQoc2NyaXB0TG9hZGVyLmlk
ZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1lc3NhZ2UoSW5zcGVjdG9y
Q29udHJvbGxlckRlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBM
b2dNZXNzYWdlTGV2ZWwsICJXb3JrZXIgc2NyaXB0IGltcG9ydGVkOiBcIiIgKyAqaXQgKyAiXCIu
IiwgY2FsbGVyTGluZSwgY2FsbGVyVVJMKTsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpKQorICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChzY3JpcHRMb2Fk
ZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOwogI2VuZGlmCiAKICAgICAg
ICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwpAQCAtMjQxLDkgKzIyNiw5IEBAIHZvaWQgV29ya2Vy
Q29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnMKICAgICAgICAgdGhyZWFkKCktPndvcmtlclJl
cG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNz
YWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQg
V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIHRocmVhZCgp
LT53b3JrZXJSZXBvcnRpbmdQcm94eSgpLnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0
KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwpOworICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRpbmdQcm94eSgpLnBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5ICs3NSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJj
ZVN0cmluZyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKLQogICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0
YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICAgICAgLy8gV29y
a2VyR2xvYmFsU2NvcGUKQEAgLTg4LDcgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKIAogICAgICAgICAv
LyBXb3JrZXJVdGlscwotICAgICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJM
aW5lLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFdv
cmtlck5hdmlnYXRvciogbmF2aWdhdG9yKCkgY29uc3Q7CiAKICAgICAgICAgLy8gVGltZXJzCkBA
IC05OSw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5h
dGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCShy
ZXZpc2lvbiA1Njk4MCkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJU
YXNrLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJXb3JrZXIuaCIKQEAgLTI3OCwxNiArMjc5LDE2IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RFeGNlcHRpb24KICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KFdvcmtlckV4Y2VwdGlvblRhc2s6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCwgdGhpcykpOwogfQogICAgIAotc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdl
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNzYWdpbmdQcm94
eSogbWVzc2FnaW5nUHJveHksIE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKK3N0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5
LCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQogewogICAgIGlmIChtZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1p
bmF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgY29udGV4dC0+YWRkTWVzc2FnZShkZXN0aW5h
dGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJM
KTsKKyAgICBjb250ZXh0LT5hZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0
aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdl
VGFzaywgdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBz
b3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0K
IAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQpJbmRleDogV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0
aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLikKICAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVz
dGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2Vy
Q29udGV4dENsb3NlZCgpOwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5
LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VU
eXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCiAgICAgICAgIC8vIEludm9rZWQgd2hlbiBjbG9z
ZSgpIGlzIGludm9rZWQgb24gdGhlIHdvcmtlciBjb250ZXh0LgogICAgICAgICB2aXJ0dWFsIHZv
aWQgd29ya2VyQ29udGV4dENsb3NlZCgpID0gMDsKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJ
KHJldmlzaW9uIDU2OTgwKQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgpAQCAtNjgxLDcgKzY4Miw3IEBAIHN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdl
KFNjcmlwdEV4ZWMKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29k
IHRvIHJlcG9ydCB0aGUgYmFkIHVzYWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBs
aW5lIGl0IGNhbWUgZnJvbS4KICAgICAvLyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFt
ZXRlcnMgc28gd2UgY2FuIHRlbGwgdGhlIGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJy
ZWQuCi0gICAgY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBT
dHJpbmcoKSk7CisgICAgY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogfQog
CiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04NzEs
OSArODcyLDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bgogICAg
IGlmIChtX2RlY29kZXIpCiAgICAgICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1
c2goKTsKIAotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRC
eVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShJbnNw
ZWN0b3JDb250cm9sbGVyRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyBtX3VybCAr
ICJcIi4iLCBtX2xhc3RTZW5kTGluZU51bWJlciwgbV9sYXN0U2VuZFVSTCk7CisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBpbnNwZWN0b3ItPnJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7CiAjZW5kaWYK
IAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU2OTk4KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI1IEBACisyMDEwLTA0LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlZCBvYnNvbGV0ZSBtZXRob2QgKGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCkgCisgICAgICAgIGZyb20gRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgor
ICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXIgZnJvbSBjb25zb2xl
IG1lc3NhZ2UgcmVhbHRlZAorICAgICAgICBjYWxscy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29t
bW9uV29ya2VyQ2xpZW50Lmg6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNy
Yy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3Jr
ZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2Vy
QmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2spOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmg6CisKIDIwMTAtMDQtMDEgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAkocmV2aXNpb24gNTY5ODAp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViU3Ry
aW5nJiBzb3VyY2VVUkwpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3Nh
Z2VUb1dvcmtlck9iamVjdCgKLSAgICAgICAgaW50IGRlc3RpbmF0aW9uSWRlbnRpZmllciwKICAg
ICAgICAgaW50IHNvdXJjZUlkZW50aWZpZXIsCiAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAg
ICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDYs
MTIgKzQwNiw2IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEwKICAg
ICByZXR1cm4gZmFsc2U7ICAvLyBEbyBub3Qgc3VwcHJlc3MgcmVtYWluaW5nIG5vdGlmaWNhdGlv
bnMKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlQnlYTUxIdHRwUmVxdWVzdCgKLSAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCi0gICAg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2UpCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCiB7CiAgICAgaWYgKG1fd2Vi
RnJhbWUtPmNsaWVudCgpKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCShyZXZpc2lvbiA1Njk4MCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5OSw4ICsxOTksNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25UYXNrKFNj
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VVUkwpOwogfQogCi12b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2ZWwgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKQEAgLTIwOCw3ICsyMDcsNiBAQCB2b2lkIFdlYldvcmtl
ckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAg
IGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xl
TWVzc2FnZVRhc2ssIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RpbmF0aW9uKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc291cmNl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludD4odHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGxldmVsKSwKQEAgLTIxNyw3ICsyMTUsNyBAQCB2
b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAKIHZvaWQgV2ViV29ya2Vy
QmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtl
ckJhc2UqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGRlc3RpbmF0aW9uLCBpbnQgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCkBAIC0y
MjUsNyArMjIzLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYQog
ewogICAgIGlmICghdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoZGVzdGluYXRpb24sIHNvdXJjZSwKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBsZXZlbCwg
bWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQmFzZS5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KAogICAg
ICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYp
OwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKLSAg
ICAgICAgV2ViQ29yZTo6TWVzc2FnZURlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlU291cmNl
LCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVNvdXJjZSwg
V2ViQ29yZTo6TWVzc2FnZVR5cGUsCiAgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiwgaW50LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCk7CkBAIC0xMTUsNyArMTE1LDYg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKAogICAg
ICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICBX
ZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAotICAgICAgICBpbnQgZGVzdGluYXRpb24sCiAgICAgICAg
IGludCBzb3VyY2UsCiAgICAgICAgIGludCB0eXBlLAogICAgICAgICBpbnQgbGV2ZWwsCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9u
IDU2OTgwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1w
bDo6cG9zdEV4Y2VwdGlvblQKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5yZXBv
cnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12
b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0
KGludCBkZXN0aW5hdGlvbklkLAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQgZGVzdGluYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VJZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtMjYxLDEwICsyNjEs
MTkgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lcwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlu
ZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpCiB7CisgICAgcG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlSWQsIG1lc3NhZ2VUeXBlLCBtZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IHNvdXJjZUlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWVzc2FnZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291
cmNlVVJMKQorewogICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV93b3JrZXJUaHJlYWRJZCkg
ewogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0aW5hdGlvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VMZXZlbCwKQEAgLTI3NCw4ICsyODMsNyBAQCB2b2lkIFdlYldvcmtlckNs
aWVudEltcGw6OnBvc3RDb25zb2xlTWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZURl
c3RpbmF0aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291
cmNlPihzb3VyY2VJZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PE1lc3NhZ2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2Fn
ZUxldmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
KG1lc3NhZ2UpLCBsaW5lTnVtYmVyLApAQCAtMzgzLDcgKzM5MSw2IEBAIHZvaWQgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpw
b3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdl
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCkBAIC0zOTEsOCArMzk4LDcgQEAgdm9pZCBX
ZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICB0aGlzUHRyLT5tX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZURlc3RpbmF0
aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAg
IHRoaXNQdHItPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2Fz
dDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VUeXBlPihtZXNzYWdlVHlw
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVsKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgbGluZU51bWJlciwKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1
Njk4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGludCwgY29uc3QgV2Vi
U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KGludCwgaW50LCBpbnQsIGludCwgY29uc3QgV2ViU3RyaW5nJiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50
LCBpbnQsIGludCwgY29uc3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHRDbG9zZWQoKTsKQEAgLTEyNSw3ICsxMjcsNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWVzc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTY5OTgpCisrKyBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTA0LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBvYnNvbGV0ZSBt
ZXRob2QgKGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCkKKyAgICAgICAg
ZnJvbSBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaDoKIDIwMTAtMDQtMDEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAg
PGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
SG9sZ2VyIEZyZXl0aGVyLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk0NSwxMSArOTQ1LDYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsTAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBj
b25zdCBTY3JpcHRTdHJpbmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllcik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
aW50IGxlbmd0aCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3Ry
aW5nJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Njk5OCkKKysr
IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMC0wNC0wMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgb2Jzb2xl
dGUgbWV0aG9kIChkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QpIAorICAg
ICAgICBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFj
aCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNTY5ODApCisrKyBXZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzNCwxMSArNjM0LDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRj
aERpZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywg
Y29uc3QgU2NyaXB0U3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsxOTQsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWdu
ZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1Njk5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVkIG9ic29sZXRlIG1ldGhvZCAoZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VCeVhNTEh0dHBSZXF1ZXN0KSAKKyAgICAgICAgZnJvbSBGcmFtZUxvYWRlckNsaWVudCBp
bnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMC0wNC0wMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVr
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRl
eDogV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJL
aXQub3JkZXIJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTc4NCw3ICs3ODQsNiBAQCBfX1pMNDFfdXBkYXRlRm9jdXNlZEFuZEFj
dGl2ZVN0YXRlVGltZXJDCiBfaGFsdFRpbWVyRmlyZWQKIF9fWk4yMFdlYkZyYW1lTG9hZGVyQ2xp
ZW50MTdvYmplY3RDb250ZW50VHlwZUVSS043V2ViQ29yZTRLVVJMRVJLTlMwXzZTdHJpbmdFCiBf
V0tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKLV9fWk4yMFdlYkZyYW1lTG9hZGVy
Q2xpZW50MzlkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3RFbVJLTjdXZWJD
b3JlMTJTY3JpcHRTdHJpbmdFCiAtW1dlYlZpZXdGYWN0b3J5IHBsdWdpbnNJbmZvXQogK1tXZWJQ
bHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0KIC1bV2ViUGx1Z2luRGF0YWJhc2UgaW5pdF0K
SW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9y
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDU2
OTgwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEwICszNDgsNiBAQCBib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5n
KQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVyVG9J
bml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9xdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTY5
OTgpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTAtMDQtMDIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIG9i
c29sZXRlIG1ldGhvZCAoZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KSAK
KyAgICAgICAgZnJvbSBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTAtMDQtMDIgIFRhc3VrdSBTdXp1a2kg
IDx0YXN1a3Uuc3V6dWtpQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTUsMTEgKzg5NSw2
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMb2EKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlNjcmlw
dFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQogewogICAgIFFXZWJQYWdlKiBwYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgp
OwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCShyZXZpc2lvbiA1Njk4MCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5n
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTY5OTgpCisrKyBXZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA0LTAyICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBvYnNvbGV0ZSBtZXRob2QgKGRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCkgCisgICAgICAgIGZyb20gRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisKIDIwMTAtMDQtMDEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biA1Njk4MCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsMTAgKzI0Myw2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmEKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+ZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3Iod2ViVmlldywgaWRlbnRpZmllciwgd2ViRXJyb3IuZ2V0KCks
IGdldFdlYkRhdGFTb3VyY2UobG9hZGVyKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25n
LCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewotfQotCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKSW5kZXg6IFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDU2OTgwKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7Cklu
ZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2OTk4KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA0LTAyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlZCBvYnNvbGV0ZSBtZXRob2QgKGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlY
TUxIdHRwUmVxdWVzdCkgCisgICAgICAgIGZyb20gRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQor
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0wMy0zMSAg
TWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywx
MSArNzMzLDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0
U3RyaW5nJikKLXsKLSAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDU2OTgwKQorKysgV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsNyArMTg0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
Zyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlY
TUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwo=
</data>
<flag name="review"
          id="35880"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52636</attachid>
            <date>2010-04-06 07:20:34 -0700</date>
            <delta_ts>2010-04-06 07:51:04 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (split XHR/importScripts logging into separate patch)</desc>
            <filename>no-message-dest.patch</filename>
            <type>text/plain</type>
            <size>62483</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCByZWR1
bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2OTQ5CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YWRkTWVzc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3Qp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlw
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VU
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0
VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcpOgorCiAyMDEwLTA0LTA2ICBNYXR0aWFzIE5pc3NsZXIgIDxtbmlzc2xlckBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjU3LDQ5ICs0NjU3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5T
UHJlZmV0Y2hDb250cm9sSGUKIAogdm9pZCBEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7Ci0gICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCi0gICAg
ICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIHN3aXRjaCAoZGVzdGluYXRp
b24pIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
ckRlc3RpbmF0aW9uOgotICAgICAgICBpZiAocGFnZSgpKQotICAgICAgICAgICAgcGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwot
I2VuZGlmCi0gICAgY2FzZSBDb25zb2xlRGVzdGluYXRpb246Ci0gICAgICAgIGlmIChET01XaW5k
b3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93LT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJp
bmcpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAocGFnZSgpKQotICAgICAgICBw
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7Ci0jZW5kaWYKLSAgICBGcmFtZSogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBGcmFtZUxvYWRl
ciogZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIGZyYW1lTG9hZGVyLT5u
b3RpZmllcigpLT5kaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNv
dXJjZVN0cmluZyk7Ci0gICAgfQorICAgIGFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKK3ZvaWQgRG9jdW1l
bnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
Y3JpcHRJbXBvcnRlZChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZVN0cmluZyk7Ci0j
ZW5kaWYKKyAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAg
d2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4
dCA6IE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsOSArODY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFz
az4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCiAjaWYgVVNFKEpTQykKSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMyArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogCi0gICAgZW51bSBNZXNz
YWdlRGVzdGluYXRpb24gewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKLSNlbmRpZgotICAgICAgICBDb25zb2xlRGVzdGluYXRp
b24sCi0gICAgfTsKLQogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtOTUsOSArODgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1l
c3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAgICAgICAgIAogICAgICAgICAvLyBBY3RpdmUg
b2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBl
LmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcg
aW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBj
b25zdCBTY3JpcHRTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIHsgfQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDExICsxMDMsNiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkCiAjZW5kaWYKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQotewotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZp
ZXIsIHNvdXJjZVN0cmluZyk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
Y2hhciosIGludCwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQo
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBz
b3VyY2VTdHJpbmcpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDMyICsxMTksMzIgQEAgdm9pZCBXZWJTb2Nr
ZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLAogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNv
Y2tldCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3RyaW5nKCksIDAs
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7
CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAm
JiAhbV91cmwucHJvdG9jb2xJcygid3NzIikpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXcm9uZyB1cmwgc2NoZW1lIGZvciBX
ZWJTb2NrZXQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3Ry
aW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV91cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0
cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwg
aGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0
YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90b2NvbCkpIHsKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIldyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJyIgKyBlbmNvZGVQcm90b2NvbFN0
cmluZyhtX3Byb3RvY29sKSArICInIiwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICgh
cG9ydEFsbG93ZWQodXJsKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVk
IGJsb2NrZWQiLCB1cmwucG9ydCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBvcnQgJWQgYmxvY2tlZCIsIHVy
bC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpOwogICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3Nh
Z2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgewotICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1l
c3NhZ2UuIiwgMCwgbV9oYW5kc2hha2UuY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIsIDAsIG1faGFuZHNo
YWtlLmNsaWVudE9yaWdpbigpKTsKICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOwogICAgIH0KIH0K
QEAgLTI2NSw3ICsyNjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVy
KGNvCiAgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpm
b3JtYXQoIldlYlNvY2tldCBmcmFtZSAoYXQgJWQgYnl0ZXMpIGlzIHRvbyBsb25nLiIsIG1fYnVm
ZmVyU2l6ZSArIGxlbiksIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVz
KSBpcyB0b28gbG9uZy4iLCBtX2J1ZmZlclNpemUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGll
bnRPcmlnaW4oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDIyICsyNDYsMjIgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaAog
ICAgIGVsc2UgewogICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VD
b2RlKGhlYWRlciwgbGVuKTsKICAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiU2hvcnQgc2VydmVyIGhh
bmRzaGFrZTogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9y
aWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBoYW5k
c2hha2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNv
ZGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUg
Zm91bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZv
dW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAgICAgICAgfQogICAgICAgICBMT0coTmV0
d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGNvZGUgPT0gIjQwMSIpIHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXV0aGVudGljYXRp
b24gcmVxdWlyZWQsIGJ1dCBub3QgaW1wbGVtZW50ZWQgeWV0LiIsIDAsIGNsaWVudE9yaWdpbigp
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVk
LCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbGVuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9tb2RlID0g
RmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToi
ICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKSkg
ewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29u
c29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkJhZCBVcGdyYWRlIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOwogICAgICAg
ICB9CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKQEAg
LTI4OCw3ICsyODgsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNo
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKSkgewogICAgICAgICAg
ICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3Nh
Z2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIkJhZCBDb25uZWN0aW9uIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVzc2FnZShw
LCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIHAgLSBo
ZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOwogICAgICAgICB9
CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKQEAg
LTM5OSwxMyArMzk5LDEzIEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFAKICAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEpID09ICdcbicpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcCArIDI7Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhdCAi
ICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQg
Q1IgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGll
bnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5leHBlY3Rl
ZCBDUiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNs
aWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNh
c2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAs
IGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDI5
LDcgKzQyOSw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFAKICAg
ICAgICAgICAgIGNhc2UgJ1xyJzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29s
ZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2Fn
ZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB2YWx1ZS5hcHBl
bmQoKnApOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cmVhZEhUVFAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAocCA+PSBl
bmQgfHwgKnAgIT0gJ1xuJykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBhdCAiICsgdHJp
bUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBh
dCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBBdG9taWNTdHJpbmcg
bmFtZVN0cihTdHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOwpAQCAt
NDgzLDI0ICs0ODMsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VI
ZQogICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKICAgICBtX21vZGUgPSBGYWlsZWQ7CiAg
ICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dl
YnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOwor
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogJ3dlYnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3dzTG9jYXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwg
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJv
ciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlvbicgaGVhZGVy
IGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnd2Vic29ja2V0LWxvY2F0aW9u
JyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDogIiArIGNsaWVudE9yaWdpbigpICsg
IiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogb3JpZ2luIG1pc21h
dGNoOiAiICsgY2xpZW50T3JpZ2luKCkgKyAiICE9ICIgKyBtX3dzT3JpZ2luLCAwLCBjbGllbnRP
cmlnaW4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNsaWVudExvY2F0aW9u
KCkgIT0gbV93c0xvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25z
b2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1p
c21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSArICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwg
Y2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcg
V2ViU29ja2V0IGhhbmRzaGFrZTogbG9jYXRpb24gbWlzbWF0Y2g6ICIgKyBjbGllbnRMb2NhdGlv
bigpICsgIiAhPSAiICsgbV93c0xvY2F0aW9uLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBt
X2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgewotICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiBwcm90b2NvbCBtaXNtYXRjaDogIiArIG1fY2xpZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dz
UHJvdG9jb2wsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
RXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IHByb3RvY29sIG1pc21hdGNoOiAiICsg
bV9jbGllbnRQcm90b2NvbCArICIgIT0gIiArIG1fd3NQcm90b2NvbCwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29u
dGV4dENsb3NlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7
CiAKQEAgLTE2NSwxNiArMTY1LDE2IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1cKICAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0RXhjZXB0aW9uVGFzaywgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsK
IH0KIAotc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQorc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBkb2N1bWVudC0+YWRk
TWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMKTsKKyAgICBkb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVz
dGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX3dvcmtlckRvY3VtZW50c0xvY2spOwogICAgIGZvciAoSGFzaFNldDxEb2N1
bWVudCo+OjppdGVyYXRvciBpdGVyID0gbV93b3JrZXJEb2N1bWVudHMuYmVnaW4oKTsgaXRlciAh
PSBtX3dvcmtlckRvY3VtZW50cy5lbmQoKTsgKytpdGVyKQotICAgICAgICAoKml0ZXIpLT5wb3N0
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
KTsKKyAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29u
c29sZU1lc3NhZ2VUYXNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyQ29udGV4
dENsb3NlZCgpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC0xNTMsMTggKzE1NCw2
IEBAIGJvb2wgV29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgLy8g
RklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFdvcmtlckNvbnRl
eHQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKIHsKICAgICB0aHJlYWQoKS0+cnVu
TG9vcCgpLnBvc3RUYXNrKHRhc2spOwpAQCAtMjE1LDcgKzIwNCwxMCBAQCB2b2lkIFdvcmtlckNv
bnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNjcmlwdEltcG9ydGVkKHNj
cmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQoKSk7CisgI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQoc2NyaXB0TG9hZGVyLmlkZW50aWZp
ZXIoKSwgc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKKyAjZW5kaWYKIAogICAgICAgICBTY3JpcHRW
YWx1ZSBleGNlcHRpb247CiAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdExvYWRlci5zY3JpcHQoKSwgKml0KSwgJmV4Y2VwdGlvbik7CkBAIC0yNDIsOSAr
MjM0LDkgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29ucwogICAgICAg
ICB0aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJP
YmplY3QoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIFdv
cmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQordm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCiB7Ci0gICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgdGhyZWFkKCktPndvcmtlclJlcG9y
dGluZ1Byb3h5KCkucG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA1
NzE0MykKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc1LDkgKzc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNl
UmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpOwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+
KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNs
eS4KIAogICAgICAgICAvLyBXb3JrZXJHbG9iYWxTY29wZQpAQCAtOTksNyArOTYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3Rp
ZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKSW5kZXg6IFdlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCkBAIC0yNzgs
MTYgKzI3OSwxNiBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uCiAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJFeGNlcHRpb25UYXNr
OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIHRoaXMpKTsKIH0K
ICAgICAKLXN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBN
ZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCitzdGF0aWMgdm9p
ZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsK
ICAgICBpZiAobWVzc2FnaW5nUHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgY29udGV4dC0+YWRk
TWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCiB7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhj
cmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
KTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNr
VGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgdGhpcywgc291cmNlLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQ+IHdvcmtlclRocmVhZCkKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHdvcmtlciBj
b250ZXh0IHRocmVhZC4pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWQoKTsKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCShyZXZpc2lvbiA1NzE0MykK
KysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJSZXBvcnRpbmdQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2Fn
ZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
ID0gMDsKIAogICAgICAgICAvLyBJbnZva2VkIHdoZW4gY2xvc2UoKSBpcyBpbnZva2VkIG9uIHRo
ZSB3b3JrZXIgY29udGV4dC4KICAgICAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9z
ZWQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA1NzE0MykKKysr
IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTY4MSw3ICs2
ODIsNyBAQCBzdGF0aWMgdm9pZCByZXBvcnRVbnNhZmVVc2FnZShTY3JpcHRFeGVjCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogSXQncyBub3QgZ29vZCB0byByZXBvcnQgdGhlIGJhZCB1
c2FnZSB3aXRob3V0IGluZGljYXRpbmcgd2hhdCBzb3VyY2UgbGluZSBpdCBjYW1lIGZyb20uCiAg
ICAgLy8gV2Ugc2hvdWxkIHBhc3MgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHNvIHdlIGNhbiB0ZWxs
IHRoZSBjb25zb2xlIHdoZXJlIHRoZSBtaXN0YWtlIG9jY3VycmVkLgotICAgIGNvbnRleHQtPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOworICAgIGNvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVz
dDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtODcxLDcgKzg3MiwxMCBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuCiAgICAgaWYgKG1fZGVjb2RlcikKICAg
ICAgICAgbV9yZXNwb25zZVRleHQgKz0gbV9kZWNvZGVyLT5mbHVzaCgpOwogCi0gICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRl
bnRpZmllciwgbV9yZXNwb25zZVRleHQpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBpbnNwZWN0b3ItPnJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7CisjZW5k
aWYKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CiAgICAgbV9sb2FkZXIgPSAwOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNC0wNiAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgaW5zcGVjdG9yIG1ldGhvZHMgZnJvbSBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IGFuZCBkZXJpdmVkIGNsYXNzZXMuCisgICAgICAgIFJlbW92
ZWQgTWVzc2FnZURlc3RpbmF0aW9uIHBhcmFtZXRlciBmcm9tIGNvbnNvbGUtcmVsYXRlZCBjYWxs
cyAod2Ugbm93IGFsd2F5cworICAgICAgICBsb2cgdG8gdGhlIHNhbWUgZGVzdGluYXRpb24ocykp
LgorICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIHB1YmxpYy9XZWJDb21t
b25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50
Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2spOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMDYgIE1hdHRpYXMgTmlzc2xl
ciAgPG1uaXNzbGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtl
ckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tbW9uV29ya2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDExIEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1i
ZXIsCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKKyAgICAvL1RP
RE8oY2FzZXEpOiB0aGUgYmVsb3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQKKyAgICAv
LyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gcmVtb3ZlCisg
ICAgLy8gbWVzc2FnZSBkZXN0aW5hdGlvbiBwYXJhbWV0ZXIKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCi0gICAgICAgIGludCBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsCisgICAgICAgIGludCwKICAgICAgICAgaW50IHNvdXJjZUlkZW50aWZpZXIsCiAg
ICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKQEAgLTU4
LDYgKzYxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCisgICAgICAgIGludCBzb3VyY2VJZGVudGlmaWVy
LAorICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCisgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCisg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgaW50IGxpbmVOdW1iZXIs
CisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKQorICAgICB7CisgICAgICAgIHBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkZW50aWZpZXIsIG1lc3Nh
Z2VUeXBlLCBtZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgIH0KKwogICAgIHZp
cnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
b3JrZXJDb250ZXh0RGVzdHJveWVkKCkgPSAwOwogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDA2LDEyICs0MDYsNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRMCiAgICAgcmV0dXJuIGZhbHNlOyAgLy8gRG8gbm90IHN1cHByZXNzIHJlbWFpbmluZyBub3Rp
ZmljYXRpb25zCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoCi0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LAotICAgIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlKQotewotfQotCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQogewogICAgIGlm
IChtX3dlYkZyYW1lLT5jbGllbnQoKSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTksOCArMTk5LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0aW9u
VGFzayhTYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlVVJMKTsKIH0KIAotdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLAordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVR5cGUgdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZUxl
dmVsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCkBAIC0yMDgsNyArMjA3LDYgQEAgdm9pZCBX
ZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUbwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
IHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0
Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihkZXN0aW5hdGlvbiksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KHNvdXJjZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KHR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihsZXZlbCksCkBAIC0yMTcsNyArMjE1
LDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUbwogCiB2b2lkIFdl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBkZXN0aW5hdGlvbiwgaW50IHNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCBpbnQgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lTnVtYmVy
LApAQCAtMjI1LDcgKzIyMyw3IEBAIHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNz
YWdlVGEKIHsKICAgICBpZiAoIXRoaXNQdHItPmNvbW1vbkNsaWVudCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCktPnBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UsCisgICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50
KCktPnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dCgKICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgaW50LCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoCi0gICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VEZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2Fn
ZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VT
b3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VUeXBlLAogICAgICAgICBXZWJDb3JlOjpNZXNzYWdlTGV2
ZWwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIGludCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpOwpAQCAtMTE1LDcg
KzExNSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFz
aygKICAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAg
ICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKLSAgICAgICAgaW50IGRlc3RpbmF0aW9uLAog
ICAgICAgICBpbnQgc291cmNlLAogICAgICAgICBpbnQgdHlwZSwKICAgICAgICAgaW50IGxldmVs
LApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdlYldvcmtlckNs
aWVudEltcGw6OnBvc3RFeGNlcHRpb25UCiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsK
IH0KIAotdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdChpbnQgZGVzdGluYXRpb25JZCwKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IGRlc3RpbmF0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc291
cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKQEAgLTI2Myw3
ICsyNjMsNiBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzCiAgICAg
aWYgKGN1cnJlbnRUaHJlYWQoKSAhPSBtX3dvcmtlclRocmVhZElkKSB7CiAgICAgICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29u
c29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0
aW9uSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxl
dmVsLApAQCAtMjczLDE0ICsyNzIsMjMgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
Q29uc29sZU1lcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRNZXNzYWdlKHN0YXRpY19jYXN0PE1lc3NhZ2VEZXN0aW5hdGlvbj4oZGVz
dGluYXRpb25JZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PE1lc3NhZ2VTb3VyY2U+KHNvdXJjZUlkKSwKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxN
ZXNzYWdlVHlwZT4obWVzc2FnZVR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxNZXNzYWdlTGV2ZWw+KG1lc3NhZ2VMZXZlbCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhtZXNzYWdlKSwgbGlu
ZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
KHNvdXJjZVVSTCkpOwogfQogCit2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KGludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbWVzc2FnZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBwb3N0Q29u
c29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgwLCBzb3VyY2VJZCwgbWVzc2FnZVR5cGUsIG1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkpCiB7CiAgICAgLy8gdW5jb25maXJtZWRfbWVzc2FnZV9jb3VudF8gY2Fu
IG9ubHkgYmUgdXBkYXRlZCBvbiB0aGUgdGhyZWFkIHdoZXJlIGl0J3MKQEAgLTM4Miw3ICszOTAs
NiBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RFeGNlcHRpb25UCiAKIHZvaWQgV2Vi
V29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBs
KiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRlc3RpbmF0aW9uSWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc291cmNlSWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtMzkw
LDggKzM5Nyw3IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0g
ICAgdGhpc1B0ci0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRNZXNzYWdlKHN0YXRpY19j
YXN0PE1lc3NhZ2VEZXN0aW5hdGlvbj4oZGVzdGluYXRpb25JZCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VTb3Vy
Y2U+KHNvdXJjZUlkKSwKKyAgICB0aGlzUHRyLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFk
ZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZXNz
YWdlVHlwZT4obWVzc2FnZVR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNZXNzYWdlTGV2ZWw+KG1lc3NhZ2VMZXZlbCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVu
dEltcGwuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsOCArNzgsMTIgQEAgcHVibGljOgog
ICAgIC8vIFRoZXNlIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gV2ViS2l0IHRocmVhZC4KICAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBj
b25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiwgaW50LCBjb25zdCBXZWJT
dHJpbmcmKTsKKyAgICAvL1RPRE8oY2FzZXEpOiB0aGUgb3ZlcmxvYWQgYmVsb3cgaXMgZm9yIGNv
bXBhdGliaWxpdHkgb25seSwgc2hvdWxkIGJlIHJlbW92ZWQgb25jZQorICAgIC8vIENocm9taXVt
IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXJzCiAgICAg
dmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KGludCwgaW50LCBp
bnQsIGludCwgY29uc3QgV2ViU3RyaW5nJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgY29u
c3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9z
ZWQoKTsKQEAgLTEyNSw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBzb3VyY2VV
UkwpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFz
ayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJ
bXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
ZXNzYWdlTGV2ZWwsCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wNC0wMSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTcxNDMp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQ1LDExICs5NDUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
ICBpZGVudGlmaWVyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJD
b3JlOjpTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU3MTQ3KQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1Lmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsMTEgKzYzNCw2
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWQKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2Fk
UmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmlu
ZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNTcxNDcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMC0wNC0wNSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJ
bmRleDogV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJLaXQub3JkZXIJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTc4NCw3ICs3ODQsNiBAQCBfX1pMNDFfdXBkYXRlRm9jdXNlZEFu
ZEFjdGl2ZVN0YXRlVGltZXJDCiBfaGFsdFRpbWVyRmlyZWQKIF9fWk4yMFdlYkZyYW1lTG9hZGVy
Q2xpZW50MTdvYmplY3RDb250ZW50VHlwZUVSS043V2ViQ29yZTRLVVJMRVJLTlMwXzZTdHJpbmdF
CiBfV0tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKLV9fWk4yMFdlYkZyYW1lTG9h
ZGVyQ2xpZW50MzlkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3RFbVJLTjdX
ZWJDb3JlMTJTY3JpcHRTdHJpbmdFCiAtW1dlYlZpZXdGYWN0b3J5IHBsdWdpbnNJbmZvXQogK1tX
ZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0KIC1bV2ViUGx1Z2luRGF0YWJhc2UgaW5p
dF0KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVy
cm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEwICszNDgsNiBAQCBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9x
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24g
NTcxNDcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVk
IHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KwogMjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNiBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
Y2FsbEVycm9yUGFnZUV4dGVuc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKICAgICBRV2ViUGFnZSogcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNp
b24gNTcxNDMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBib29s
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGludCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZCgpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDQtMDUgIFBldGVyIE5lbHNvbiAgPGNo
YXJuLm9wY29kZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDEwICsyNDMs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUtPmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKHdlYlZpZXcsIGlkZW50aWZp
ZXIsIHdlYkVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGxvYWRlcikpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsKLX0KLQogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCB1bnNpZ25lZCBsb25n
IGxvbmcgbGVuZ3RoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJW
aWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Ny
aXB0U3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRs
ZU9ubG9hZEV2ZW50cygpOwpJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdlYktpdC93eC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFj
aCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywxMSArNzMzLDYgQEAg
Ym9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsK
LSAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52638</attachid>
            <date>2010-04-06 07:51:04 -0700</date>
            <delta_ts>2010-04-06 23:43:13 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed)</desc>
            <filename>no-message-dest.patch</filename>
            <type>text/plain</type>
            <size>62483</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCByZWR1
bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2OTQ5CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YWRkTWVzc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3Qp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlw
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VU
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0
VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcpOgorCiAyMDEwLTA0LTA2ICBNYXR0aWFzIE5pc3NsZXIgIDxtbmlzc2xlckBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjU3LDQ5ICs0NjU3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5T
UHJlZmV0Y2hDb250cm9sSGUKIAogdm9pZCBEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7Ci0gICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCi0gICAg
ICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIHN3aXRjaCAoZGVzdGluYXRp
b24pIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
ckRlc3RpbmF0aW9uOgotICAgICAgICBpZiAocGFnZSgpKQotICAgICAgICAgICAgcGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwot
I2VuZGlmCi0gICAgY2FzZSBDb25zb2xlRGVzdGluYXRpb246Ci0gICAgICAgIGlmIChET01XaW5k
b3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93LT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJp
bmcpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAocGFnZSgpKQotICAgICAgICBw
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7Ci0jZW5kaWYKLSAgICBGcmFtZSogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBGcmFtZUxvYWRl
ciogZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIGZyYW1lTG9hZGVyLT5u
b3RpZmllcigpLT5kaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNv
dXJjZVN0cmluZyk7Ci0gICAgfQorICAgIGFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKK3ZvaWQgRG9jdW1l
bnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
Y3JpcHRJbXBvcnRlZChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZVN0cmluZyk7Ci0j
ZW5kaWYKKyAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAg
d2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4
dCA6IE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsOSArODY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFz
az4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCiAjaWYgVVNFKEpTQykKSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMyArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogCi0gICAgZW51bSBNZXNz
YWdlRGVzdGluYXRpb24gewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKLSNlbmRpZgotICAgICAgICBDb25zb2xlRGVzdGluYXRp
b24sCi0gICAgfTsKLQogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtOTUsOSArODgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1l
c3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAgICAgICAgIAogICAgICAgICAvLyBBY3RpdmUg
b2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBl
LmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcg
aW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBj
b25zdCBTY3JpcHRTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIHsgfQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDExICsxMDMsNiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkCiAjZW5kaWYKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQotewotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZp
ZXIsIHNvdXJjZVN0cmluZyk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
Y2hhciosIGludCwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQo
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBz
b3VyY2VTdHJpbmcpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDMyICsxMTksMzIgQEAgdm9pZCBXZWJTb2Nr
ZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLAogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNv
Y2tldCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3RyaW5nKCksIDAs
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7
CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAm
JiAhbV91cmwucHJvdG9jb2xJcygid3NzIikpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXcm9uZyB1cmwgc2NoZW1lIGZvciBX
ZWJTb2NrZXQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3Ry
aW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV91cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0
cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwg
aGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0
YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90b2NvbCkpIHsKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIldyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJyIgKyBlbmNvZGVQcm90b2NvbFN0
cmluZyhtX3Byb3RvY29sKSArICInIiwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICgh
cG9ydEFsbG93ZWQodXJsKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVk
IGJsb2NrZWQiLCB1cmwucG9ydCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBvcnQgJWQgYmxvY2tlZCIsIHVy
bC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpOwogICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3Nh
Z2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgewotICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1l
c3NhZ2UuIiwgMCwgbV9oYW5kc2hha2UuY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIsIDAsIG1faGFuZHNo
YWtlLmNsaWVudE9yaWdpbigpKTsKICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOwogICAgIH0KIH0K
QEAgLTI2NSw3ICsyNjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVy
KGNvCiAgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpm
b3JtYXQoIldlYlNvY2tldCBmcmFtZSAoYXQgJWQgYnl0ZXMpIGlzIHRvbyBsb25nLiIsIG1fYnVm
ZmVyU2l6ZSArIGxlbiksIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVz
KSBpcyB0b28gbG9uZy4iLCBtX2J1ZmZlclNpemUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGll
bnRPcmlnaW4oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDIyICsyNDYsMjIgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaAog
ICAgIGVsc2UgewogICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VD
b2RlKGhlYWRlciwgbGVuKTsKICAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiU2hvcnQgc2VydmVyIGhh
bmRzaGFrZTogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9y
aWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBoYW5k
c2hha2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNv
ZGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUg
Zm91bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZv
dW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAgICAgICAgfQogICAgICAgICBMT0coTmV0
d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGNvZGUgPT0gIjQwMSIpIHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXV0aGVudGljYXRp
b24gcmVxdWlyZWQsIGJ1dCBub3QgaW1wbGVtZW50ZWQgeWV0LiIsIDAsIGNsaWVudE9yaWdpbigp
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVk
LCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbGVuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9tb2RlID0g
RmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToi
ICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKSkg
ewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29u
c29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkJhZCBVcGdyYWRlIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOwogICAgICAg
ICB9CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKQEAg
LTI4OCw3ICsyODgsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNo
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKSkgewogICAgICAgICAg
ICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3Nh
Z2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIkJhZCBDb25uZWN0aW9uIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVzc2FnZShw
LCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIHAgLSBo
ZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOwogICAgICAgICB9
CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKQEAg
LTM5OSwxMyArMzk5LDEzIEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFAKICAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEpID09ICdcbicpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcCArIDI7Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhdCAi
ICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQg
Q1IgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGll
bnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5leHBlY3Rl
ZCBDUiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNs
aWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNh
c2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAs
IGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDI5
LDcgKzQyOSw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFAKICAg
ICAgICAgICAgIGNhc2UgJ1xyJzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29s
ZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2Fn
ZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB2YWx1ZS5hcHBl
bmQoKnApOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cmVhZEhUVFAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAocCA+PSBl
bmQgfHwgKnAgIT0gJ1xuJykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBhdCAiICsgdHJp
bUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBh
dCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBBdG9taWNTdHJpbmcg
bmFtZVN0cihTdHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOwpAQCAt
NDgzLDI0ICs0ODMsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VI
ZQogICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKICAgICBtX21vZGUgPSBGYWlsZWQ7CiAg
ICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dl
YnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOwor
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogJ3dlYnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3dzTG9jYXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwg
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJv
ciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlvbicgaGVhZGVy
IGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnd2Vic29ja2V0LWxvY2F0aW9u
JyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDogIiArIGNsaWVudE9yaWdpbigpICsg
IiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogb3JpZ2luIG1pc21h
dGNoOiAiICsgY2xpZW50T3JpZ2luKCkgKyAiICE9ICIgKyBtX3dzT3JpZ2luLCAwLCBjbGllbnRP
cmlnaW4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNsaWVudExvY2F0aW9u
KCkgIT0gbV93c0xvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25z
b2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1p
c21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSArICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwg
Y2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcg
V2ViU29ja2V0IGhhbmRzaGFrZTogbG9jYXRpb24gbWlzbWF0Y2g6ICIgKyBjbGllbnRMb2NhdGlv
bigpICsgIiAhPSAiICsgbV93c0xvY2F0aW9uLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBt
X2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgewotICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiBwcm90b2NvbCBtaXNtYXRjaDogIiArIG1fY2xpZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dz
UHJvdG9jb2wsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
RXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IHByb3RvY29sIG1pc21hdGNoOiAiICsg
bV9jbGllbnRQcm90b2NvbCArICIgIT0gIiArIG1fd3NQcm90b2NvbCwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29u
dGV4dENsb3NlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7
CiAKQEAgLTE2NSwxNiArMTY1LDE2IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1cKICAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0RXhjZXB0aW9uVGFzaywgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsK
IH0KIAotc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQorc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBkb2N1bWVudC0+YWRk
TWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMKTsKKyAgICBkb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVz
dGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX3dvcmtlckRvY3VtZW50c0xvY2spOwogICAgIGZvciAoSGFzaFNldDxEb2N1
bWVudCo+OjppdGVyYXRvciBpdGVyID0gbV93b3JrZXJEb2N1bWVudHMuYmVnaW4oKTsgaXRlciAh
PSBtX3dvcmtlckRvY3VtZW50cy5lbmQoKTsgKytpdGVyKQotICAgICAgICAoKml0ZXIpLT5wb3N0
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
KTsKKyAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29u
c29sZU1lc3NhZ2VUYXNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyQ29udGV4
dENsb3NlZCgpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC0xNTMsMTggKzE1NCw2
IEBAIGJvb2wgV29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgLy8g
RklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFdvcmtlckNvbnRl
eHQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKIHsKICAgICB0aHJlYWQoKS0+cnVu
TG9vcCgpLnBvc3RUYXNrKHRhc2spOwpAQCAtMjE1LDcgKzIwNCwxMCBAQCB2b2lkIFdvcmtlckNv
bnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNjcmlwdEltcG9ydGVkKHNj
cmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQoKSk7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAg
ICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChzY3JpcHRMb2FkZXIuaWRlbnRpZmll
cigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOworI2VuZGlmCiAKICAgICAgICAgU2NyaXB0VmFs
dWUgZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRMb2FkZXIuc2NyaXB0KCksICppdCksICZleGNlcHRpb24pOwpAQCAtMjQyLDkgKzIz
NCw5IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnMKICAgICAgICAg
dGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBXb3Jr
ZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3ZvaWQgV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRpbmdQcm94eSgpLnBvc3RDb25zb2xlTWVz
c2FnZVRvV29ya2VyT2JqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRp
bmdQcm94eSgpLnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw5ICs3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJl
dHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
Y3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzY3JpcHRJ
bXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPik7
IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHku
CiAKICAgICAgICAgLy8gV29ya2VyR2xvYmFsU2NvcGUKQEAgLTk5LDcgKzk2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZp
Y2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgpAQCAtMjc4LDE2
ICsyNzksMTYgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvbgogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6
Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CiB9CiAg
ICAgCi1zdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVz
c2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorc3RhdGljIHZvaWQg
cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAg
ICAgaWYgKG1lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb250ZXh0LT5hZGRNZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIGNvbnRleHQtPmFkZE1l
c3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJM
KTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9X
b3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3Zv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhy
ZWFkPiB3b3JrZXJUaHJlYWQpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgY29u
dGV4dCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCk7CkluZGV4
OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAkocmV2aXNpb24gNTcxNDMpCisr
KyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VE
ZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9
IDA7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGNsb3NlKCkgaXMgaW52b2tlZCBvbiB0aGUg
d29ya2VyIGNvbnRleHQuCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2Vk
KCkgPSAwOwpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBX
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC02ODEsNyArNjgy
LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlVXNhZ2UoU2NyaXB0RXhlYwogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQgdXNh
Z2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgogICAg
IC8vIFdlIHNob3VsZCBwYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBzbyB3ZSBjYW4gdGVsbCB0
aGUgY29uc29sZSB3aGVyZSB0aGUgbWlzdGFrZSBvY2N1cnJlZC4KLSAgICBjb250ZXh0LT5hZGRN
ZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICBjb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg3MSw3ICs4NzIsMTAgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bgogICAgIGlmIChtX2RlY29kZXIpCiAgICAg
ICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKIAotICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50
aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgaW5zcGVjdG9yLT5yZXNvdXJjZVJldHJp
ZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOworI2VuZGlm
CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBL
b3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBhbmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVk
IE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMg
KHdlIG5vdyBhbHdheXMKKyAgICAgICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4K
KyAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbW1vbldvcmtlckNsaWVudDo6
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIHNyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayk6CisgICAgICAg
ICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKToKKyAgICAgICAgKiBz
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgorCiAyMDEwLTA0LTA2ICBNYXR0aWFzIE5pc3NsZXIg
IDxtbmlzc2xlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJD
bGllbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bW1vbldvcmtlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVy
LAogICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCisgICAgLy8gVE9E
TyhjYXNlcSk6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZAorICAgIC8v
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2hyb21pdW0gaXMgdXBkYXRlZCB0byByZW1vdmUKKyAg
ICAvLyBtZXNzYWdlIGRlc3RpbmF0aW9uIHBhcmFtZXRlcgogICAgIHZpcnR1YWwgdm9pZCBwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKLSAgICAgICAgaW50IGRlc3RpbmF0aW9uSWRl
bnRpZmllciwKKyAgICAgICAgaW50LAogICAgICAgICBpbnQgc291cmNlSWRlbnRpZmllciwKICAg
ICAgICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtNTgs
NiArNjEsMTggQEAgcHVibGljOgogICAgICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29u
c29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKKyAgICAgICAgaW50IHNvdXJjZUlkZW50aWZpZXIs
CisgICAgICAgIGludCBtZXNzYWdlVHlwZSwKKyAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKKyAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICBpbnQgbGluZU51bWJlciwK
KyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpCisgICAgIHsKKyAgICAgICAgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoMCwgc291cmNlSWRlbnRpZmllciwgbWVzc2Fn
ZVR5cGUsIG1lc3NhZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgfQorCiAgICAgdmly
dHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHREZXN0cm95ZWQoKSA9IDA7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDYsMTIgKzQwNiw2IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZEwKICAgICByZXR1cm4gZmFsc2U7ICAvLyBEbyBub3Qgc3VwcHJlc3MgcmVtYWluaW5nIG5vdGlm
aWNhdGlvbnMKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCgKLSAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
Ci0gICAgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2UpCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCiB7CiAgICAgaWYg
KG1fd2ViRnJhbWUtPmNsaWVudCgpKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSw4ICsxOTksNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25U
YXNrKFNjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VVUkwpOwogfQogCi12b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2
ZWwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKQEAgLTIwOCw3ICsyMDcsNiBAQCB2b2lkIFdl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQog
ewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RD
b25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RpbmF0aW9uKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
c291cmNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4odHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGxldmVsKSwKQEAgLTIxNyw3ICsyMTUs
NyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAKIHZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YldvcmtlckJhc2UqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGRlc3RpbmF0aW9uLCBpbnQgc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIs
CkBAIC0yMjUsNyArMjIzLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3Nh
Z2VUYQogewogICAgIGlmICghdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSwKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQo
KS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dCgKLSAgICAgICAgV2ViQ29yZTo6TWVzc2FnZURlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdl
U291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVNv
dXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsCiAgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VMZXZl
bCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgaW50LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCk7CkBAIC0xMTUsNyAr
MTE1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNr
KAogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAg
ICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAotICAgICAgICBpbnQgZGVzdGluYXRpb24sCiAg
ICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgIGludCB0eXBlLAogICAgICAgICBpbnQgbGV2ZWws
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwog
fQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGludCBkZXN0aW5hdGlvbklkLAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQgZGVzdGluYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3Vy
Y2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtMjYzLDcg
KzI2Myw2IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXMKICAgICBp
ZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlTGV2
ZWwsCkBAIC0yNzMsMTQgKzI3MiwyMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RD
b25zb2xlTWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZURlc3RpbmF0aW9uPihkZXN0
aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1l
c3NhZ2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVsKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLCBsaW5l
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmco
c291cmNlVVJMKSk7CiB9CiAKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKQoreworICAgIHBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkLCBtZXNzYWdlVHlwZSwgbWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCiB2b2lkIFdlYldv
cmtlckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSkKIHsKICAgICAvLyB1bmNvbmZpcm1lZF9tZXNzYWdlX2NvdW50XyBjYW4g
b25seSBiZSB1cGRhdGVkIG9uIHRoZSB0aHJlYWQgd2hlcmUgaXQncwpAQCAtMzgyLDcgKzM5MCw2
IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKIAogdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwq
IHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VJZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCkBAIC0zOTAs
OCArMzk3LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lcwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAg
ICB0aGlzUHRyLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nh
c3Q8TWVzc2FnZURlc3RpbmF0aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJj
ZT4oc291cmNlSWQpLAorICAgIHRoaXNQdHItPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
TWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3Nh
Z2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVsKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSwgbGluZU51bWJlciwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
Q2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkLgogICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYlN0
cmluZyYpOworICAgIC8vIFRPRE8oY2FzZXEpOiB0aGUgb3ZlcmxvYWQgYmVsb3cgaXMgZm9yIGNv
bXBhdGliaWxpdHkgb25seSwgc2hvdWxkIGJlIHJlbW92ZWQgb25jZQorICAgIC8vIENocm9taXVt
IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXJzCiAgICAg
dmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KGludCwgaW50LCBp
bnQsIGludCwgY29uc3QgV2ViU3RyaW5nJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgY29u
c3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9z
ZWQoKTsKQEAgLTEyNSw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBzb3VyY2VV
UkwpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFz
ayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJ
bXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
ZXNzYWdlTGV2ZWwsCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wNC0wMSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTcxNDMp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQ1LDExICs5NDUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
ICBpZGVudGlmaWVyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJD
b3JlOjpTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU3MTQ3KQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1Lmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsMTEgKzYzNCw2
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWQKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2Fk
UmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmlu
ZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNTcxNDcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMC0wNC0wNSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJ
bmRleDogV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJLaXQub3JkZXIJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTc4NCw3ICs3ODQsNiBAQCBfX1pMNDFfdXBkYXRlRm9jdXNlZEFu
ZEFjdGl2ZVN0YXRlVGltZXJDCiBfaGFsdFRpbWVyRmlyZWQKIF9fWk4yMFdlYkZyYW1lTG9hZGVy
Q2xpZW50MTdvYmplY3RDb250ZW50VHlwZUVSS043V2ViQ29yZTRLVVJMRVJLTlMwXzZTdHJpbmdF
CiBfV0tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKLV9fWk4yMFdlYkZyYW1lTG9h
ZGVyQ2xpZW50MzlkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3RFbVJLTjdX
ZWJDb3JlMTJTY3JpcHRTdHJpbmdFCiAtW1dlYlZpZXdGYWN0b3J5IHBsdWdpbnNJbmZvXQogK1tX
ZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0KIC1bV2ViUGx1Z2luRGF0YWJhc2UgaW5p
dF0KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVy
cm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEwICszNDgsNiBAQCBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9x
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24g
NTcxNDcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVk
IHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KwogMjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNiBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
Y2FsbEVycm9yUGFnZUV4dGVuc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKICAgICBRV2ViUGFnZSogcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNp
b24gNTcxNDMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBib29s
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGludCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZCgpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDQtMDUgIFBldGVyIE5lbHNvbiAgPGNo
YXJuLm9wY29kZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDEwICsyNDMs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUtPmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKHdlYlZpZXcsIGlkZW50aWZp
ZXIsIHdlYkVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGxvYWRlcikpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsKLX0KLQogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCB1bnNpZ25lZCBsb25n
IGxvbmcgbGVuZ3RoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJW
aWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Ny
aXB0U3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRs
ZU9ubG9hZEV2ZW50cygpOwpJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdlYktpdC93eC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFj
aCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywxMSArNzMzLDYgQEAg
Ym9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsK
LSAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52647</attachid>
            <date>2010-04-06 09:46:46 -0700</date>
            <delta_ts>2010-04-07 02:41:19 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (added bug reference for TODO)</desc>
            <filename>no-message-dest.patch</filename>
            <type>text/plain</type>
            <size>62483</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCByZWR1
bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2OTQ5CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YWRkTWVzc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaDoKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3Qp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29s
ZU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlw
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3N0Q29uc29sZU1lc3NhZ2VU
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0
VW5zYWZlVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcpOgorCiAyMDEwLTA0LTA2ICBNYXR0aWFzIE5pc3NsZXIgIDxtbmlzc2xlckBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjU3LDQ5ICs0NjU3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5T
UHJlZmV0Y2hDb250cm9sSGUKIAogdm9pZCBEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7Ci0gICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCi0gICAg
ICAgIHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIHN3aXRjaCAoZGVzdGluYXRp
b24pIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxl
ckRlc3RpbmF0aW9uOgotICAgICAgICBpZiAocGFnZSgpKQotICAgICAgICAgICAgcGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwot
I2VuZGlmCi0gICAgY2FzZSBDb25zb2xlRGVzdGluYXRpb246Ci0gICAgICAgIGlmIChET01XaW5k
b3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93LT5jb25zb2xlKCkt
PmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJp
bmcpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAocGFnZSgpKQotICAgICAgICBw
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7Ci0jZW5kaWYKLSAgICBGcmFtZSogZnJh
bWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBGcmFtZUxvYWRl
ciogZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIGZyYW1lTG9hZGVyLT5u
b3RpZmllcigpLT5kaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNv
dXJjZVN0cmluZyk7Ci0gICAgfQorICAgIGFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKK3ZvaWQgRG9jdW1l
bnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
Y3JpcHRJbXBvcnRlZChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaWRlbnRpZmllcik7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZVN0cmluZyk7Ci0j
ZW5kaWYKKyAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAg
d2luZG93LT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogc3RydWN0IFBlcmZvcm1UYXNrQ29udGV4
dCA6IE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsOSArODY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFz
az4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCiAjaWYgVVNFKEpTQykKSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMyArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogCi0gICAgZW51bSBNZXNz
YWdlRGVzdGluYXRpb24gewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwKLSNlbmRpZgotICAgICAgICBDb25zb2xlRGVzdGluYXRp
b24sCi0gICAgfTsKLQogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtOTUsOSArODgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1l
c3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAgICAgICAgIAogICAgICAgICAvLyBBY3RpdmUg
b2JqZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBl
LmcuIGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcg
aW52b2tlZC4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBj
b25zdCBTY3JpcHRTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIHsgfQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRTdHJpbmcmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDExICsxMDMsNiBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkCiAjZW5kaWYKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQotewotICAgIG1fZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZp
ZXIsIHNvdXJjZVN0cmluZyk7Ci19Ci0KIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
Y2hhciosIGludCwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQo
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBz
b3VyY2VTdHJpbmcpOwogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDMyICsxMTksMzIgQEAgdm9pZCBXZWJTb2Nr
ZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLAogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNv
Y2tldCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3RyaW5nKCksIDAs
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7
CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAm
JiAhbV91cmwucHJvdG9jb2xJcygid3NzIikpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXcm9uZyB1cmwgc2NoZW1lIGZvciBX
ZWJTb2NrZXQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0ICIgKyB1cmwuc3Ry
aW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV91cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0
cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwg
aGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgdXJsLnN0cmluZygpLCAwLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0
YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90b2NvbCkpIHsKLSAg
ICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIldyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJyIgKyBlbmNvZGVQcm90b2NvbFN0
cmluZyhtX3Byb3RvY29sKSArICInIiwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICgh
cG9ydEFsbG93ZWQodXJsKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVk
IGJsb2NrZWQiLCB1cmwucG9ydCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBvcnQgJWQgYmxvY2tlZCIsIHVy
bC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpOwogICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3Nh
Z2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgewotICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIHNlbmRpbmcgaGFuZHNoYWtlIG1l
c3NhZ2UuIiwgMCwgbV9oYW5kc2hha2UuY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIsIDAsIG1faGFuZHNo
YWtlLmNsaWVudE9yaWdpbigpKTsKICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOwogICAgIH0KIH0K
QEAgLTI2NSw3ICsyNjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVy
KGNvCiAgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpm
b3JtYXQoIldlYlNvY2tldCBmcmFtZSAoYXQgJWQgYnl0ZXMpIGlzIHRvbyBsb25nLiIsIG1fYnVm
ZmVyU2l6ZSArIGxlbiksIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVz
KSBpcyB0b28gbG9uZy4iLCBtX2J1ZmZlclNpemUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGll
bnRPcmlnaW4oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2
LDIyICsyNDYsMjIgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaAog
ICAgIGVsc2UgewogICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VD
b2RlKGhlYWRlciwgbGVuKTsKICAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiU2hvcnQgc2VydmVyIGhh
bmRzaGFrZTogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9y
aWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBoYW5k
c2hha2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNv
ZGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUg
Zm91bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRPcmln
aW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZv
dW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAgICAgICAgfQogICAgICAgICBMT0coTmV0
d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGNvZGUgPT0gIjQwMSIpIHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQXV0aGVudGljYXRp
b24gcmVxdWlyZWQsIGJ1dCBub3QgaW1wbGVtZW50ZWQgeWV0LiIsIDAsIGNsaWVudE9yaWdpbigp
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVk
LCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbGVuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9tb2RlID0g
RmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToi
ICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKSkg
ewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29u
c29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkJhZCBVcGdyYWRlIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOwogICAgICAg
ICB9CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKQEAg
LTI4OCw3ICsyODgsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNo
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKSkgewogICAgICAgICAg
ICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3Nh
Z2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIkJhZCBDb25uZWN0aW9uIGhlYWRlcjogIiArIHRyaW1Db25zb2xlTWVzc2FnZShw
LCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIHAgLSBo
ZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOwogICAgICAgICB9
CiAgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKQEAg
LTM5OSwxMyArMzk5LDEzIEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFAKICAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEpID09ICdcbicpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcCArIDI7Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhdCAi
ICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQg
Q1IgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGll
bnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5leHBlY3Rl
ZCBDUiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNs
aWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNh
c2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAs
IGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDI5
LDcgKzQyOSw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFAKICAg
ICAgICAgICAgIGNhc2UgJ1xyJzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29s
ZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2Fn
ZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUgYXQgIiArIHRyaW1Db25zb2xlTWVz
c2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICB2YWx1ZS5hcHBl
bmQoKnApOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cmVhZEhUVFAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAocCA+PSBl
bmQgfHwgKnAgIT0gJ1xuJykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENv
bnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBhdCAiICsgdHJp
bUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBh
dCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBBdG9taWNTdHJpbmcg
bmFtZVN0cihTdHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOwpAQCAt
NDgzLDI0ICs0ODMsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VI
ZQogICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKICAgICBtX21vZGUgPSBGYWlsZWQ7CiAg
ICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dl
YnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOwor
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogJ3dlYnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3dzTG9jYXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwg
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJv
ciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlvbicgaGVhZGVy
IGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnd2Vic29ja2V0LWxvY2F0aW9u
JyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNtYXRjaDogIiArIGNsaWVudE9yaWdpbigpICsg
IiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogb3JpZ2luIG1pc21h
dGNoOiAiICsgY2xpZW50T3JpZ2luKCkgKyAiICE9ICIgKyBtX3dzT3JpZ2luLCAwLCBjbGllbnRP
cmlnaW4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNsaWVudExvY2F0aW9u
KCkgIT0gbV93c0xvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25z
b2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1p
c21hdGNoOiAiICsgY2xpZW50TG9jYXRpb24oKSArICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwg
Y2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcg
V2ViU29ja2V0IGhhbmRzaGFrZTogbG9jYXRpb24gbWlzbWF0Y2g6ICIgKyBjbGllbnRMb2NhdGlv
bigpICsgIiAhPSAiICsgbV93c0xvY2F0aW9uLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBt
X2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgewotICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiBwcm90b2NvbCBtaXNtYXRjaDogIiArIG1fY2xpZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dz
UHJvdG9jb2wsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
RXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IHByb3RvY29sIG1pc21hdGNoOiAiICsg
bV9jbGllbnRQcm90b2NvbCArICIgIT0gIiArIG1fd3NQcm90b2NvbCwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKSW5k
ZXg6IFdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29u
dGV4dENsb3NlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7
CiAKQEAgLTE2NSwxNiArMTY1LDE2IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1cKICAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZw
b3N0RXhjZXB0aW9uVGFzaywgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsK
IH0KIAotc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQorc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBkb2N1bWVudCwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBkb2N1bWVudC0+YWRk
TWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMKTsKKyAgICBkb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCi12b2lkIFNoYXJl
ZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVz
dGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX3dvcmtlckRvY3VtZW50c0xvY2spOwogICAgIGZvciAoSGFzaFNldDxEb2N1
bWVudCo+OjppdGVyYXRvciBpdGVyID0gbV93b3JrZXJEb2N1bWVudHMuYmVnaW4oKTsgaXRlciAh
PSBtX3dvcmtlckRvY3VtZW50cy5lbmQoKTsgKytpdGVyKQotICAgICAgICAoKml0ZXIpLT5wb3N0
VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
KTsKKyAgICAgICAgKCppdGVyKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29u
c29sZU1lc3NhZ2VUYXNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6d29ya2VyQ29udGV4
dENsb3NlZCgpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC0xNTMsMTggKzE1NCw2
IEBAIGJvb2wgV29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgLy8g
RklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNzUKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFdvcmtlckNvbnRl
eHQ6OnBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4gdGFzaykKIHsKICAgICB0aHJlYWQoKS0+cnVu
TG9vcCgpLnBvc3RUYXNrKHRhc2spOwpAQCAtMjE1LDcgKzIwNCwxMCBAQCB2b2lkIFdvcmtlckNv
bnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNjcmlwdEltcG9ydGVkKHNj
cmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQoKSk7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAg
ICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChzY3JpcHRMb2FkZXIuaWRlbnRpZmll
cigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOworI2VuZGlmCiAKICAgICAgICAgU2NyaXB0VmFs
dWUgZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29k
ZShzY3JpcHRMb2FkZXIuc2NyaXB0KCksICppdCksICZleGNlcHRpb24pOwpAQCAtMjQyLDkgKzIz
NCw5IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnMKICAgICAgICAg
dGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBXb3Jr
ZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKK3ZvaWQgV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewotICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRpbmdQcm94eSgpLnBvc3RDb25zb2xlTWVz
c2FnZVRvV29ya2VyT2JqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRp
bmdQcm94eSgpLnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw5ICs3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJl
dHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
Y3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzY3JpcHRJ
bXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPik7
IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHku
CiAKICAgICAgICAgLy8gV29ya2VyR2xvYmFsU2NvcGUKQEAgLTk5LDcgKzk2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZp
Y2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgpAQCAtMjc4LDE2
ICsyNzksMTYgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlvbgogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6
Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCB0aGlzKSk7CiB9CiAg
ICAgCi1zdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSwgTWVz
c2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorc3RhdGljIHZvaWQg
cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAg
ICAgaWYgKG1lc3NhZ2luZ1Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb250ZXh0LT5hZGRNZXNzYWdlKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIGNvbnRleHQtPmFkZE1l
c3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJM
KTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9X
b3JrZXJPYmplY3QoTWVzc2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3Zv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rh
c2soJnBvc3RDb25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhy
ZWFkPiB3b3JrZXJUaHJlYWQpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgY29u
dGV4dCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2VkKCk7CkluZGV4
OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAkocmV2aXNpb24gNTcxNDMpCisr
KyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyUmVwb3J0aW5nUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VE
ZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9
IDA7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGNsb3NlKCkgaXMgaW52b2tlZCBvbiB0aGUg
d29ya2VyIGNvbnRleHQuCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2Vk
KCkgPSAwOwpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBX
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC02ODEsNyArNjgy
LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0VW5zYWZlVXNhZ2UoU2NyaXB0RXhlYwogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdvb2QgdG8gcmVwb3J0IHRoZSBiYWQgdXNh
Z2Ugd2l0aG91dCBpbmRpY2F0aW5nIHdoYXQgc291cmNlIGxpbmUgaXQgY2FtZSBmcm9tLgogICAg
IC8vIFdlIHNob3VsZCBwYXNzIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBzbyB3ZSBjYW4gdGVsbCB0
aGUgY29uc29sZSB3aGVyZSB0aGUgbWlzdGFrZSBvY2N1cnJlZC4KLSAgICBjb250ZXh0LT5hZGRN
ZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKKyAgICBjb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg3MSw3ICs4NzIsMTAgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bgogICAgIGlmIChtX2RlY29kZXIpCiAgICAg
ICAgIG1fcmVzcG9uc2VUZXh0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKIAotICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50
aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgaW5zcGVjdG9yLT5yZXNvdXJjZVJldHJp
ZXZlZEJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgbV9yZXNwb25zZVRleHQpOworI2VuZGlm
CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBL
b3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBhbmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVk
IE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMg
KHdlIG5vdyBhbHdheXMKKyAgICAgICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4K
KyAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbW1vbldvcmtlckNsaWVudDo6
cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIHNyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayk6CisgICAgICAg
ICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50
SW1wbDo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKToKKyAgICAgICAgKiBz
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgorCiAyMDEwLTA0LTA2ICBNYXR0aWFzIE5pc3NsZXIg
IDxtbmlzc2xlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJD
bGllbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bW1vbldvcmtlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVy
LAogICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCisgICAgLy8gVE9E
TygzNzE1NSk6IHRoZSBiZWxvdyBpcyBmb3IgY29tcGF0aWJpbGl0eSBvbmx5IGFuZAorICAgIC8v
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2hyb21pdW0gaXMgdXBkYXRlZCB0byByZW1vdmUKKyAg
ICAvLyBtZXNzYWdlIGRlc3RpbmF0aW9uIHBhcmFtZXRlcgogICAgIHZpcnR1YWwgdm9pZCBwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKLSAgICAgICAgaW50IGRlc3RpbmF0aW9uSWRl
bnRpZmllciwKKyAgICAgICAgaW50LAogICAgICAgICBpbnQgc291cmNlSWRlbnRpZmllciwKICAg
ICAgICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtNTgs
NiArNjEsMTggQEAgcHVibGljOgogICAgICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29u
c29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCgKKyAgICAgICAgaW50IHNvdXJjZUlkZW50aWZpZXIs
CisgICAgICAgIGludCBtZXNzYWdlVHlwZSwKKyAgICAgICAgaW50IG1lc3NhZ2VMZXZlbCwKKyAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICBpbnQgbGluZU51bWJlciwK
KyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpCisgICAgIHsKKyAgICAgICAgcG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoMCwgc291cmNlSWRlbnRpZmllciwgbWVzc2Fn
ZVR5cGUsIG1lc3NhZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICAgfQorCiAgICAgdmly
dHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdv
cmtlckNvbnRleHREZXN0cm95ZWQoKSA9IDA7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDYsMTIgKzQwNiw2IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERp
ZEwKICAgICByZXR1cm4gZmFsc2U7ICAvLyBEbyBub3Qgc3VwcHJlc3MgcmVtYWluaW5nIG5vdGlm
aWNhdGlvbnMKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCgKLSAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
Ci0gICAgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2UpCi17Ci19Ci0KIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCiB7CiAgICAgaWYg
KG1fd2ViRnJhbWUtPmNsaWVudCgpKQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5ndGgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCShyZXZpc2lvbiA1NzE0
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OSw4ICsxOTksNyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25U
YXNrKFNjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VVUkwpOwogfQogCi12b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xl
TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2
ZWwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKQEAgLTIwOCw3ICsyMDcsNiBAQCB2b2lkIFdl
YldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQog
ewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RD
b25zb2xlTWVzc2FnZVRhc2ssIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RpbmF0aW9uKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4o
c291cmNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4odHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGxldmVsKSwKQEAgLTIxNyw3ICsyMTUs
NyBAQCB2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRvCiAKIHZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YldvcmtlckJhc2UqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGRlc3RpbmF0aW9uLCBpbnQgc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIs
CkBAIC0yMjUsNyArMjIzLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3Nh
Z2VUYQogewogICAgIGlmICghdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSwKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQo
KS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dCgKLSAgICAgICAgV2ViQ29yZTo6TWVzc2FnZURlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdl
U291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVNv
dXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsCiAgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VMZXZl
bCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgaW50LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCk7CkBAIC0xMTUsNyAr
MTE1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUYXNr
KAogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAg
ICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAotICAgICAgICBpbnQgZGVzdGluYXRpb24sCiAg
ICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgIGludCB0eXBlLAogICAgICAgICBpbnQgbGV2ZWws
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwog
fQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGludCBkZXN0aW5hdGlvbklkLAordm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0
Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQgZGVzdGluYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3Vy
Y2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApAQCAtMjYzLDcg
KzI2Myw2IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVNZXMKICAgICBp
ZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlTGV2
ZWwsCkBAIC0yNzMsMTQgKzI3MiwyMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RD
b25zb2xlTWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZURlc3RpbmF0aW9uPihkZXN0
aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1l
c3NhZ2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVsKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKG1lc3NhZ2UpLCBsaW5l
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmco
c291cmNlVVJMKSk7CiB9CiAKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKQoreworICAgIHBvc3RDb25z
b2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkLCBtZXNzYWdlVHlwZSwgbWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCiB2b2lkIFdlYldv
cmtlckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSkKIHsKICAgICAvLyB1bmNvbmZpcm1lZF9tZXNzYWdlX2NvdW50XyBjYW4g
b25seSBiZSB1cGRhdGVkIG9uIHRoZSB0aHJlYWQgd2hlcmUgaXQncwpAQCAtMzgyLDcgKzM5MCw2
IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKIAogdm9pZCBXZWJX
b3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwq
IHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VJZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCkBAIC0zOTAs
OCArMzk3LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lcwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAg
ICB0aGlzUHRyLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nh
c3Q8TWVzc2FnZURlc3RpbmF0aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJj
ZT4oc291cmNlSWQpLAorICAgIHRoaXNQdHItPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
TWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3Nh
Z2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVsKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSwgbGluZU51bWJlciwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
Q2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkLgogICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQsIGNvbnN0IFdlYlN0
cmluZyYpOworICAgIC8vIFRPRE8oMzcxNTUpOiB0aGUgb3ZlcmxvYWQgYmVsb3cgaXMgZm9yIGNv
bXBhdGliaWxpdHkgb25seSwgc2hvdWxkIGJlIHJlbW92ZWQgb25jZQorICAgIC8vIENocm9taXVt
IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIE1lc3NhZ2VEZXN0aW5hdGlvbiBwYXJhbWV0ZXJzCiAgICAg
dmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KGludCwgaW50LCBp
bnQsIGludCwgY29uc3QgV2ViU3RyaW5nJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgY29u
c3QgV2ViU3RyaW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBjb25zdCBXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9z
ZWQoKTsKQEAgLTEyNSw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBzb3VyY2VV
UkwpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFz
ayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJ
bXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
ZXNzYWdlTGV2ZWwsCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wNC0wMSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTcxNDMp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQ1LDExICs5NDUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
ICBpZGVudGlmaWVyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJD
b3JlOjpTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU3MTQ3KQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1Lmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsMTEgKzYzNCw2
IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWQKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2Fk
UmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmlu
ZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNTcxNDcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlZCByZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMC0wNC0wNSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJ
bmRleDogV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJLaXQub3JkZXIJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTc4NCw3ICs3ODQsNiBAQCBfX1pMNDFfdXBkYXRlRm9jdXNlZEFu
ZEFjdGl2ZVN0YXRlVGltZXJDCiBfaGFsdFRpbWVyRmlyZWQKIF9fWk4yMFdlYkZyYW1lTG9hZGVy
Q2xpZW50MTdvYmplY3RDb250ZW50VHlwZUVSS043V2ViQ29yZTRLVVJMRVJLTlMwXzZTdHJpbmdF
CiBfV0tTZXROU1VSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKLV9fWk4yMFdlYkZyYW1lTG9h
ZGVyQ2xpZW50MzlkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3RFbVJLTjdX
ZWJDb3JlMTJTY3JpcHRTdHJpbmdFCiAtW1dlYlZpZXdGYWN0b3J5IHBsdWdpbnNJbmZvXQogK1tX
ZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0KIC1bV2ViUGx1Z2luRGF0YWJhc2UgaW5p
dF0KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVy
cm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEwICszNDgsNiBAQCBib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9x
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24g
NTcxNDcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVk
IHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KwogMjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk1LDExICs4OTUsNiBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
Y2FsbEVycm9yUGFnZUV4dGVuc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKICAgICBRV2ViUGFnZSogcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNp
b24gNTcxNDMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCBib29s
IGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGludCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZCgpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDQtMDUgIFBldGVyIE5lbHNvbiAgPGNo
YXJuLm9wY29kZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDEwICsyNDMs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUtPmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKHdlYlZpZXcsIGlkZW50aWZp
ZXIsIHdlYkVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGxvYWRlcikpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsKLX0KLQogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCB1bnNpZ25lZCBsb25n
IGxvbmcgbGVuZ3RoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJW
aWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Ny
aXB0U3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRs
ZU9ubG9hZEV2ZW50cygpOwpJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdlYktpdC93eC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wNiAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjk0OQorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFj
aCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywxMSArNzMzLDYgQEAg
Ym9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKLXsK
LSAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwo=
</data>
<flag name="review"
          id="36175"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="36176"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52719</attachid>
            <date>2010-04-07 02:41:19 -0700</date>
            <delta_ts>2010-04-07 09:18:46 -0700</delta_ts>
            <desc>Remove inspector methods from ScriptExecutionContext &amp; dervied classes. Remove MessageDestination parameter from console message calls (style fixed, ChangeLog entries fixed)</desc>
            <filename>no-message-dest.patch</filename>
            <type>text/plain</type>
            <size>62336</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzE0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmVkIGluc3BlY3RvciBtZXRob2RzIGZyb20gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBh
bmQgZGVyaXZlZCBjbGFzc2VzLgorICAgICAgICBSZW1vdmVkIE1lc3NhZ2VEZXN0aW5hdGlvbiBw
YXJhbWV0ZXIgZnJvbSBjb25zb2xlLXJlbGF0ZWQgY2FsbHMgKHdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbG9nIHRvIHRoZSBzYW1lIGRlc3RpbmF0aW9uKHMpKS4KKyAgICAgICAgUmVtb3ZlZCByZWR1
bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRw
UmVxdWVzdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjk0OQorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0
KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcik6CisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNo
YWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9zdENvbnNv
bGVNZXNzYWdlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94eTo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjppbXBvcnRTY3Jp
cHRzKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9zdENvbnNvbGVNZXNzYWdl
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5Lmg6Cisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9y
dFVuc2FmZVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5p
c2hMb2FkaW5nKToKKwogMjAxMC0wNC0wNiAgTWF0dGlhcyBOaXNzbGVyICA8bW5pc3NsZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDY1Nyw0OSArNDY1NywxMyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZURO
U1ByZWZldGNoQ29udHJvbEhlCiAKIHZvaWQgRG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQogewotICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IGRvbVdpbmRvdygpKQotICAg
ICAgICB3aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwpOwotfQotCi12b2lkIERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5h
dGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBzd2l0Y2ggKGRlc3RpbmF0
aW9uKSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xs
ZXJEZXN0aW5hdGlvbjoKLSAgICAgICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAgICAgIHJldHVybjsK
LSNlbmRpZgotICAgIGNhc2UgQ29uc29sZURlc3RpbmF0aW9uOgotICAgICAgICBpZiAoRE9NV2lu
ZG93KiB3aW5kb3cgPSBkb21XaW5kb3coKSkKLSAgICAgICAgICAgIHdpbmRvdy0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKHBhZ2UoKSkKLSAgICAgICAg
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwotI2VuZGlmCi0gICAgRnJhbWUqIGZy
YW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgRnJhbWVMb2Fk
ZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgICAgICBmcmFtZUxvYWRlci0+
bm90aWZpZXIoKS0+ZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBz
b3VyY2VTdHJpbmcpOwotICAgIH0KKyAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIERvY3Vt
ZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2NyaXB0SW1wb3J0ZWQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGlkZW50aWZpZXIpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2VTdHJpbmcpOwot
I2VuZGlmCisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCisgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHN0cnVjdCBQZXJmb3JtVGFza0NvbnRl
eHQgOiBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODY4LDkgKzg2OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lk
IHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRh
c2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25v
dXNseS4KIAogI2lmIFVTRShKU0MpCkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKIAotICAgIGVudW0gTWVz
c2FnZURlc3RpbmF0aW9uIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0
b3JDb250cm9sbGVyRGVzdGluYXRpb24sCi0jZW5kaWYKLSAgICAgICAgQ29uc29sZURlc3RpbmF0
aW9uLAotICAgIH07Ci0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTk1LDkgKzg4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogICAgICAgICAKICAgICAgICAgLy8gQWN0aXZl
IG9iamVjdHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwg
ZS5nLiBiZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1heSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5n
IGludm9rZWQuCiAgICAgICAgIGJvb2wgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywg
Y29uc3QgU2NyaXB0U3RyaW5nJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU2NyaXB0U3RyaW5nJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMywxMSArMTAzLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
RmFpbFRvTG9hZAogI2VuZGlmCiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZExv
YWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlm
aWVyLCBzb3VyY2VTdHJpbmcpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjphc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRp
YWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
KFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRGYWlsVG9Mb2FkKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYg
c291cmNlU3RyaW5nKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpJbmRleDogV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwzMiArMTE5LDMyIEBAIHZvaWQgV2ViU29j
a2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7
CiAKICAgICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgdXJsIGZvciBXZWJT
b2NrZXQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0cmluZygpLCAw
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkp
OwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikg
JiYgIW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiV3JvbmcgdXJsIHNjaGVtZSBmb3Ig
V2ViU29ja2V0ICIgKyB1cmwuc3RyaW5nKCksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgIldyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCAiICsgdXJsLnN0
cmluZygpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fdXJsLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVz
c2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiVVJMIGhhcyBmcmFnbWVudCBjb21wb25lbnQgIiArIHVybC5z
dHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVVJM
IGhhcyBmcmFnbWVudCBjb21wb25lbnQgIiArIHVybC5zdHJpbmcoKSwgMCwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9z
dGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICghaXNWYWxpZFByb3RvY29sU3RyaW5nKG1fcHJvdG9jb2wpKSB7Ci0g
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGlu
YXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCAiV3JvbmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAnIiArIGVuY29kZVByb3RvY29sU3RyaW5n
KG1fcHJvdG9jb2wpICsgIiciLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9jb2xT
dHJpbmcobV9wcm90b2NvbCkgKyAiJyIsIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
IXBvcnRBbGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgcG9ydCAl
ZCBibG9ja2VkIiwgdXJsLnBvcnQoKSksIDAsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3JtYXQoIldlYlNvY2tldCBwb3J0ICVkIGJsb2NrZWQiLCB1
cmwucG9ydCgpKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBT
RUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cgogICAgICAgICByZXR1cm47
CiAgICAgY29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVu
dEhhbmRzaGFrZU1lc3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNz
YWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKLSAgICAgICAgbV9jb250
ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBzZW5kaW5nIGhhbmRzaGFrZSBt
ZXNzYWdlLiIsIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250
ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiRXJyb3Igc2VuZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iLCAwLCBtX2hhbmRz
aGFrZS5jbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKICAgICB9CiB9
CkBAIC0yNjUsNyArMjY1LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZl
cihjbwogICAgICAgICBtX2J1ZmZlclNpemUgKz0gbGVuOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6
Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVkIGJ5dGVzKSBpcyB0b28gbG9uZy4iLCBtX2J1
ZmZlclNpemUgKyBsZW4pLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9j
b250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IGZyYW1lIChhdCAlZCBieXRl
cykgaXMgdG9vIGxvbmcuIiwgbV9idWZmZXJTaXplICsgbGVuKSwgMCwgbV9oYW5kc2hha2UuY2xp
ZW50T3JpZ2luKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NiwyMiArMjQ2LDIyIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2gK
ICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNl
Q29kZShoZWFkZXIsIGxlbik7CiAgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlNob3J0IHNlcnZlciBo
YW5kc2hha2U6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsZW4pLCAwLCBjbGllbnRP
cmlnaW4oKSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJTaG9ydCBzZXJ2ZXIgaGFu
ZHNoYWtlOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3Jp
Z2luKCkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChj
b2RlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2Rl
IGZvdW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGVuKSwgMCwgY2xpZW50T3Jp
Z2luKCkpOworICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29kZSBm
b3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxlbiksIDAsIGNsaWVudE9yaWdp
bigpKTsKICAgICAgICAgICAgIHJldHVybiBsZW47CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5l
dHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGlmIChjb2RlID09ICI0MDEiKSB7CiAgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkF1dGhlbnRpY2F0
aW9uIHJlcXVpcmVkLCBidXQgbm90IGltcGxlbWVudGVkIHlldC4iLCAwLCBjbGllbnRPcmlnaW4o
KSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBdXRoZW50aWNhdGlvbiByZXF1aXJl
ZCwgYnV0IG5vdCBpbXBsZW1lbnRlZCB5ZXQuIiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fbW9kZSA9
IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGlu
YXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCAiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiIgKyBjb2RlLCAwLCBjbGllbnRPcmlnaW4oKSk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6
IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBsZW47CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yNzYsNyArMjc2LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFr
ZTo6cmVhZFNlcnZlckhhbmRzaAogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2Vi
U29ja2V0VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkp
IHsKICAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQmFkIFVwZ3JhZGUgaGVhZGVyOiAiICsgdHJpbUNv
bnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJCYWQgVXBncmFkZSBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1l
c3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVy
biBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKICAgICAg
ICAgfQogICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CkBA
IC0yODgsNyArMjg4LDcgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRz
aAogICAgICAgICB9CiAgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0Q29ubmVjdGlvbkhl
YWRlciwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMSkpIHsKICAgICAgICAg
ICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiQmFkIENvbm5lY3Rpb24gaGVhZGVyOiAiICsgdHJpbUNvbnNvbGVNZXNz
YWdlKHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgICAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJCYWQgQ29ubmVjdGlvbiBoZWFkZXI6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
cCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgIHJldHVybiBwIC0g
aGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKICAgICAgICAg
fQogICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDE7CkBA
IC0zOTksMTMgKzM5OSwxMyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQCiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChwICsgMSA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHAgKyAyOwotICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGF0ICIgKyB0
cmltQ29uc29sZU1lc3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYXQg
IiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVk
IENSIGluIG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xp
ZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0
ZWQgQ1IgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKHAsIGVuZCAtIHApLCAwLCBj
bGllbnRPcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBj
YXNlICdcbic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNvbGVE
ZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsICJVbmV4cGVjdGVkIExGIGluIG5hbWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShw
LCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSBhdCAiICsgdHJpbUNvbnNvbGVNZXNzYWdl
KHAsIGVuZCAtIHApLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQy
OSw3ICs0MjksNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQCiAg
ICAgICAgICAgICBjYXNlICdccic6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlICdcbic6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKENvbnNv
bGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3Nh
Z2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1l
c3NhZ2UocCwgZW5kIC0gcCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgdmFsdWUuYXBw
ZW5kKCpwKTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHAgPj0g
ZW5kIHx8ICpwICE9ICdcbicpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShD
b25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgYXQgIiArIHRy
aW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAg
ICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUg
YXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZShwLCBlbmQgLSBwKSwgMCwgY2xpZW50T3JpZ2luKCkp
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgQXRvbWljU3RyaW5n
IG5hbWVTdHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKQEAg
LTQ4MywyNCArNDgzLDI0IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNl
SGUKICAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CiAgICAgbV9tb2RlID0gRmFpbGVkOwog
ICAgIGlmIChtX3dzT3JpZ2luLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3
ZWJzb2NrZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdpbigpKTsK
KyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hh
a2U6ICd3ZWJzb2NrZXQtb3JpZ2luJyBoZWFkZXIgaXMgbWlzc2luZyIsIDAsIGNsaWVudE9yaWdp
bigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV93c0xvY2F0aW9uLmlzTnVs
bCgpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24s
IEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJy
b3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICd3ZWJzb2NrZXQtbG9jYXRpb24nIGhlYWRl
ciBpcyBtaXNzaW5nIiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ3dlYnNvY2tldC1sb2NhdGlv
bicgaGVhZGVyIGlzIG1pc3NpbmciLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93c09yaWdpbikgewotICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29uc29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBX
ZWJTb2NrZXQgaGFuZHNoYWtlOiBvcmlnaW4gbWlzbWF0Y2g6ICIgKyBjbGllbnRPcmlnaW4oKSAr
ICIgIT0gIiArIG1fd3NPcmlnaW4sIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250
ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IG9yaWdpbiBtaXNt
YXRjaDogIiArIGNsaWVudE9yaWdpbigpICsgIiAhPSAiICsgbV93c09yaWdpbiwgMCwgY2xpZW50
T3JpZ2luKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjbGllbnRMb2NhdGlv
bigpICE9IG1fd3NMb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoQ29u
c29sZURlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBsb2NhdGlvbiBt
aXNtYXRjaDogIiArIGNsaWVudExvY2F0aW9uKCkgKyAiICE9ICIgKyBtX3dzTG9jYXRpb24sIDAs
IGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3IgZHVyaW5n
IFdlYlNvY2tldCBoYW5kc2hha2U6IGxvY2F0aW9uIG1pc21hdGNoOiAiICsgY2xpZW50TG9jYXRp
b24oKSArICIgIT0gIiArIG1fd3NMb2NhdGlvbiwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkgJiYg
bV9jbGllbnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wpIHsKLSAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKENvbnNvbGVEZXN0aW5hdGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogcHJvdG9jb2wgbWlzbWF0Y2g6ICIgKyBtX2NsaWVudFByb3RvY29sICsgIiAhPSAiICsgbV93
c1Byb3RvY29sLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBwcm90b2NvbCBtaXNtYXRjaDogIiAr
IG1fY2xpZW50UHJvdG9jb2wgKyAiICE9ICIgKyBtX3dzUHJvdG9jb2wsIDAsIGNsaWVudE9yaWdp
bigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZGUgPSBDb25uZWN0ZWQ7Cklu
ZGV4OiBXZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBXb3JrZXJSZXBvcnRpbmdQcm94eQogICAgIHZpcnR1YWwgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdmlydHVhbCB2b2lkIHBv
c3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZpcnR1YWwg
dm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlckNv
bnRleHRDbG9zZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZCgp
OwogCkBAIC0xNjUsMTYgKzE2NSwxNiBAQCB2b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhj
ZXB0aW9uVG9XCiAgICAgICAgICgqaXRlciktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygm
cG9zdEV4Y2VwdGlvblRhc2ssIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogZG9jdW1lbnQsIE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkKK3N0YXRpYyB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogZG9jdW1lbnQsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgZG9jdW1lbnQtPmFk
ZE1lc3NhZ2UoZGVzdGluYXRpb24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CisgICAgZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAotdm9pZCBTaGFy
ZWRXb3JrZXJQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgU2hhcmVkV29ya2VyUHJveHk6
OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIE11dGV4
TG9ja2VyIGxvY2sobV93b3JrZXJEb2N1bWVudHNMb2NrKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9j
dW1lbnQqPjo6aXRlcmF0b3IgaXRlciA9IG1fd29ya2VyRG9jdW1lbnRzLmJlZ2luKCk7IGl0ZXIg
IT0gbV93b3JrZXJEb2N1bWVudHMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCppdGVyKS0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJM
KSk7CisgICAgICAgICgqaXRlciktPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENv
bnNvbGVNZXNzYWdlVGFzaywgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlVVJMKSk7CiB9CiAKIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OndvcmtlckNvbnRl
eHRDbG9zZWQoKQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gNTcx
NDMpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgpAQCAtMTUzLDE4ICsxNTQs
NiBAQCBib29sIFdvcmtlckNvbnRleHQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFdvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGluZyB0aGUgZml4ZXMgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc1Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBs
b25nLCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24g
aXMgcGVuZGluZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTc1Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBXb3JrZXJDb250
ZXh0Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCiB7CiAgICAgdGhyZWFkKCktPnJ1
bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKQEAgLTIxNSw3ICsyMDQsMTAgQEAgdm9pZCBXb3JrZXJD
b250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zY3JpcHRJbXBvcnRlZChz
Y3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQoc2NyaXB0TG9hZGVyLmlkZW50aWZp
ZXIoKSwgc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKKyNlbmRpZgogCiAgICAgICAgIFNjcmlwdFZh
bHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNv
ZGUoc2NyaXB0TG9hZGVyLnNjcmlwdCgpLCAqaXQpLCAmZXhjZXB0aW9uKTsKQEAgLTI0Miw5ICsy
MzQsOSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zCiAgICAgICAg
IHRocmVhZCgpLT53b3JrZXJSZXBvcnRpbmdQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9i
amVjdChlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgV29y
a2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCit2b2lkIFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICB0aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdChkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICB0aHJlYWQoKS0+d29ya2VyUmVwb3J0
aW5nUHJveHkoKS5wb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDU3
MTQzKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzUsOSArNzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0
SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0
cmluZyk7Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4p
OyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5
LgogCiAgICAgICAgIC8vIFdvcmtlckdsb2JhbFNjb3BlCkBAIC05OSw3ICs5Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlm
aWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0OwpJbmRleDogV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCShyZXZpc2lvbiA1NzE0MykKKysrIFdl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKQEAgLTI3OCwx
NiArMjc5LDE2IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRpb24KICAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlckV4Y2VwdGlvblRhc2s6
OmNyZWF0ZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCwgdGhpcykpOwogfQog
ICAgIAotc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1l
c3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3N0YXRpYyB2b2lk
IHBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewog
ICAgIGlmIChtZXNzYWdpbmdQcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAgICByZXR1
cm47Ci0gICAgY29udGV4dC0+YWRkTWVzc2FnZShkZXN0aW5hdGlvbiwgc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICBjb250ZXh0LT5hZGRN
ZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRv
V29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKIHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmcG9zdENvbnNvbGVNZXNzYWdlVGFzaywgdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkp
OworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRo
cmVhZD4gd29ya2VyVGhyZWFkKQpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIGNv
bnRleHQgdGhyZWFkLikKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5Pik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0RXhjZXB0aW9u
VG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29u
c29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENsb3NlZCgpOwpJbmRl
eDogV2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgJKHJldmlzaW9uIDU3MTQzKQor
KysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclJlcG9ydGluZ1Byb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdl
RGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdChNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkg
PSAwOwogCiAgICAgICAgIC8vIEludm9rZWQgd2hlbiBjbG9zZSgpIGlzIGludm9rZWQgb24gdGhl
IHdvcmtlciBjb250ZXh0LgogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENsb3Nl
ZCgpID0gMDsKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysg
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtNjgxLDcgKzY4
Miw3IEBAIHN0YXRpYyB2b2lkIHJlcG9ydFVuc2FmZVVzYWdlKFNjcmlwdEV4ZWMKICAgICAgICAg
cmV0dXJuOwogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBnb29kIHRvIHJlcG9ydCB0aGUgYmFkIHVz
YWdlIHdpdGhvdXQgaW5kaWNhdGluZyB3aGF0IHNvdXJjZSBsaW5lIGl0IGNhbWUgZnJvbS4KICAg
ICAvLyBXZSBzaG91bGQgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gd2UgY2FuIHRlbGwg
dGhlIGNvbnNvbGUgd2hlcmUgdGhlIG1pc3Rha2Ugb2NjdXJyZWQuCi0gICAgY29udGV4dC0+YWRk
TWVzc2FnZShDb25zb2xlRGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisgICAgY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04NzEsNyArODcyLDEwIEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW4KICAgICBpZiAobV9kZWNvZGVyKQogICAg
ICAgICBtX3Jlc3BvbnNlVGV4dCArPSBtX2RlY29kZXItPmZsdXNoKCk7CiAKLSAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVu
dGlmaWVyLCBtX3Jlc3BvbnNlVGV4dCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGluc3BlY3Rvci0+cmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcmVzcG9uc2VUZXh0KTsKKyNlbmRp
ZgogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsKICAgICBtX2xvYWRlciA9IDA7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEwLTA0LTA2ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBpbnNwZWN0b3IgbWV0aG9kcyBmcm9tIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgYW5kIGRlcml2ZWQgY2xhc3Nlcy4KKyAgICAgICAgUmVtb3Zl
ZCBNZXNzYWdlRGVzdGluYXRpb24gcGFyYW1ldGVyIGZyb20gY29uc29sZS1yZWxhdGVkIGNhbGxz
ICh3ZSBub3cgYWx3YXlzCisgICAgICAgIGxvZyB0byB0aGUgc2FtZSBkZXN0aW5hdGlvbihzKSku
CisgICAgICAgIFJlbW92ZWQgcmVkdW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDkKKworICAgICAgICAqIHB1YmxpYy9XZWJDb21t
b25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50
Ojpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2spOgorICAgICAgICAq
IHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMDYgIE1hdHRpYXMgTmlzc2xl
ciAgPG1uaXNzbGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtl
ckNsaWVudC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tbW9uV29ya2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVt
YmVyLAogICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KAotICAgICAgICBpbnQg
ZGVzdGluYXRpb25JZGVudGlmaWVyLAotICAgICAgICBpbnQgc291cmNlSWRlbnRpZmllciwKLSAg
ICAgICAgaW50IG1lc3NhZ2VUeXBlLAotICAgICAgICBpbnQgbWVzc2FnZUxldmVsLAotICAgICAg
ICBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgIGludCBsaW5lTnVtYmVyLAotICAg
ICAgICBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOworICAgIC8vIEZJWE1FOiB0aGUg
YmVsb3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQgc2hvdWxkIGJlICAgCisgICAgLy8g
cmVtb3ZlZCBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIG1lc3NhZ2UKKyAgICAv
LyBkZXN0aW5hdGlvbiBwYXJhbWV0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzcxNTU+LgorICAg
IHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQsIGludCBz
b3VyY2VJZGVudGlmaWVyLCBpbnQgbWVzc2FnZVR5cGUsIGludCBtZXNzYWdlTGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJM
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QoaW50IHNvdXJjZUlkZW50aWZpZXIsIGludCBtZXNzYWdlVHlwZSwgaW50IG1lc3NhZ2VMZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgV2ViU3RyaW5nJiBz
b3VyY2VVUkwpCisgICAgeworICAgICAgICBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dCgwLCBzb3VyY2VJZGVudGlmaWVyLCBtZXNzYWdlVHlwZSwgbWVzc2FnZUxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwpOworICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0Q2xvc2Vk
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCkgPSAwOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNiwxMiArNDA2LDYgQEAgYm9vbCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkTAogICAgIHJldHVybiBmYWxzZTsgIC8vIERvIG5v
dCBzdXBwcmVzcyByZW1haW5pbmcgbm90aWZpY2F0aW9ucwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KAotICAg
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKLSAgICBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJj
ZSkKLXsKLX0KLQogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkSGFuZGxl
T25sb2FkRXZlbnRzKCkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3
MTQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hE
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgaW50IGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJl
c291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdFN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRs
ZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDggKzE5OSw3IEBAIHZvaWQgV2Vi
V29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRhc2soU2MKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQg
V2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZURl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSwKK3ZvaWQgV2ViV29ya2Vy
QmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1lc3NhZ2VUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lc3NhZ2VMZXZlbCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlLApA
QCAtMjA4LDE2ICsyMDcsMTMgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3Nh
Z2VUbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCB0aGlzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50PihkZXN0aW5hdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNvdXJjZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHR5cGUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50PihsZXZlbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UsIHR5cGUsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKSk7CiB9CiAK
IHZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRlc3RpbmF0aW9uLCBpbnQgc291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIsCkBAIC0yMjUsNyArMjIxLDcgQEAgdm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0Q29u
c29sZU1lc3NhZ2VUYQogewogICAgIGlmICghdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+cG9zdENvbnNvbGVNZXNz
YWdlVG9Xb3JrZXJPYmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSwKKyAgICB0aGlzUHRyLT5jb21t
b25DbGllbnQoKS0+cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3Qoc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlLCBsZXZlbCwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0K
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCShyZXZpc2lvbiA1NzE0MykKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KAogICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdCgKLSAgICAgICAgV2ViQ29yZTo6TWVzc2FnZURlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpNZXNzYWdlU291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6
TWVzc2FnZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsCiAgICAgICAgIFdlYkNvcmU6Ok1l
c3NhZ2VMZXZlbCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgaW50LCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCk7CkBA
IC0xMTUsNyArMTE1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0Q29uc29sZU1l
c3NhZ2VUYXNrKAogICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAotICAgICAgICBpbnQgZGVzdGlu
YXRpb24sCiAgICAgICAgIGludCBzb3VyY2UsCiAgICAgICAgIGludCB0eXBlLAogICAgICAgICBp
bnQgbGV2ZWwsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV2Vi
V29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOwogfQogCi12b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KGludCBkZXN0aW5hdGlvbklkLAordm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQgZGVzdGluYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2FnZUxldmVsLApA
QCAtMjYzLDcgKzI2Myw2IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENvbnNvbGVN
ZXMKICAgICBpZiAoY3VycmVudFRocmVhZCgpICE9IG1fd29ya2VyVGhyZWFkSWQpIHsKICAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0VGFzaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdGluYXRpb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlTGV2ZWwsCkBAIC0yNzMsMTQgKzI3MiwyMyBAQCB2b2lkIFdlYldvcmtlckNsaWVudElt
cGw6OnBvc3RDb25zb2xlTWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uoc3RhdGljX2Nhc3Q8TWVzc2FnZURlc3RpbmF0
aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8TWVzc2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAgIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihz
b3VyY2VJZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PE1lc3NhZ2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2FnZUxldmVs
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKG1lc3Nh
Z2UpLCBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcoc291cmNlVVJMKSk7CiB9CiAKK3ZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9z
dENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50IHNvdXJjZUlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVzc2Fn
ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNlVVJMKQoreworICAg
IHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KDAsIHNvdXJjZUlkLCBtZXNzYWdlVHlw
ZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCiB2
b2lkIFdlYldvcmtlckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKICAgICAvLyB1bmNvbmZpcm1lZF9tZXNzYWdlX2Nv
dW50XyBjYW4gb25seSBiZSB1cGRhdGVkIG9uIHRoZSB0aHJlYWQgd2hlcmUgaXQncwpAQCAtMzgy
LDcgKzM5MCw2IEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdEV4Y2VwdGlvblQKIAog
dm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVj
dFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNs
aWVudEltcGwqIHRoaXNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdGluYXRpb25JZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
b3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlTGV2ZWws
CkBAIC0zOTAsOCArMzk3LDcgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpwb3N0Q29uc29s
ZU1lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICB0aGlzUHRyLT5tX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2Uo
c3RhdGljX2Nhc3Q8TWVzc2FnZURlc3RpbmF0aW9uPihkZXN0aW5hdGlvbklkKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVz
c2FnZVNvdXJjZT4oc291cmNlSWQpLAorICAgIHRoaXNQdHItPm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkTWVzc2FnZShzdGF0aWNfY2FzdDxNZXNzYWdlU291cmNlPihzb3VyY2VJZCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PE1lc3NhZ2VUeXBlPihtZXNzYWdlVHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1lc3NhZ2VMZXZlbD4obWVzc2Fn
ZUxldmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZSwgbGluZU51bWJlciwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCwxMiBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlc2UgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFk
LgogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFdlYlN0
cmluZyYsIGNvbnN0IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Jik7CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBXZWJTdHJpbmcmLCBpbnQsIGNv
bnN0IFdlYlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdChpbnQsIGludCwgaW50LCBpbnQsIGNvbnN0IFdlYlN0cmluZyYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgY29uc3QgV2Vi
U3RyaW5nJik7CisKKyAgICAvLyBGSVhNRTogdGhlIGJlbG93IGlzIGZvciBjb21wYXRpYmlsaXR5
IG9ubHkgYW5kIHNob3VsZCBiZSAgICAgCisgICAgLy8gcmVtb3ZlZCBvbmNlIENocm9taXVtIGlz
IHVwZGF0ZWQgdG8gcmVtb3ZlIG1lc3NhZ2UgCisgICAgLy8gZGVzdGluYXRpb24gcGFyYW1ldGVy
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzM3MTU1Pi4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNv
bGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoaW50LCBpbnQsIGludCwgaW50LCBjb25zdCBXZWJTdHJp
bmcmLCBpbnQsIGNvbnN0IFdlYlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQsIGludCwgaW50LCBjb25zdCBXZWJTdHJpbmcmLCBp
bnQsIGNvbnN0IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rp
dml0eShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENsb3NlZCgpOwpAQCAt
MTI1LDcgKzEyOSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAg
c3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQ
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkZXN0aW5hdGlvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXNzYWdlVHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lc3NhZ2VMZXZl
bCwKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wNC0wMSAgR3VzdGF2byBOb3JvbmhhIFNp
bHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBIb2xnZXIgRnJleXRoZXIuCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTQ1LDExICs5NDUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxMCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQog
Ym9vbCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlm
aWVyKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJl
c291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpTY3Jp
cHRTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxv
YWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CkluZGV4OiBXZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3
KQorKysgV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBy
ZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjk0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oOgorCiAyMDEwLTAzLTMxICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCShy
ZXZpc2lvbiA1NzE0MykKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDExICs2MzQsNiBAQCBib29s
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNl
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDU3MTQzKQorKysg
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJp
bmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpJbmRleDogV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3MTQ3
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0wNC0wNiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgcmVk
dW5kYW50IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0
cFJlcXVlc3QoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzY5NDkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisK
IDIwMTAtMDQtMDUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYsNyArMTI2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBpbnQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3Vy
Y2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2NyaXB0U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNz
KCk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDEwICszNDgs
NiBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJl
c291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNj
cmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQotewotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0
L0NoYW5nZUxvZwkocmV2aXNpb24gNTcxNDcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMDYgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTAtMDQtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6
bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNTcxNDMpCisrKyBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
NSwxMSArODk1LDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZExvYQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgV2Vi
Q29yZTo6U2NyaXB0U3RyaW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUVdlYlBhZ2UqIHBhZ2UgPSBtX3dlYkZy
YW1lLT5wYWdlKCk7CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDU3MTQzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0U3RyaW5nJiBzb3VyY2VT
dHJpbmcpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2
ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzE0NykKKysrIFdl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MDQtMDYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0w
NC0wNSAgUGV0ZXIgTmVsc29uICA8Y2hhcm4ub3Bjb2RlQGdtYWlsLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzE0MykKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDMsMTAgKzI0Myw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmEKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+ZGlkRmFpbExvYWRpbmdXaXRo
RXJyb3Iod2ViVmlldywgaWRlbnRpZmllciwgd2ViRXJyb3IuZ2V0KCksIGdldFdlYkRhdGFTb3Vy
Y2UobG9hZGVyKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRT
dHJpbmcmKQotewotfQotCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRDYWNoZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRh
dGEsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgV2ViVmlldyogd2Vi
VmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3MTQzKQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CkluZGV4OiBXZWJLaXQvd3gv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3
MTQ3KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA0LTA2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBy
ZWR1bmRhbnQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxI
dHRwUmVxdWVzdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjk0OQorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmNwcDoKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwog
MjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDU3MTQzKQorKysgV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczMywxMSArNzMzLDYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRj
aERpZExvYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4
OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywg
Y29uc3QgU2NyaXB0U3RyaW5nJikKLXsKLSAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogdm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDU3MTQz
KQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgaW50KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9h
ZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJp
bmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>