<?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>183969</bug_id>
          
          <creation_ts>2018-03-23 19:53:01 -0700</creation_ts>
          <short_desc>Use SecurityOriginData more consistently in Service Worker code</short_desc>
          <delta_ts>2018-03-26 14:48:22 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184012</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=184024</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184000</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409009</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 19:53:01 -0700</bug_when>
    <thetext>Use SecurityOriginData more consistently in Service Worker code to avoid constructing SecurityOrigin objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409015</commentid>
    <comment_count>1</comment_count>
      <attachid>336454</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 20:33:38 -0700</bug_when>
    <thetext>Created attachment 336454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409016</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 20:34:31 -0700</bug_when>
    <thetext>Attachment 336454 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 26 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>1409019</commentid>
    <comment_count>3</comment_count>
      <attachid>336454</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-03-23 20:53:17 -0700</bug_when>
    <thetext>Comment on attachment 336454
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        * page/SecurityOriginData.cpp:
&gt; +        (WebCore::SecurityOriginData::toString const):
&gt; +        Update the SecurityOriginData::toString() implementation to match the one in
&gt; +        SecurityOrigin. In particular, in the common case where there is no port, the
&gt; +        string is now https://www.webkit.org, not https://www.webkit.org:0.

This comment is slightly misleading. The function does *not* match SecurityOrigin::toRawString in the case where m_protocol is &quot;file&quot;.

&gt; Source/WebCore/page/SecurityOriginData.cpp:64
&gt; -    return makeString(protocol, &quot;://&quot;, host, &quot;:&quot;, String::number(port.value_or(0)));
&gt; +    StringBuilder result;
&gt; +    result.reserveCapacity(protocol.length() + host.length() + 10);
&gt; +    result.append(protocol);
&gt; +    result.appendLiteral(&quot;://&quot;);
&gt; +    result.append(host);
&gt; +
&gt; +    if (port) {
&gt; +        result.append(&apos;:&apos;);
&gt; +        result.appendNumber(port.value());
&gt; +    }
&gt; +
&gt; +    return result.toString();

Here’s another way to write it that is simpler and more efficient:

    if (!port)
        return makeString(protocol, &quot;://&quot;, host);
    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, *port);

We should change SecurityOrigin::toRawString to do it that way, I think. Should we eventually make SecurityOrigin use a SecurityOriginData data member instead of m_protocol, m_host, and m_port? If so, then SecurityOrigin::toRawString could actually call this function.

&gt; Source/WebCore/page/SecurityOriginData.h:29
&gt; +#include &quot;URL.h&quot;
&gt;  #include &lt;wtf/text/WTFString.h&gt;

Can delete the include of WTFString.h since we are adding the include of URL.h.

&gt; Source/WebCore/workers/service/server/SWOriginStore.h:30
&gt; +#include &quot;SecurityOriginData.h&quot;

Can remove the include of WTFString.h since we are adding the include of SecurityOriginData.h.

&gt; Source/WebCore/workers/service/server/SWOriginStore.h:32
&gt;  #include &lt;wtf/text/StringHash.h&gt;

We can remove this include too since we aren’t hashing strings here any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409021</commentid>
    <comment_count>4</comment_count>
      <attachid>336455</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 21:37:03 -0700</bug_when>
    <thetext>Created attachment 336455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409022</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 21:38:50 -0700</bug_when>
    <thetext>Attachment 336455 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 74 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>1409023</commentid>
    <comment_count>6</comment_count>
      <attachid>336456</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 21:49:30 -0700</bug_when>
    <thetext>Created attachment 336456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409024</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 21:52:10 -0700</bug_when>
    <thetext>Attachment 336456 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 77 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>1409025</commentid>
    <comment_count>8</comment_count>
      <attachid>336457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 21:53:17 -0700</bug_when>
    <thetext>Created attachment 336457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409026</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 21:55:32 -0700</bug_when>
    <thetext>Attachment 336457 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409027</commentid>
    <comment_count>10</comment_count>
      <attachid>336458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 21:57:54 -0700</bug_when>
    <thetext>Created attachment 336458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409028</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 21:59:10 -0700</bug_when>
    <thetext>Darin, I made the refactoring you suggested. Could you please take another look?

Also note that makeString() does not do the right thing when passed a uint16_t so I had to call String::number() first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409029</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 22:00:51 -0700</bug_when>
    <thetext>Attachment 336458 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409044</commentid>
    <comment_count>13</comment_count>
      <attachid>336464</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-23 22:54:08 -0700</bug_when>
    <thetext>Created attachment 336464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409046</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-23 22:56:26 -0700</bug_when>
    <thetext>Attachment 336464 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409100</commentid>
    <comment_count>15</comment_count>
      <attachid>336475</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 10:28:23 -0700</bug_when>
    <thetext>Created attachment 336475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409101</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-24 10:29:45 -0700</bug_when>
    <thetext>Attachment 336475 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409110</commentid>
    <comment_count>17</comment_count>
      <attachid>336475</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-03-24 11:51:18 -0700</bug_when>
    <thetext>Comment on attachment 336475
Patch

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

&gt; Source/WebCore/page/SecurityOriginData.cpp:47
&gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, String::number(*port));

Calling String::number should not be necessary if we include the StringConcatenateNumbers.h header, and that would save allocating and then destroying a String every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409113</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:06:27 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; Comment on attachment 336475 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336475&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOriginData.cpp:47
&gt; &gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, String::number(*port));
&gt; 
&gt; Calling String::number should not be necessary if we include the
&gt; StringConcatenateNumbers.h header, and that would save allocating and then
&gt; destroying a String every time.

#include &lt;wtf/text/StringConcatenateNumbers.h&gt; does not seem to help:
--- /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/tests/cache-storage/cache-clearing-origin.https-expected.txt
+++ /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/tests/cache-storage/cache-clearing-origin.https-actual.txt
@@ -1,7 +1,7 @@
 
 
 PASS Create a cache storage from localhost and clear it 
-PASS Clearing disk cache of a given origin 
-PASS Validating cache representation before clearing 
-PASS Validating cache representation after clearing 
+FAIL Clearing disk cache of a given origin assert_true: Actual origin cache size is not zero expected true got false
+FAIL Validating cache representation before clearing assert_equals: top origin of cache 1 expected &quot;https://127.0.0.1:8443&quot; but got &quot;https://127.0.0.1:âƒ»&quot;
+FAIL Validating cache representation after clearing assert_equals: top origin of cache 1 expected &quot;https://127.0.0.1:8443&quot; but got &quot;https://127.0.0.1:âƒ»&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409114</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:11:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; (In reply to Darin Adler from comment #17)
&gt; &gt; Comment on attachment 336475 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=336475&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/SecurityOriginData.cpp:47
&gt; &gt; &gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, String::number(*port));
&gt; &gt; 
&gt; &gt; Calling String::number should not be necessary if we include the
&gt; &gt; StringConcatenateNumbers.h header, and that would save allocating and then
&gt; &gt; destroying a String every time.
&gt; 
&gt; #include &lt;wtf/text/StringConcatenateNumbers.h&gt; does not seem to help:
&gt; ---
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/
&gt; tests/cache-storage/cache-clearing-origin.https-expected.txt
&gt; +++
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/
&gt; tests/cache-storage/cache-clearing-origin.https-actual.txt
&gt; @@ -1,7 +1,7 @@
&gt;  
&gt;  
&gt;  PASS Create a cache storage from localhost and clear it 
&gt; -PASS Clearing disk cache of a given origin 
&gt; -PASS Validating cache representation before clearing 
&gt; -PASS Validating cache representation after clearing 
&gt; +FAIL Clearing disk cache of a given origin assert_true: Actual origin cache
&gt; size is not zero expected true got false
&gt; +FAIL Validating cache representation before clearing assert_equals: top
&gt; origin of cache 1 expected &quot;https://127.0.0.1:8443&quot; but got
&gt; &quot;https://127.0.0.1:âƒ»&quot;
&gt; +FAIL Validating cache representation after clearing assert_equals: top
&gt; origin of cache 1 expected &quot;https://127.0.0.1:8443&quot; but got
&gt; &quot;https://127.0.0.1:âƒ»&quot;

My best is that it probably ends up using the template specialization for UChar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409115</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-03-24 12:12:50 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; (In reply to Darin Adler from comment #17)
&gt; &gt; Comment on attachment 336475 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=336475&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/SecurityOriginData.cpp:47
&gt; &gt; &gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, String::number(*port));
&gt; &gt; 
&gt; &gt; Calling String::number should not be necessary if we include the
&gt; &gt; StringConcatenateNumbers.h header, and that would save allocating and then
&gt; &gt; destroying a String every time.
&gt; 
&gt; #include &lt;wtf/text/StringConcatenateNumbers.h&gt; does not seem to help:

The problem is that UChar and uint16_t are the same type, so it’s interpreting the port number as a character. A short term workaround is to convert the port number to some other integer type:

    static_cast&lt;uint32_t&gt;(*port)

A longer term solution would be to make an adapter to resolve the ambiguity, something like how FormattedNumber works, or even just add integer serializing to FormattedNumber itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409116</commentid>
    <comment_count>21</comment_count>
      <attachid>336480</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:14:33 -0700</bug_when>
    <thetext>Created attachment 336480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409117</commentid>
    <comment_count>22</comment_count>
      <attachid>336480</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:15:22 -0700</bug_when>
    <thetext>Comment on attachment 336480
Patch

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

&gt; Source/WebCore/page/SecurityOriginData.cpp:48
&gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, static_cast&lt;unsigned&gt;(*port));

Using static_cast&lt;unsigned&gt;(), I can force it to use the right template specialization and it works without doing a String allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409118</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:16:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; Comment on attachment 336480 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336480&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOriginData.cpp:48
&gt; &gt; +    return makeString(protocol, &quot;://&quot;, host, &apos;:&apos;, static_cast&lt;unsigned&gt;(*port));
&gt; 
&gt; Using static_cast&lt;unsigned&gt;(), I can force it to use the right template
&gt; specialization and it works without doing a String allocation.

Oh, I just saw your comment. I&apos;ll use uint32_t as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409119</commentid>
    <comment_count>24</comment_count>
      <attachid>336481</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-24 12:17:03 -0700</bug_when>
    <thetext>Created attachment 336481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409120</commentid>
    <comment_count>25</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-24 12:18:12 -0700</bug_when>
    <thetext>Attachment 336481 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409129</commentid>
    <comment_count>26</comment_count>
      <attachid>336481</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-24 12:54:48 -0700</bug_when>
    <thetext>Comment on attachment 336481
Patch

Clearing flags on attachment: 336481

Committed r229954: &lt;https://trac.webkit.org/changeset/229954&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409130</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-24 12:54:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409131</commentid>
    <comment_count>28</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-24 12:55:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/38831027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409226</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-25 21:56:15 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #26)
&gt; Comment on attachment 336481 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 336481
&gt; 
&gt; Committed r229954: &lt;https://trac.webkit.org/changeset/229954&gt;

This caused many layout tests to crash on the Apple High Sierra Debug, Apple Sierra Debug, Apple iOS 11 Simulator Debug and GTK Linux 64-bit Debug test bots. For convenience, the following are hyperlinks to the test results:

Apple Sierra Debug WK1 (Tests):
&lt;https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK1%20(Tests)/r229954%20(6875)/results.html&gt;
&lt;https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/6875&gt;

Apple Sierra Debug WK2 (Tests):
&lt;https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/r229954%20(5768)/results.html&gt;
&lt;https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK2%20%28Tests%29/builds/5768&gt;

Apple High Sierra Debug WK1 (Tests):
&lt;https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK1%20(Tests)/r229954%20(2992)/results.html&gt;
&lt;https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/2992&gt;

Apple High Sierra Debug WK2 (Tests):
&lt;https://build.webkit.org/results/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r229954%20(2579)/results.html&gt;
&lt;https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/2579&gt;

Apple iOS 11 Simulator Debug WK2 (Tests):
&lt;https://build.webkit.org/results/Apple%20iOS%2011%20Simulator%20Debug%20WK2%20(Tests)/r229954%20(3375)/results.html&gt;
&lt;https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Debug%20WK2%20%28Tests%29/builds/3375&gt;

GTK Linux 64-bit Debug (Tests):
&lt;https://build.webkit.org/results/GTK%20Linux%2064-bit%20Debug%20(Tests)/r229956%20(2747)/results.html&gt;
&lt;https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug%20%28Tests%29/builds/2747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409228</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-25 21:57:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 184000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409299</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 08:56:06 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #29)
&gt; (In reply to WebKit Commit Bot from comment #26)
&gt; &gt; Comment on attachment 336481 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 336481
&gt; &gt; 
&gt; &gt; Committed r229954: &lt;https://trac.webkit.org/changeset/229954&gt;
&gt; 
&gt; This caused many layout tests to crash on the Apple High Sierra Debug, Apple
&gt; Sierra Debug, Apple iOS 11 Simulator Debug and GTK Linux 64-bit Debug test
&gt; bots. For convenience, the following are hyperlinks to the test results:
&gt; 
&gt; Apple Sierra Debug WK1 (Tests):
&gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK1%20(Tests)/
&gt; r229954%20(6875)/results.html&gt;
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/6875&gt;
&gt; 
&gt; Apple Sierra Debug WK2 (Tests):
&gt; &lt;https://build.webkit.org/results/Apple%20Sierra%20Debug%20WK2%20(Tests)/
&gt; r229954%20(5768)/results.html&gt;
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Debug%20WK2%20%28Tests%29/builds/5768&gt;
&gt; 
&gt; Apple High Sierra Debug WK1 (Tests):
&gt; &lt;https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Debug%20WK1%20(Tests)/r229954%20(2992)/results.html&gt;
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK1%20%28Tests%29/builds/2992&gt;
&gt; 
&gt; Apple High Sierra Debug WK2 (Tests):
&gt; &lt;https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/r229954%20(2579)/results.html&gt;
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/2579&gt;
&gt; 
&gt; Apple iOS 11 Simulator Debug WK2 (Tests):
&gt; &lt;https://build.webkit.org/results/
&gt; Apple%20iOS%2011%20Simulator%20Debug%20WK2%20(Tests)/r229954%20(3375)/
&gt; results.html&gt;
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20iOS%2011%20Simulator%20Debug%20WK2%20%28Tests%29/builds/3375&gt;
&gt; 
&gt; GTK Linux 64-bit Debug (Tests):
&gt; &lt;https://build.webkit.org/results/GTK%20Linux%2064-bit%20Debug%20(Tests)/
&gt; r229956%20(2747)/results.html&gt;
&gt; &lt;https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Debug%20%28Tests%29/builds/2747&gt;

I am looking into this, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409301</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 09:02:23 -0700</bug_when>
    <thetext>Assertion hit in debug WK2, which is why EWS did not catch it:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000124dda694 WTFCrash + 36 (Assertions.cpp:271)
1   com.apple.WebKit              	0x000000011156ba66 WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;::leakRef() + 70 (Ref.h:133)
2   com.apple.WebKit              	0x000000011156b9d1 WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;::Ref(WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 33 (Ref.h:75)
3   com.apple.WebKit              	0x000000011156b99d WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;::Ref(WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 29 (Ref.h:78)
4   com.apple.WebKit              	0x000000011156b96c WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;(WebCore::SecurityOriginData&amp;&amp;, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 76 (KeyValuePair.h:46)
5   com.apple.WebKit              	0x000000011156b8a5 WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;(WebCore::SecurityOriginData&amp;&amp;, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 37 (KeyValuePair.h:46)
6   com.apple.WebKit              	0x000000011156b839 WTF::KeyValuePairHashTraits&lt;WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::emptyValue() + 57 (HashTraits.h:292)
7   com.apple.WebKit              	0x000000011156b7f9 void WTF::HashTableBucketInitializer&lt;false&gt;::initialize&lt;WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;(WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;&amp;) + 57 (HashTable.h:841)
8   com.apple.WebKit              	0x000000011156b7b5 WTF::HashTable&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt;::initializeBucket(WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;&amp;) + 21 (HashTable.h:858)
9   com.apple.WebKit              	0x000000011156b5db WTF::HashTable&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt;::allocateTable(unsigned int) + 75 (HashTable.h:1148)
10  com.apple.WebKit              	0x000000011156b368 WTF::HashTable&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt;::rehash(unsigned int, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;*) + 72 (HashTable.h:1197)
11  com.apple.WebKit              	0x0000000111573005 WTF::HashTable&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt;::expand(WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;*) + 117 (HashTable.h:1174)
12  com.apple.WebKit              	0x0000000111572d1c WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt; &gt; WTF::HashTable&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt;::add&lt;WTF::HashMapTranslator&lt;WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WebCore::SecurityOriginDataHash&gt;, WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;(WebCore::SecurityOriginData&amp;&amp;, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 108 (HashTable.h:869)
13  com.apple.WebKit              	0x0000000111572c9c WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt; &gt; WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::inlineAdd&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;(WebCore::SecurityOriginData&amp;&amp;, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 60 (HashMap.h:346)
14  com.apple.WebKit              	0x0000000111560b7f WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WebCore::SecurityOriginData, WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt; &gt; &gt; WTF::HashMap&lt;WebCore::SecurityOriginData, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;, WebCore::SecurityOriginDataHash, WTF::HashTraits&lt;WebCore::SecurityOriginData&gt;, WTF::HashTraits&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt; &gt;::add&lt;WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt; &gt;(WebCore::SecurityOriginData&amp;&amp;, WTF::Ref&lt;WebKit::WebSWServerToContextConnection, WTF::DumbPtrTraits&lt;WebKit::WebSWServerToContextConnection&gt; &gt;&amp;&amp;) + 79 (HashMap.h:388)
15  com.apple.WebKit              	0x0000000111560247 WebKit::StorageProcess::createStorageToWebProcessConnection(bool, WebCore::SecurityOriginData&amp;&amp;) + 663 (StorageProcess.cpp:279)
16  com.apple.WebKit              	0x0000000111584f68 void IPC::callMemberFunctionImpl&lt;WebKit::StorageProcess, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;), std::__1::tuple&lt;bool, WebCore::SecurityOriginData&gt;, 0ul, 1ul&gt;(WebKit::StorageProcess*, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;), std::__1::tuple&lt;bool, WebCore::SecurityOriginData&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) + 200 (HandleMessage.h:41)
17  com.apple.WebKit              	0x0000000111584ce0 void IPC::callMemberFunction&lt;WebKit::StorageProcess, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;), std::__1::tuple&lt;bool, WebCore::SecurityOriginData&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;bool, WebCore::SecurityOriginData&gt;&amp;&amp;, WebKit::StorageProcess*, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;)) + 96 (HandleMessage.h:47)
18  com.apple.WebKit              	0x0000000111583058 void IPC::handleMessage&lt;Messages::StorageProcess::CreateStorageToWebProcessConnection, WebKit::StorageProcess, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::StorageProcess*, void (WebKit::StorageProcess::*)(bool, WebCore::SecurityOriginData&amp;&amp;)) + 312 (HandleMessage.h:127)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409315</commentid>
    <comment_count>33</comment_count>
      <attachid>336524</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 10:26:18 -0700</bug_when>
    <thetext>Created attachment 336524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409316</commentid>
    <comment_count>34</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-26 10:27:41 -0700</bug_when>
    <thetext>Attachment 336524 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 79 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>1409334</commentid>
    <comment_count>35</comment_count>
      <attachid>336524</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-26 11:03:46 -0700</bug_when>
    <thetext>Comment on attachment 336524
Patch

Clearing flags on attachment: 336524

Committed r229979: &lt;https://trac.webkit.org/changeset/229979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409335</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-26 11:03:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336454</attachid>
            <date>2018-03-23 20:33:38 -0700</date>
            <delta_ts>2018-03-23 21:36:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323203337.patch</filename>
            <type>text/plain</type>
            <size>54645</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uMjMwOTlkYzdkMjUwMTNiMjU5YTBhN2NjMGQ2ODVh
MTYzMzBmNjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTAzLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW5E
YXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29ya2VyIGNvZGUgdG8gYXZvaWQgY29u
c3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9iamVjdHMgdW5uZWNlc3NhcmlseS4K
KworICAgICAgICBObyBuZXcgdGVzdCwgbm8gd2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgVXBkYXRlIHRo
ZSBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgaW1wbGVtZW50YXRpb24gdG8gbWF0Y2gg
dGhlIG9uZSBpbgorICAgICAgICBTZWN1cml0eU9yaWdpbi4gSW4gcGFydGljdWxhciwgaW4gdGhl
IGNvbW1vbiBjYXNlIHdoZXJlIHRoZXJlIGlzIG5vIHBvcnQsIHRoZQorICAgICAgICBzdHJpbmcg
aXMgbm93IGh0dHBzOi8vd3d3LndlYmtpdC5vcmcsIG5vdCBodHRwczovL3d3dy53ZWJraXQub3Jn
OjAuCisKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKToKKyAgICAgICAgQWRkIGZhY3Rvcnkg
ZnVuY3Rpb24gdG8gY29uc3RydWN0IGEgU2VjdXJpdHlPcmlnaW5EYXRhIGRpcmVjdGx5IGZyb20g
YSBVUkwsCisgICAgICAgIHNvIHRoYXQgd2UgZG8gbm90IGhhdmUgdG8gZ28gdGhyb3VnaCBjcmVh
dGluZyBhIHRlbXBvcmFyeSBTZWN1cml0eU9yaWdpbgorICAgICAgICBvYmplY3QgaW4gc29tZSBj
YXNlcy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OnJlbGF0ZXNUb09yaWdpbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9y
ZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OnJlbW92ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV09yaWdpblN0b3JlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVn
aXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvck9yaWdpbiBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6flNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Gb3JPcmlnaW4pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyV29ya2VyOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJXb3JrZXI6OnNlY3VyaXR5T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMTgtMDMtMjMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRl
U3RhdGVXaXRob3V0Tm90aWZ5aW5nKCkgaXMgaW5lZmZpY2llbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWMwNmVj
NzE3MzA0ZGU4Mjg5Zjc5YmYxYzQ1OWMzOWI2ZWMxN2I1ZC4uMzQyZDhjZTVkMmQxNzk3ODk2MmJm
MTg3OTUxMWE0M2Y4ZDk3YzIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOC0wMy0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0
eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2
b2lkIGNvbnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNz
YXJpbHkuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3Jp
Z2luU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3Jl
KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3Rv
cmUuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c2NoZWR1bGVKb2JJblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVBy
b2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25N
YXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmdldExhdW5jaE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTgtMDMtMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gQWRvcHQgbGlzdCB2
aWV3IGNvbnRyb2xsZXIgVUkgZm9yIHNlbGVjdCBtZW51cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU5MGFiODIxZjc4ZmQ1NTZmZjU2ODdkMzBlOWYy
Zjc2MGIzOTY0YmEuLmJmZWE5YzFmZjAzOTIxOWExZGVjNjkzYmE2MTEyYjA0M2I3ZWRhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTUwLDcgKzUw
LDE4IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0
YTo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAi
Oi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShwcm90b2Nv
bC5sZW5ndGgoKSArIGhvc3QubGVuZ3RoKCkgKyAxMCk7CisgICAgcmVzdWx0LmFwcGVuZChwcm90
b2NvbCk7CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjovLyIpOworICAgIHJlc3VsdC5hcHBl
bmQoaG9zdCk7CisKKyAgICBpZiAocG9ydCkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7
CisgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIocG9ydC52YWx1ZSgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCA1ZjU1Zjk0MmI4MWZjZmUwMGJmZDQzYmMxMDk5
NmYzY2RjMjQ3MTVkLi5kOWI4ZjUwYjczNzJlNjI5MjA3MDYwOTZlNDAxZTRkNThkYzE5MDM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNiArNDgsMTAgQEAg
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZy
b21GcmFtZShGcmFtZSopOworICAgIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbVVSTChj
b25zdCBVUkwmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eyB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLCB1cmwuaG9zdCgpLCB1cmwucG9ydCgpIH07Cisg
ICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggYjg0YzY2
ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0NmIyM2RiOTNlMzU2ZjIy
ZTYzMTIwYjFjZDRmNGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAt
NzcsMTMgKzc3LDEyIEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3JpZ2lu
SXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29sIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bikgY29uc3QKIHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BPcmlnaW4gPT0gc2VjdXJp
dHlPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBzY29wZU9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlT3JpZ2lu
LT5pc1NhbWVPcmlnaW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21VUkwobV9zY29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0YXRpYyBjb25zdCBj
aGFyIHNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmlu
ZGV4IDIzOWEzMDBiMTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1ZmIuLjcxMGY0MTJiNDcy
ZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7IG1f
c2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0ZXNUb09yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDVlYTQ1
Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZiMTYxY2U4Yzg0ODVkNTYy
NjJlYjZhYzY3MTQxNGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6YWRkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJl
KG9yaWdpbi50b1N0cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9y
aWdpbiwgWyZdIHsKICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6cmVt
b3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OnJl
bW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vcmlnaW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgYXV0byBp
dGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoaXRlcmF0
b3IgIT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29yaWdp
bkNvdW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFNX
T3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIHJl
bW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1fb3JpZ2luQ291bnRzLnJl
bW92ZShvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3VudHMucmVtb3ZlKG9yaWdp
bik7CiAgICAgcmVtb3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXggZTEx
ZTQ1MTFmZTE5ODA4ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uZTFmMzJlZDZkOWQ4MDU1NjMx
MThhOGJhM2I2MmJkMDBjMTNkY2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3LDMyICsyNywzMSBAQAog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNzIFNXT3JpZ2luU3RvcmUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNX
T3JpZ2luU3RvcmUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0eU9y
aWdpbiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9p
ZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgYWRkKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAgdm9p
ZCBjbGVhckFsbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENvbXBsZXRlKCkgPSAwOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJp
dHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0b3Jl
KCkgPSAwOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50czsK
KyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG1fb3JpZ2luQ291bnRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZWVmMGUzMWMyNzFhOWFj
YTY1YTlkMTNiNzk3MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdmM2FjODExMWQ4YTQ3MzRh
ZTBiNGRiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRk
UmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdp
c3RyYXQKICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmFkZChyZWdp
c3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7CiAKLSAgICBtX29yaWdp
blN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1fb3Jp
Z2luU3RvcmUtPmFkZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZW1v
dmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQog
ewotICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7
CisgICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAgICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRp
b24pOwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5SUQucmVtb3ZlKHJl
Z2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1LDI5IEBAIHZvaWQgU1dT
ZXJ2ZXI6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAgbV9jbGVhckNvbXBsZXRp
b25DYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVmKG9yaWdpbiksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewor
ICAgICAgICBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHNlY3VyaXR5
T3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENvbXBsZXRlZCk7Ci0gICAg
ICAgICAgICBjbGVhcihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgIGNsZWFyKHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9qb2JRdWV1ZXMu
cmVtb3ZlSWYoWyZdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBrZXlBbmRW
YWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlBbmRW
YWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9KTsKIAogICAg
IFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKICAg
ICBmb3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlm
IChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCisgICAgICAgIGlmIChr
ZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDogbV9wZW5kaW5nQ29udGV4
dERhdGFzLnZhbHVlcygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5yZW1vdmVBbGxNYXRjaGlu
ZyhbJl0oYXV0byYgY29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0
YS5yZWdpc3RyYXRpb24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3Vy
aXR5T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCB2
b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4
dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsKLSAgICBhdXRvIG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8qIGNv
bm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmln
aW4ob3JpZ2luKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tVVJMKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2lu
KTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFz
LmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERh
dGFzLmVuc3VyZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewogICAgICAgICAgICAgcmV0
dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NTEyLDExICs1MTIsMTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29u
dGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5k
aW5nQ29udGV4dERhdGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBh
dXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0RGF0YXMudGFrZShjb250
ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBw
ZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CiAK
LSAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJl
cXVlc3RzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29u
dGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDog
c2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNl
cnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXRl
bS52YWx1ZSkKQEAgLTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdv
cmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAg
ICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1p
bmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtB
bGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWluYXRl
ZFdvcmtlcnM7CiAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5n
V29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhvc3RQ
b3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlmICh3b3JrZXItPnNlY3Vy
aXR5T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVkV29y
a2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJtaW5h
dGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBT
V1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKHdv
cmtlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2VjdXJp
dHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5
T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKGNsaWVudE9yaWdpbi5j
bGllbnRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
TWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MDUsOSArODA1LDkg
QEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xp
ZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdp
c3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAotYm9vbCBTV1NlcnZl
cjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250
YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsKKyAg
ICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9yaWdp
bik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3Rz
KFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNjA2ZGI0NmFkMDI3Y2Yx
YmM1NWFmNzcxYjg4MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUyNmVmYzg0NzY0Nzk3ZmVm
YTZhYjIwZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2
ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckpvYi5oIgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwoV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBTV1NlcnZl
clJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50
V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtl
ciogYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNG
b3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24o
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5l
Y3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3Jl
KCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhGdW5j
dGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjksOCArMjI5LDggQEAgcHJp
dmF0ZToKIAogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwogICAg
IFJlZ2lzdHJhdGlvblN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0gICAgSGFzaE1hcDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV9w
ZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
SGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJD
YWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAgICBIYXNoTWFwPFNlY3Vy
aXR5T3JpZ2luRGF0YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVuZGlu
Z0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaE1hcDxT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+
PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
c2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNmFhNWEy
YTlmYmQyMzY2MzliNTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3MmYzMmY1YjEwMTkxODFi
NzdlMWU5Njg4YzE5MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNs
dWRlICJTV1NlcnZlcldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MCwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4gZ2Vu
ZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPigpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCitz
dGF0aWMgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbio+JiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bio+PiBjb25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3JpZ2lu
OwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX29yaWdpbihXVEZNb3Zl
KG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewotICAg
IGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX29yaWdpbi5jb3B5
UmVmKCksIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigp
LmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29u
bmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7CisgICAgYXV0byByZXN1
bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4pOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4g
YWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxTZWN1cml0eU9yaWdpbiY+
KG9yaWdpbikpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNlY3Vy
aXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEwMmJjNTI1YjcwZDA1MzRl
N2Y3MTBhNDRmMjU5OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUzOGNkZDg3Zjg1ZDg5ZWM4
MmViNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI3LDcg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC03NCwx
OCArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogCi0gICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlv
bkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJik7CiAKLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmln
aW4uZ2V0KCk7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxT
ZWN1cml0eU9yaWdpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiBwcml2YXRl
OgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5E
YXRhIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEwNjU5MWRhNDA3ZDcxOWUu
LjE1OWJjZTY2OWYxY2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkK
IGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX29yaWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3Jl
Z2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSkgfTsKKyAg
ICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmln
aW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5zY3JpcHRVUkwpIH07CiAK
ICAgICByZXR1cm4gKm1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNXU2VydmVy
V29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7CisgICAgcmV0dXJuIG9yaWdp
bigpLmNsaWVudE9yaWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1Nl
cnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGNjMDc1OWM2
MTZlZjhlODI0YTI3ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAwYWFiOWViMDFiZTRjYjhj
NGRkMGFiMWI2M2ZkODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7CiAK
ICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29u
c3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNv
bnRleHRDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAppbmRleCA5
ZGNhZDk0YmZmMjI2ZDRhMDllMDJlMGMxYTUwMjE3YjVhMWEwY2Y4Li4wNGNiZjIxYjNlN2FhYTYz
MWI1MjUzYTdkNTk2M2RjNDg3ZTk5ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3Bw
CkBAIC00MSwxMyArNDEsMTMgQEAgV2ViU1dPcmlnaW5TdG9yZTo6V2ViU1dPcmlnaW5TdG9yZSgp
CiB7CiB9CiAKLXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6YWRkVG9TdG9yZShjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQordm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIG1fc3RvcmUuc2NoZWR1bGVBZGRp
dGlvbihjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1f
c3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwogfQogCi12b2lkIFdlYlNXT3JpZ2luU3RvcmU6
OnJlbW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBXZWJT
V09yaWdpblN0b3JlOjpyZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hlZHVsZVJlbW92YWwoY29tcHV0ZVNoYXJlZFN0cmlu
Z0hhc2gob3JpZ2luLnRvU3RyaW5nKCkpKTsKICAgICBtX3N0b3JlLmZsdXNoUGVuZGluZ0NoYW5n
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV09yaWdpblN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5oCmluZGV4IDdmOGM5ODcxMWMyNWRhZTg2ZmVi
ZWZjMDg4YzA5YjUyODlmMTdmZjkuLjJkMjlmNTYwOTU4NGYxMDIwOWU4MDZjZDEwNmFkNzY4ZDBi
NDM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1NXT3JpZ2luU3RvcmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTUwLDgg
KzQ2LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZShXZWJT
V1NlcnZlckNvbm5lY3Rpb24mKTsKIAotICAgIHZvaWQgYWRkVG9TdG9yZShjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmluYWw7CisgICAgdm9pZCBhZGRUb1N0b3JlKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
RnJvbVN0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsOwogICAg
IHZvaWQgY2xlYXJTdG9yZSgpIGZpbmFsOwogCiAgICAgLy8gU2hhcmVkU3RyaW5nSGFzaFN0b3Jl
OjpDbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDUw
MGY5NDliYzE3ZmRjNTZmOTA2MGU1ZDQ3NDMzYTVjZjUzMDM2ZDUuLjM4YzM5OTFlZWZkMWFlZWJl
YzU1NzJmOTA4MWFjNGRhMTZkYTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAog
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdv
cmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGpvYkRhdGEuc2NyaXB0VVJMKTsK
ICAgICBpZiAoIVN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6
OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmln
aW4sIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlv
bk1hdGNoUmVxdWVzdElkCiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKQogewotICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2lu
IHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEudXJsKSkgfTsKKyAgICBhdXRvIGNsaWVu
dE9yaWdpbiA9IENsaWVudE9yaWdpbiB7IFdURk1vdmUodG9wT3JpZ2luKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tVVJMKGRhdGEudXJsKSB9OwogICAgIG1fY2xpZW50T3JpZ2lucy5hZGQoZGF0
YS5pZGVudGlmaWVyLCBjbGllbnRPcmlnaW4pOwogICAgIHNlcnZlcigpLnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoZGF0YSksIGNvbnRy
b2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAxNDg1
MGFjZGY2ZjFmYmU4ODk1ZDkzMDVkMDUxMzQ2Zjk5ODJkODhkLi4wMGI3ZmM3YzgzOThhM2IzMjhk
ZjU4ZmIyNjhhMDdhOTJkODE4YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9y
aWdpbj4mJiBvcmlnaW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKG9yaWdpbikpCitXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCisgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJp
dHlPcmlnaW4pCiAgICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApp
bmRleCBiYjEwYmRlZjkyY2VmYTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiLi5lOWMzOTg4Yzkz
NmViOGViZDgyODFkMmI3YzMxODJjMzI4ZDk5NTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZGQ0ODhjNmZkZmY4MWM2NjI1YmI5
MTBkMjA3ODM1YzIxNjg5ZWE0ZC4uZjg1NzI0ZWE2ZmU2ZmM1OGU5YmQ0NDJiMTFjMTA2ZmE3M2Rl
Njc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKQEAgLTExMywyMyArMTEzLDI0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3Nl
ZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24pCiB7CisgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLT5zZWN1cml0eU9yaWdpbigpOworCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnMucmVtb3ZlKCZzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogCiAgICAg
Zm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1Nl
cnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi0+b3JpZ2luKCkpOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNG
b3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VjdXJpdHlPcmlnaW4pOwogCi0gICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAg
ICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbikpIHsK
KyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5
T3JpZ2luKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlv
biB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRl
ZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihvcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogfQogCi1i
b29sIFN0b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OmFueU9mKG1f
c3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2lu
KTsKKyAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgIH0pOwogfQogI2VuZGlmCkBAIC0yNTAs
NyArMjUxLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHRTdG9yYWdlVGFzaygp
CiAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVh
dGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nl
c3MsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCit2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luKQogewogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVj
dGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24oKTsKQEAgLTI3NCw5ICsyNzUsOCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtl
clBybwogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3N0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nl
c3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChtX3dhaXRp
bmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gb3Jp
Z2luID0gb3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpOwotICAgICAgICBhdXRvIGNvbnRleHRD
b25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUob3JpZ2lu
LmNvcHlSZWYoKSwgbV9zdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25u
ZWN0aW9uKCkpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbnMuYWRkKFdURk1vdmUob3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigp
KTsKKyAgICAgICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdp
biksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICAgICAgbV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKQEAgLTMzOSw3ICszMzks
NyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogI2VuZGlmCiB9CiAKLXZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbkRhdGFzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
d2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3Vy
aXR5T3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSgp
IHsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3Rv
cmFnZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGNhbGxiYWNr
SUQpLCAwKTsKQEAgLTM0OCwxNCArMzQ4LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpKSB7CiAgICAg
ICAgIGF1dG8mIHNlcnZlciA9IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQotICAgICAgICAg
ICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIGZv
ciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICBz
ZXJ2ZXIuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFj
a0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVyKHNl
c3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lu
RGF0YXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcild
IHsgfSk7CisgICAgICAgIGlkYlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhzZWN1cml0eU9yaWdpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZN
b3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtNDU1LDIxICs0
NTUsMjEgQEAgV2ViU1dPcmlnaW5TdG9yZSYgU3RvcmFnZVByb2Nlc3M6OnN3T3JpZ2luU3RvcmVG
b3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViU1dPcmlnaW5TdG9yZSY+KHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLm9yaWdpblN0
b3JlKCkpOwogfQogCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9j
ZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0
b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KCZjb25zdF9jYXN0PFNlY3VyaXR5T3JpZ2luJj4ob3Jp
Z2luKSk7CisgICAgcmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNlY3Vy
aXR5T3JpZ2luKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBzdGQ6Om9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAg
ICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbiA9IHRydWU7CiAgICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzRm9yRXhwbGljaXRT
ZXNzaW9uKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiksICpz
ZXNzaW9uSUQpLCAwKTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHNlY3VyaXR5T3JpZ2luLCAq
c2Vzc2lvbklEKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Moc2VjdXJpdHlPcmlnaW4pLCAwKTsK
IH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmFpbEZldGNoKFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcikKQEAgLTUzNywxNSArNTM3LDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVn
aXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAK
IHZvaWQgU3RvcmFnZVByb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVl
ZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbikKIHsKLSAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm9y
aWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
b3JpZ2luKSkKKyAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8g
bG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLnRlcm1pbmF0ZSgpOwogCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25u
ZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUo
Jm9yaWdpbik7CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJp
dHlPcmlnaW4pOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBkMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZm
YTM5YzA2YmM5Li4yMDc4YTEzMTA3Mzk4NThjYzRiMjdjMmM1YjMxNzNjYzVmNGE5ZWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvSURCQmFja2luZ1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZS5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7Ci1zdHJ1Y3QgU2Vj
dXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwog
fQogCkBAIC05NCw4ICs5Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYp
OwotICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgdm9pZCBj
cmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKIAogICAgIFdlYkNvcmU6
OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQg
cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CkBAIC0x
NTAsNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKIAogICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2lu
U3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBib29sIG5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0
OworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtMTc3LDcg
KzE3Niw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQg
ZGlkQ3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNo
bWVudCYpOwogCi0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBS
ZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlv
biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IFN0cmluZz4gbV9zd0RhdGFiYXNlUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhZWVlYzNiMTI2NDE2
MDI1N2M3MDU5Yzg5NzFlZGZkNDIzMDk1NzYuLmI2MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5
NzU5N2M1NjgxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQ
b29sJiBwb29sLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3Jl
JiBzdG9yZSkKK1JlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAg
IGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBw
b29sLCBXVEZNb3ZlKG9yaWdpbiksIHN0b3JlIH0pOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJl
ZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwg
c3RvcmUgfSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9CiAK
LVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVE
YXRhU3RvcmUmIHN0b3JlKQorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtl
clByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCiAgICAgOiBXZWJQ
cm9jZXNzUHJveHkgeyBwb29sLCBzdG9yZSB9Ci0gICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdp
bikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9zZXJ2
aWNlV29ya2VyUGFnZUlEKGdlbmVyYXRlUGFnZUlEKCkpCiB7CiB9CkBAIC03MSw3ICs3MSw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAgICAgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hP
cHRpb25zKGxhdW5jaE9wdGlvbnMpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxp
emF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIiksIEFT
Q0lJTGl0ZXJhbCgiMSIpKTsKLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBvcmlnaW4oKS50b1N0cmlu
ZygpKTsKKyAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJ
SUxpdGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0
aWFsU2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDFjNzcwYjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRlNWY3
ZDk2MTE4MDUuLjMzNTFiNzQwOTRiZTQ3ZTgzMGUzOTdjNDA2ODFiYWEwODI5OGI1YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwpAQCAtMzYsNyAr
MzYsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJQcm9jZXNzUHJveHkgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nl
c3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3Jl
Jik7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRl
RGF0YVN0b3JlJik7CiAgICAgflNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0
YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZp
Y2VXb3JrZXJEaXJlY3RvcnkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4oKSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3Nl
Y3VyaXR5T3JpZ2luOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CkBAIC01Niw5ICs1Niw5IEBAIHByaXZh
dGU6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQ
b29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIFJl
ZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CiAgICAgdWludDY0X3QgbV9zZXJ2aWNlV29y
a2VyUGFnZUlEIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWU3ODhmNDc0NzBlNmU0
ZWFiMWZmYTkxMDUzNWJiMDk3NzNiYTMyMC4uNTRhMDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4
NDlmZTRjYWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2NlcwogICAgIH0KIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cyA9IGZhbHNlOwotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CisgICAgU2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewog
ICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG93bmNhc3Q8U2VydmljZVdv
cmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5vcmlnaW4oKSk7CisgICAgICAgIHNl
Y3VyaXR5T3JpZ2luID0gZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJv
Y2Vzc1Byb3h5KS5zZWN1cml0eU9yaWdpbigpOwogICAgIH0KICNlbmRpZgogCi0gICAgc2VuZChN
ZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKGlzU2VydmljZVdvcmtlclByb2Nlc3MsIG9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgc2VjdXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAK
IHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzNTFiZjZhYjI2
YjZlZWZkODNmYTk2MjdhOGU0Yzc2NjIxYTA3ZjY2Li4yZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBk
ZjFkNThjM2U0NDc1ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01OTEsMTIgKzU5MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdl
UHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcgogfQog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNz
UHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nl
c3NQcm94eSYgcHJveHksIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBzdGQ6
Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChwcm94eSwgJnByb3h5ID09IG1fc3RvcmFnZVByb2Nlc3MpOwogCi0gICAgYXV0byBvcmlnaW4g
PSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jb250YWlucyhvcmlnaW4ucHRyKCkpKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKQEAgLTYxNCw4ICs2
MTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVBybwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1
dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6
OmNyZWF0ZSgqdGhpcywgb3JpZ2luLmNvcHlSZWYoKSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQob3JpZ2luLmNvcHlSZWYoKSwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBzZWN1cml0eU9y
aWdpbiwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5h
ZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRy
KCkpOwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3
V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CkBAIC05OTAsNyArOTg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2VzcykpIHsKLSAg
ICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFr
ZSgmZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLm9yaWdpbigp
KTsKKyAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMudGFrZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykuc2Vj
dXJpdHlPcmlnaW4oKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJl
bW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9u
cygpOwogICAgIH0KQEAgLTE4NzgsOSArMTg3Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNl
IHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2
aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmln
aW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1f
Zm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3Jv
dW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdp
bikpCisgICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhy
b3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFy
KCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODg4LDkgKzE4ODcsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0
aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZv
ciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
dmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2Vy
UHJvY2Vzcy0+b3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAg
ICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFk
ZCgmb3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMo
c2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChzZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtl
clByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDU3ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVmMzY4
MTBiMTU4MDA1ZC4uODk1ZmMzMzY5ODBhOGIzZDM4NzI1MDAwNmM0MTZjODhiYzI1ZWEwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zMzUsNyArMzM1LDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+KTsKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIGNvbnN0
IEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQ
cm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAg
dm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxv
d3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7
IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9
CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1By
b3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4s
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdG
b3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsg
ZmFsc2UgfTsKQEAgLTY3Nyw4ICs2NzcsOCBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRs
ZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1By
b2Nlc3M7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9i
YWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBQcm9jZXNz
VGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBt
X2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nl
czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNlbmRpZgogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336455</attachid>
            <date>2018-03-23 21:37:03 -0700</date>
            <delta_ts>2018-03-23 21:49:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323213701.patch</filename>
            <type>text/plain</type>
            <size>127990</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggOWMxY2MzODBhMTFhYzZk
MzgxNGY3MzQxMmJhMDE0ODEwZjAwYzllNy4uZmYyOTM4OTk3MDZkZTg5NWNlZjc1MDNjMGU4NTdm
YWQyZmUxMjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7
CiAKICAgICAvLyBSZXR1cm4gdGhlIHF1b3RhLCBvciBpZiBpdCB3YXMgbnVsbCB0aGUgZGVmYXVs
dC4KQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxj
dWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZwogICAgIGlmIChz
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVf
Uk9XKSB7CkBAIC01MDEsNyArNTAxLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnMKICAgICBp
ZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAg
aWYgKGV4Y2x1ZGluZ0NhY2hlSWRlbnRpZmllciAhPSAwKQogICAgICAgICBzdGF0ZW1lbnQuYmlu
ZEludDY0KDIsIGV4Y2x1ZGluZ0NhY2hlSWRlbnRpZmllcik7CiAgICAgaW50IHJlc3VsdCA9IHN0
YXRlbWVudC5zdGVwKCk7CkBAIC01MzcsNyArNTM3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2
NCgxLCBxdW90YSk7Ci0gICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICB1cGRhdGVTdGF0ZW1lbnQuYmluZFRleHQoMiwgb3JpZ2luLT5kYXRhKCkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogCiAgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3Rh
dGVtZW50KTsKIH0KQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBHcm91cFN0b3JhZ2VJRAog
CiAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCB1cmxIb3N0SGFzaChncm91cC0+bWFuaWZlc3RV
UkwoKSkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBncm91cC0+bWFuaWZlc3RVUkwoKSk7
Ci0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDMsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKGdyb3VwLT5vcmlnaW4oKSkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHN0
YXRlbWVudC5iaW5kVGV4dCgzLCBncm91cC0+b3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05NTcsNyArOTU3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiAgICAgaWYgKGluc2VydE9yaWdpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQuYmluZFRl
eHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaW5zZXJ0T3JpZ2lu
U3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBtX2RlZmF1bHRPcmlnaW5RdW90YSk7CiAgICAgaWYgKCFl
eGVjdXRlU3RhdGVtZW50KGluc2VydE9yaWdpblN0YXRlbWVudCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzMWZiOTVjNGM2MjI2ZGFlN2M3
MTllMGM4MTJhYTIwNmNhYjAzNmYxLi4yZDQyM2NmNGZkMzY1MjIwOTVhNDhiMzRhNzljZDBiOGNm
ZTc0MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04NzQsNyArODc0LDcgQEAg
RXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoKSBjb25zdAog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN0b3Jh
Z2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEoU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsK
KyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFy
ZWEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKICAgICBtX3Nlc3Npb25TdG9y
YWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIFdURk1vdmUoc3RvcmFnZUFyZWEpKTsKICAg
ICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKaW5kZXggNmQyMzBiOWMzODAyNzY2OWQ1OGY5NGQ4ZjMyZDgzZTQzOTNk
ZDllMi4uNjkzZThmOTE1NjcyYzdkNTNlZTliNzM2NzM4NGFiZTBmMjJhODhmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTE0NSwxNSArMTQ1LDEzIEBAIGJvb2wg
c2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoY29uc3QgVVJMJiB1cmwpCiB9CiAK
IFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKLSAgICA6IG1f
cHJvdG9jb2wgeyB1cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfQotICAgICwg
bV9ob3N0IHsgdXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfQotICAgICwgbV9wb3J0IHsgdXJsLnBvcnQoKSB9
CisgICAgOiBtX2RhdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHVybCkpCiB7Ci0gICAg
Ly8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2hvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRo
ZSBET00uCi0gICAgbV9kb21haW4gPSBtX2hvc3Q7CisgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0
YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KKyAgICBtX2Rv
bWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wobV9wb3J0LnZhbHVlKCksIG1fcHJvdG9jb2wpKQotICAgICAgICBtX3BvcnQgPSBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgICAgICBtX2Rh
dGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwg
U2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBtX2NhbkxvYWRM
b2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTE2Niw4ICsxNjQsNyBAQCBTZWN1cml0eU9y
aWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB9CiAKIFNlY3VyaXR5T3JpZ2lu
OjpTZWN1cml0eU9yaWdpbigpCi0gICAgOiBtX3Byb3RvY29sIHsgZW1wdHlTdHJpbmcoKSB9Ci0g
ICAgLCBtX2hvc3QgeyBlbXB0eVN0cmluZygpIH0KKyAgICA6IG1fZGF0YSB7IGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCksIHN0ZDo6bnVsbG9wdCB9CiAgICAgLCBtX2RvbWFpbiB7IGVtcHR5
U3RyaW5nKCkgfQogICAgICwgbV9pc1VuaXF1ZSB7IHRydWUgfQogICAgICwgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgeyBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlllcyB9CkBAIC0xNzUs
MTEgKzE3Miw5IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbigpCiB9CiAKIFNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCi0g
ICAgOiBtX3Byb3RvY29sIHsgb3RoZXItPm1fcHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCkgfQotICAg
ICwgbV9ob3N0IHsgb3RoZXItPm1faG9zdC5pc29sYXRlZENvcHkoKSB9CisgICAgOiBtX2RhdGEg
eyBvdGhlci0+bV9kYXRhLmlzb2xhdGVkQ29weSgpIH0KICAgICAsIG1fZG9tYWluIHsgb3RoZXIt
Pm1fZG9tYWluLmlzb2xhdGVkQ29weSgpIH0KICAgICAsIG1fZmlsZVBhdGggeyBvdGhlci0+bV9m
aWxlUGF0aC5pc29sYXRlZENvcHkoKSB9Ci0gICAgLCBtX3BvcnQgeyBvdGhlci0+bV9wb3J0IH0K
ICAgICAsIG1faXNVbmlxdWUgeyBvdGhlci0+bV9pc1VuaXF1ZSB9CiAgICAgLCBtX3VuaXZlcnNh
bEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcyB9CiAgICAgLCBtX2RvbWFpbldhc1Nl
dEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00gfQpAQCAtMjI4LDcgKzIyMyw3IEBA
IGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpIGNvbnN0CiAg
ICAgLy8gVGhpcyBjb2RlIGlzIHVzaW5nIGFuIGVudW0gaW5zdGVhZCBvZiBhbiBzdGQ6Om9wdGlv
bmFsIGZvciB0aHJlYWQtc2FmZXR5LiBXb3JzdCBjYXNlIHNjZW5hcmlvLCBzZXZlcmFsIHRocmVh
ZCB3aWxsIHJlYWQKICAgICAvLyAnVW5rbm93bicgdmFsdWUgY29uY3VycmVudGx5IGFuZCB0aGV5
J2xsIGFsbCBjYWxsIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkgYW5kIGdl
dCB0aGUgc2FtZSByZXN1bHQuCiAgICAgaWYgKG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID09
IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6VW5rbm93bikKLSAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX3By
b3RvY29sLCBtX2hvc3QpID8gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXMgOiBJc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHk6Ok5vOworICAgICAgICBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRo
eSA9IHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KG1fZGF0YS5wcm90b2NvbCwg
bV9kYXRhLmhvc3QpID8gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXMgOiBJc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHk6Ok5vOwogICAgIHJldHVybiBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRo
eSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlllczsKIH0KIApAQCAtMjc3LDkgKzI3Miw5
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBTZWN1cml0eU9yaWdpbiYg
b3RoZXIpIGNvbnN0CiAgICAgLy8gdGhpcyBpcyBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuCiAK
ICAgICBib29sIGNhbkFjY2VzcyA9IGZhbHNlOwotICAgIGlmIChtX3Byb3RvY29sID09IG90aGVy
Lm1fcHJvdG9jb2wpIHsKKyAgICBpZiAobV9kYXRhLnByb3RvY29sID09IG90aGVyLm1fZGF0YS5w
cm90b2NvbCkgewogICAgICAgICBpZiAoIW1fZG9tYWluV2FzU2V0SW5ET00gJiYgIW90aGVyLm1f
ZG9tYWluV2FzU2V0SW5ET00pIHsKLSAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXIubV9o
b3N0ICYmIG1fcG9ydCA9PSBvdGhlci5tX3BvcnQpCisgICAgICAgICAgICBpZiAobV9kYXRhLmhv
c3QgPT0gb3RoZXIubV9kYXRhLmhvc3QgJiYgbV9kYXRhLnBvcnQgPT0gb3RoZXIubV9kYXRhLnBv
cnQpCiAgICAgICAgICAgICAgICAgY2FuQWNjZXNzID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlm
IChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLm1fZG9tYWluV2FzU2V0SW5ET00pIHsKICAg
ICAgICAgICAgIGlmIChtX2RvbWFpbiA9PSBvdGhlci5tX2RvbWFpbikKQEAgLTM2Myw3ICszNTgs
NyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKG1f
cHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgpICYmICFGaWxlU3lzdGVtOjpm
aWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgpKSkKKyAg
ICBpZiAobV9kYXRhLnByb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0zNzYsNyArMzcx
LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29u
c3QKICAgICAgICAgcmV0dXJuIGNhblJlcXVlc3QodXJsKTsKIAogICAgIGlmIChTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChwcm90b2NvbCkpCi0g
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fcHJvdG9jb2wsIHByb3RvY29s
KSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMsIHVybCk7
CisgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGF0YS5wcm90b2NvbCwg
cHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhp
cywgdXJsKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6cmVzdHJpY3RBY2Nlc3NUb0xvY2Fs
KCkgJiYgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChwcm90b2Nv
bCkpCiAgICAgICAgIHJldHVybiBjYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSB8fCBTZWN1cml0eVBv
bGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMsIHVybCk7CkBAIC00NjEsNyArNDU2
LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNv
bnN0CiAgICAgaWYgKGlzSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCi0g
ICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZSht
X3Byb3RvY29sKSkKKyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hl
Rm9yVVJMU2NoZW1lKG1fZGF0YS5wcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBob3N0KCk7CiAK
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTQ3NSwzNSArNDcwLDIxIEBAIHZvaWQgU2Vj
dXJpdHlPcmlnaW46OnNldEVuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKCkKIAogYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNMb2NhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwobV9wcm90b2NvbCk7CisgICAgcmV0dXJuIFNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwobV9kYXRhLnByb3RvY29s
KTsKIH0KIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAg
aWYgKGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm51bGwiKTsKLSAg
ICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlv
bikKKyAgICBpZiAobV9kYXRhLnByb3RvY29sID09ICJmaWxlIiAmJiBtX2VuZm9yY2VzRmlsZVBh
dGhTZXBhcmF0aW9uKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsIik7CiAgICAg
cmV0dXJuIHRvUmF3U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdT
dHJpbmcoKSBjb25zdAogewotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIikKLSAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZmlsZTovLyIpOwotCi0gICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsgbV9o
b3N0Lmxlbmd0aCgpICsgMTApOwotICAgIHJlc3VsdC5hcHBlbmQobV9wcm90b2NvbCk7Ci0gICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIjovLyIpOwotICAgIHJlc3VsdC5hcHBlbmQobV9ob3N0KTsK
LQotICAgIGlmIChtX3BvcnQpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fcG9ydC52YWx1ZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZGF0YS50b1N0cmluZygpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlT3JpZ2luc01hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4xLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMikKQEAgLTU1Miw3ICs1
MzMsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0
ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7CiAgICAgaWYgKHBv
cnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQotICAgICAg
ICBvcmlnaW4tPm1fcG9ydCA9IHBvcnQ7CisgICAgICAgIG9yaWdpbi0+bV9kYXRhLnBvcnQgPSBw
b3J0OwogICAgIHJldHVybiBvcmlnaW47CiB9CiAKQEAgLTU3NSwxMyArNTU2LDcgQEAgYm9vbCBT
ZWN1cml0eU9yaWdpbjo6ZXF1YWwoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdAog
CiBib29sIFNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1faG9zdCAhPSBvdGhlci5tX2hvc3Qp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3Byb3RvY29sICE9IG90aGVyLm1f
cHJvdG9jb2wpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3BvcnQgIT0gb3Ro
ZXIubV9wb3J0KQorICAgIGlmIChtX2RhdGEgIT0gb3RoZXIubV9kYXRhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoaXNMb2NhbCgpICYmICFwYXNzZXNGaWxlQ2hlY2sob3RoZXIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDY0ODFhMzg4MmMxZGVkMWRh
OTFlMzQzNWI0YTAyY2IzZTUzMzBmNTAuLjZlNzkwOTAwNmM4YjIyYzE2MWZmZGVlM2RmZmE0MGVm
YmRmM2RjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIK
ICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNzgsMTAgKzc5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERvbWFpbkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pOwogICAgIGJvb2wgZG9tYWlu
V2FzU2V0SW5ET00oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbldhc1NldEluRE9NOyB9CiAKLSAg
ICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQot
ICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQorICAgIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBtX2RhdGEucHJvdG9jb2w7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaG9zdDsgfQog
ICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5wb3J0OyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSBnaXZlbiBVUkwgaXMgc2VjdXJl
LCBiYXNlZCBlaXRoZXIgZGlyZWN0bHkgb24gaXRzCiAgICAgLy8gb3duIHByb3RvY29sLCBvciwg
d2hlbiByZWxldmFudCwgb24gdGhlIHByb3RvY29sIG9mIGl0cyAiaW5uZXIgVVJMIgpAQCAtMjA1
LDYgKzIwNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzTG9jYWxIb3N0T3JMb29w
YmFja0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmIGhvc3QpOwogCisgICAgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKIHByaXZhdGU6CiAg
ICAgU2VjdXJpdHlPcmlnaW4oKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBV
UkwmKTsKQEAgLTIxNSwxNiArMjE4LDE0IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGlzIG1ldGhv
ZCBjaGVja3MgdGhhdCB0aGUgc2NoZW1lIGZvciB0aGlzIG9yaWdpbiBpcyBhbiBIVFRQLWZhbWls
eQogICAgIC8vIHNjaGVtZSwgZS5nLiBIVFRQIGFuZCBIVFRQUy4KLSAgICBib29sIGlzSFRUUEZh
bWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2wgPT0gImh0dHAiIHx8IG1fcHJvdG9jb2wg
PT0gImh0dHBzIjsgfQorICAgIGJvb2wgaXNIVFRQRmFtaWx5KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLnByb3RvY29sID09ICJodHRwIiB8fCBtX2RhdGEucHJvdG9jb2wgPT0gImh0dHBzIjsgfQog
ICAgIAogICAgIGVudW0gU2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSB7IEFsd2F5c0FsbG93RnJv
bVRoaXJkUGFydHksIE1heWJlQWxsb3dGcm9tVGhpcmRQYXJ0eSB9OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShjb25zdCBTZWN1cml0eU9yaWdpbiosIFNob3VsZEFs
bG93RnJvbVRoaXJkUGFydHkgPSBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkpIGNvbnN0OwogCi0g
ICAgU3RyaW5nIG1fcHJvdG9jb2w7Ci0gICAgU3RyaW5nIG1faG9zdDsKKyAgICBTZWN1cml0eU9y
aWdpbkRhdGEgbV9kYXRhOwogICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICBTdHJpbmcgbV9maWxl
UGF0aDsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CiAgICAgYm9vbCBtX2lz
VW5pcXVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdW5pdmVyc2FsQWNjZXNzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET00geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU5MGFiODIxZjc4ZmQ1NTZmZjU2ODdk
MzBlOWYyZjc2MGIzOTY0YmEuLjNjNGZmMGJiN2E2ODZmZjlkMDE1ZmZhZWU5YzZlMjJlZGVkOWE2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTM3
LDMyICszNywyNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQotewotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGE7Ci0KLSAgICBzZWN1cml0eU9yaWdp
bkRhdGEucHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIHNlY3VyaXR5
T3JpZ2luRGF0YS5ob3N0ID0gc2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgIHNlY3VyaXR5T3Jp
Z2luRGF0YS5wb3J0ID0gc2VjdXJpdHlPcmlnaW4ucG9ydCgpOwotCi0gICAgcmV0dXJuIHNlY3Vy
aXR5T3JpZ2luRGF0YTsKLX0KLQogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmco
KSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwg
IjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7CisgICAgaWYgKHByb3RvY29s
ID09ICJmaWxlIikKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZmlsZTovLyIpOworCisg
ICAgaWYgKCFwb3J0KQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjovLyIs
IGhvc3QpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgJzon
LCAqcG9ydCk7CiB9CiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luRGF0YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
IHsgfTsKICAgICAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1l
bnQpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luRGF0YSB7IH07CiAKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJl
dHVybiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CiB9CiAKIFJlZjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW5EYXRhOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCA1ZjU1Zjk0MmI4MWZjZmUw
MGJmZDQzYmMxMDk5NmYzY2RjMjQ3MTVkLi43OTkwMjM5YzhkZGFjMjM5YmIzOTJiZTQ0ZWM0MjJj
MDMxNTJiYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
NSw4ICs0NSwxNSBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICB7CiAgICAgfQog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbVNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tRnJhbWUoRnJhbWUqKTsKKyAgICBzdGF0aWMg
U2VjdXJpdHlPcmlnaW5EYXRhIGZyb21VUkwoY29uc3QgVVJMJiB1cmwpCisgICAgeworICAgICAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsKKyAgICAgICAgICAgIHVybC5wcm90b2NvbCgp
LmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSwKKyAgICAgICAgICAgIHVybC5ob3N0KCkuaXNOdWxsKCkg
PyBlbXB0eVN0cmluZygpIDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLAor
ICAgICAgICAgICAgdXJsLnBvcnQoKQorICAgICAgICB9OworICAgIH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
CmluZGV4IDhjNGFmNDJmOGFhMTk1YjNjNmYyYzE0NWMyODhjODBkZDI4OTRhOTQuLjY5YzFiMzM1
MzA4YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3Rv
cmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW4KICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1l
c3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNw
YWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAK
IFN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYThhNTJl
ZGM5ZTdiN2I1YzhjMjdkY2JjMGNjNjYyYjhkYWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3
MmI0MTRkMTAzOGRmZjJmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC00MzI0LDcgKzQzMjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAo
IW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENs
aWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3Vt
ZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50
b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMjUwMTE0ZWYyNTBlZmZh
NGU0NmQ5ZDE2MTYzNzQ5NWU1ZDllMmQ0OS4uYWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0
N2NhZjNkNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImFkZFJlZ2lzdHJhdGlvbjogUmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIg
UFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpv
YkRhdGEudG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
Y29udGV4dC0+dG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+
dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpSZWdpc3RlcjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25z
OwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1v
dmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNl
cnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50
Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigp
KTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsK
ICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAg
ICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNj
b3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1f
c3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRp
ZmllcigpKTsKICAgICBqb2JEYXRhLmNsaWVudENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsK
LSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29u
dGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlVwZGF0ZTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAg
am9iRGF0YS5zY3JpcHRVUkwgPSBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5j
cHAKaW5kZXggYjg0YzY2ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0
NmIyM2RiOTNlMzU2ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmNwcApAQCAtNzcsMTMgKzc3LDEyIEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleTo6b3JpZ2luSXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAg
ICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUp
OwogfQogCi1ib29sIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BP
cmlnaW4gPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0
byBzY29wZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0
dXJuIHNjb3BlT3JpZ2luLT5pc1NhbWVPcmlnaW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21VUkwobV9zY29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAK
IHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5oCmluZGV4IDIzOWEzMDBiMTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1
ZmIuLjcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJM
JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVS
TCYmIHNjb3BlKSB7IG1fc2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxh
dGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0
ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUu
Y3BwCmluZGV4IDVlYTQ1Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZi
MTYxY2U4Yzg0ODVkNTYyNjJlYjZhYzY3MTQxNGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAt
MzIsMTcgKzMyLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0
b3JlOjphZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9y
ZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmln
aW5Db3VudHMuZW5zdXJlKG9yaWdpbi50b1N0cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5D
b3VudHMuZW5zdXJlKG9yaWdpbiwgWyZdIHsKICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dP
cmlnaW5TdG9yZTo6cmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNX
T3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vcmlnaW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmco
KSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAg
ICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVy
YXRvciA9PSBtX29yaWdpbkNvdW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSAr
NTQsOSBAQCB2b2lkIFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYg
b3JpZ2luKQogICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2lu
U3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2lu
U3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1f
b3JpZ2luQ291bnRzLnJlbW92ZShvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3Vu
dHMucmVtb3ZlKG9yaWdpbik7CiAgICAgcmVtb3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5T
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0
b3JlLmgKaW5kZXggZTExZTQ1MTFmZTE5ODA4ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uY2Iy
OGIzOTQxOTkyOWZjMmRhZDRlYjdiZDdkZWNlZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3
LDMyICsyNywyOSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNz
IFNXT3JpZ2luU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgflNXT3JpZ2luU3RvcmUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChj
b25zdCBTZWN1cml0eU9yaWdpbiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJik7Ci0gICAgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQg
YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJik7CiAgICAgdm9pZCBjbGVhckFsbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENv
bXBsZXRlKCkgPSAwOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3Rv
cmUoY29uc3QgU2VjdXJpdHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3Rv
cmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhclN0b3JlKCkgPSAwOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBt
X29yaWdpbkNvdW50czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+
IG1fb3JpZ2luQ291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBi
ZWVmMGUzMWMyNzFhOWFjYTY1YTlkMTNiNzk3MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdm
M2FjODExMWQ4YTQ3MzRhZTBiNGRiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9p
ZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlv
bnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRy
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7
CiAKLSAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2lu
KCkpOworICAgIG1fb3JpZ2luU3RvcmUtPmFkZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lk
IFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYga2V5KQogewotICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAg
ICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFT
U0VSVChyZWdpc3RyYXRpb24pOwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9u
c0J5SUQucmVtb3ZlKHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1
LDI5IEBAIHZvaWQgU1dTZXJ2ZXI6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAg
bV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVm
KG9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgeworICAgICAgICBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIHNlY3VyaXR5T3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENv
bXBsZXRlZCk7Ci0gICAgICAgICAgICBjbGVhcihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgICAgIGNsZWFyKHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgbV9qb2JRdWV1ZXMucmVtb3ZlSWYoWyZdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAg
IHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAg
IHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICB9KTsKIAogICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlv
bnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25z
KSB7Ci0gICAgICAgIGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikp
CisgICAgICAgIGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKSkKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFs
dWUudmFsdWUuZ2V0KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDog
bV9wZW5kaW5nQ29udGV4dERhdGFzLnZhbHVlcygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5y
ZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgY29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4p
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRl
c1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgs
MTAgKzQ5OCwxMCBAQCB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0
cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsK
LSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwp
OwotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5k
aW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9w
ZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewog
ICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTEyLDExICs1MTIsMTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFs
bENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dT
ZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4
dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9y
aWdpbigpKTsKKyAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0
RGF0YXMudGFrZShjb250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3Ig
KGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4
dERhdGEoZGF0YSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2Vy
dmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsK
KyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJl
cXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9y
IChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wg
c3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKQEAgLTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2
ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1p
bmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNG
b3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQg
U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29y
a2VyKj4gdGVybWluYXRlZFdvcmtlcnM7CiAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5p
bmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlz
U2FtZVNjaGVtZUhvc3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlm
ICh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAg
ICB0ZXJtaW5hdGVkV29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9y
IChhdXRvJiB0ZXJtaW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyAr
Nzc5LDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVy
bWluYXRlV29ya2VyKHdvcmtlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdp
bikpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2lu
KGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLT5jb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBA
IC04MDUsOSArODA1LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRv
Q29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0K
IAotYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1
cml0eU9yaWdpbi5jb250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlu
cyhzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXgg
NjA2ZGI0NmFkMDI3Y2YxYmM1NWFmNzcxYjg4MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUy
NmVmYzg0NzY0Nzk3ZmVmYTZhYjIwZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAj
aW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2gu
aCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJBbGwoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2
aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4m
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJt
aW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24q
IGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7
IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3Rv
cmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3
Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVn
aXN0cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiYmKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjks
OCArMjI5LDggQEAgcHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29y
aWdpblN0b3JlOwogICAgIFJlZ2lzdHJhdGlvblN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0g
ICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPj4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1
blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAg
ICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2lu
RGF0YSwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VX
b3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25EZWxheSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKaW5kZXggNmFhNWEyYTlmYmQyMzY2MzliNTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3
MmYzMmY1YjEwMTkxODFiNzdlMWU5Njg4YzE5MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MCwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQK
ICAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXJUeXBlPigpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlv
bnNCeU9yaWdpbigpCitzdGF0aWMgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbio+PiBjb25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25u
ZWN0aW9uc0J5T3JpZ2luOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmll
cihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBt
X29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFk
ZChtX29yaWdpbi5jb3B5UmVmKCksIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVj
dGlvbnNCeU9yaWdpbigpLmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8g
cmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7
CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2Vj
dXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxT
ZWN1cml0eU9yaWdpbiY+KG9yaWdpbikpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3Jp
Z2luKCkuZ2V0KHNlY3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEw
MmJjNTI1YjcwZDA1MzRlN2Y3MTBhNDRmMjU5OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUz
OGNkZDg3Zjg1ZDg5ZWM4MmViNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAot
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5
cGVzLmgiCkBAIC03NCwxOCArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogY29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0
YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkg
eyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAg
U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEw
NjU5MWRhNDA3ZDcxOWUuLjE1OWJjZTY2OWYxY2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtl
cjo6dGVybWluYXRlKCkKIGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdp
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29yaWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGll
bnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2Ny
aXB0VVJMKSkgfTsKKyAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJh
dGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5z
Y3JpcHRVUkwpIH07CiAKICAgICByZXR1cm4gKm1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlP
cmlnaW4+IFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7Cisg
ICAgcmV0dXJuIG9yaWdpbigpLmNsaWVudE9yaWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBTV1NlcnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CmluZGV4IGNjMDc1OWM2MTZlZjhlODI0YTI3ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAw
YWFiOWViMDFiZTRjYjhjNGRkMGFiMWI2M2ZkODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3
ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHRE
YXRhKCkgY29uc3Q7CiAKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKaW5kZXggMGU3ZDgwY2JmODVlYjFkYWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcxZC4uMDE3
MmMzYjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKICAgICBpZiAoc291cmNlT3Jp
Z2luKQotICAgICAgICBlbmNvZGVyIDw8IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKCpzb3VyY2VPcmlnaW4pOworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZU9yaWdpbi0+
ZGF0YSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNz
cFJlc3BvbnNlSGVhZGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCAzYzRiNDI0NmU4MTIwODdiMzBlMzZiYWZjMTY4
ZWY0NjYzYzcwYThiLi5iY2Y5NTVhNjZjYjc2ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNkMTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVm
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmln
aW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvcwogCiBXS1N0cmlu
Z1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwoc2VjdXJpdHlP
cmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0
dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0
eU9yaWdpbkNvcHlUb1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDlkY2FkOTRiZmYyMjZkNGEwOWUwMmUw
YzFhNTAyMTdiNWExYTBjZjguLjA0Y2JmMjFiM2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0ODdlOTlk
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV09yaWdpblN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBX
ZWJTV09yaWdpblN0b3JlOjpXZWJTV09yaWdpblN0b3JlKCkKIHsKIH0KIAotdm9pZCBXZWJTV09y
aWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lk
IFdlYlNXT3JpZ2luU3RvcmU6OmFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hlZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFyZWRTdHJp
bmdIYXNoKG9yaWdpbi50b1N0cmluZygpKSk7CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRpbmdDaGFu
Z2VzKCk7CiB9CiAKLXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZy
b21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBtX3N0b3Jl
LnNjaGVkdWxlUmVtb3ZhbChjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmco
KSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdp
blN0b3JlLmgKaW5kZXggN2Y4Yzk4NzExYzI1ZGFlODZmZWJlZmMwODhjMDliNTI4OWYxN2ZmOS4u
MmQyOWY1NjA5NTg0ZjEwMjA5ZTgwNmNkMTA2YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dPcmln
aW5TdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwog
Ci0gICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmlu
YWw7Ci0gICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mKSBmaW5hbDsKKyAgICB2b2lkIGFkZFRvU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0b3JlKCkgZmlu
YWw7CiAKICAgICAvLyBTaGFyZWRTdHJpbmdIYXNoU3RvcmU6OkNsaWVudC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5MDYwZTVk
NDc0MzNhNWNmNTMwMzZkNS4uMzhjMzk5MWVlZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGExNmRhNmUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEp
CiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9i
RGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3JpcHRVUkwpOwogICAgIGlmICghU3RvcmFnZVByb2Nl
c3M6OnNpbmdsZXRvbigpLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pKQogICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vzc2lvbklE
KCkpOwogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Omdl
dFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKIAogdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1
cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0
YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoZGF0YS51cmwpKSB9OworICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2lu
IHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51
cmwpIH07CiAgICAgbV9jbGllbnRPcmlnaW5zLmFkZChkYXRhLmlkZW50aWZpZXIsIGNsaWVudE9y
aWdpbik7CiAgICAgc2VydmVyKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUo
Y2xpZW50T3JpZ2luKSwgV1RGTW92ZShkYXRhKSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQw
NTEzNDZmOTk4MmQ4OGQuLjAwYjdmYzdjODM5OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4MThhZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCkBAIC0zNyw4ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKFdURk1vdmUob3JpZ2luKSkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBj
Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJiMTBiZGVmOTJjZWZhNTYy
YTc4ZDhmOTUyMWRjMzhlNzFkYmM2N2IuLmU5YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdjMzE4MmMz
MjhkOTk1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7
CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmNwcAppbmRleCBkZDQ4OGM2ZmRmZjgxYzY2MjViYjkxMGQyMDc4MzVjMjE2ODllYTRkLi5m
ODU3MjRlYTZmZTZmYzU4ZTliZDQ0MmIxMWMxMDZmYTczZGU2NzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTEzLDIzICsxMTMs
MjQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nlc3M6
OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBhdXRv
JiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5T3Jp
Z2luKCk7CisKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2Vk
KCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDog
bV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zv
ck9yaWdpbkFzVGVybWluYXRlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7
CisgICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChz
ZWN1cml0eU9yaWdpbik7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkgeworICAgIGlmIChuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHBy
b2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwot
ICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9y
aWdpbiwgc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luKSBjb25zdAorYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsm
XShhdXRvJiBzd1NlcnZlcikgewotICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pOworICAgICAgICByZXR1cm4gc3dT
ZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9y
aWdpbik7CiAgICAgfSk7CiB9CiAjZW5kaWYKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1UYXNr
KCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNFKFVO
SVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tl
dFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAt
Mjc0LDkgKzI3NSw4IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2Vydmlj
ZVdvcmtlclByb2Nlc3MgJiYgIW1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1w
dHkoKSkgewogICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCgpKTsKICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFBy
b2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShv
cmlnaW4pLCBjb250ZXh0Q29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGNvbnRl
eHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoc2Vj
dXJpdHlPcmlnaW4sIG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29u
bmVjdGlvbigpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25zLmFkZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24u
Y29weVJlZigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIAogICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbiA9IGZhbHNlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpCiAjZW5kaWYKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2luRGF0YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRE
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoY2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0ICsz
NDgsMTQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0
YSA6IHNlY3VyaXR5T3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2lu
RGF0YS5zZWN1cml0eU9yaWdpbigpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdp
biA6IHNlY3VyaXR5T3JpZ2lucykKKyAgICAgICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0eU9y
aWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBpZiAoIXdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMpKQotICAgICAgICBpZGJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVn
YXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2Vy
dmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5
T3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9y
KV0geyB9KTsKICNlbmRpZgogfQogCkBAIC00NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdpblN0
b3JlJiBTdG9yYWdlUHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkub3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikK
K1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5n
ZXQoJmNvbnN0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lk
IFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Np
b25JRCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2
ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAg
ICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSwgKnNlc3Npb25JRCksIDApOworICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NG
b3JFeHBsaWNpdFNlc3Npb24oc2VjdXJpdHlPcmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAgICBl
bHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2VzcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4p
KSwgMCk7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2VzcyhzZWN1cml0eU9yaWdpbiksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkaWRGYWlsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1ICs1
MzcsMTUgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlv
bihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6
c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIG9y
aWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8mIHNl
Y3VyaXR5T3JpZ2luID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigp
OworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5h
dGluZyBpdCIpOwogICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CiAK
ICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQg
U3RvcmFnZVByb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmlu
ZGV4IGQxMmZlMzE2ZTlmMjYxNzlmNzQ1NGE3MWM3OWM5ZmZhMzljMDZiYzkuLjIwNzhhMTMxMDcz
OTg1OGNjNGIyN2MyYzViMzE3M2NjNWY0YTllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlE
QkRhdGFiYXNlLmg+CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFNXU2VydmVyOwogY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVjdCBN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1
Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDggQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgc3Rk
OjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9y
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVj
dGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgp
OwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQpOwotICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJikgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmln
aW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBAIC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24+PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGlu
Z0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZh
bHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQ
YXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUlu
Zm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5k
ZXggMDMxOWU1YWVkM2ZmYzBhMzcwOWQ0Zjc1ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNkMTc4NTQ0
NWMzOTczM2IyZjA0OGE2MGYyMDIxNTA4YzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1lSW5mbz4g
RnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29u
c3QgV2ViQ28KICAgICBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJh
bWUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2Yg
dGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgogICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChmcmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0
YS5zZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3Jp
Z2luID0gc2VjdXJpdHlPcmlnaW4uZGF0YSgpOwogICAgIGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9
IGZyYW1lLmZyYW1lSUQoKTsKIAogICAgIHJldHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0YSwgZnJh
bWUucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4YjkzZDg1
YTEzYjdjNTk2NzU3Yjg0Mzk2MDAwMS4uZWU4N2FjMTkxNTA2MDZiNGViODNhODNkZDdhZjNiMjdi
MDI3NzgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyUmUKICAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJl
aW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRh
UmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29y
ZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgdG9JbXBs
KG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgIHdlYnNpdGVEYXRhU3Rv
cmUucmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYx
MGQ2MzMxZDdiN2Q1MjJkNzVhNDRiM2YzNjQ1MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1MjI1Yjlk
OWRkMjRlZjgxZmE4YWY3NTNhMzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9y
aWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2Vy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9y
YWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHN0b3Jh
Z2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggMjNhYTRkMTNkNDEzM2Zk
ZTg5YmU0ZGMwYzE0ZWI5OTgwZjhhOWU4Mi4uNmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5MGRkZDlm
ZmIxMWI1ODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIFdL
UmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1h
bmFnZXJSZWYgY2FjaGVNYQogCiAgICAgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRh
UmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNh
Y2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0lt
cGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBkYXRhUmVjb3JkLmFkZChX
ZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkpOwogCiAgICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsK
ICAgICB9CiAKICAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVh
ckFsbCkgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBk
YXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNr
Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICAg
ICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmlu
ZGV4IDY2NTBiNTgzNWQzZjc3ZDYzNTA1YjBkMjIzNTMyNmUzMGYyYWQzNWEuLjVjOTA1Y2MwOTUw
NTEyOWNkNDY3MjhiOGViMzQwZWIyM2RiMzUyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDM2LDcg
KzQzNiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAg
ICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5h
ZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkRPTUNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRz
ID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNo
ZTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2Fj
aGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktp
dDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzOwogCiAgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4
dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGF0
YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKSk7CisgICAgICAgIGF1dG8mIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJp
bmcoKSkuZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3Jk
cykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4gOiBkYXRhUmVj
b3JkLm9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAob3JpZ2luRGF0YSA9PSByZWNvcmRP
cmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FlZWVjM2IxMjY0MTYwMjU3YzcwNTljODk3MWVkZmQ0
MjMwOTU3Ni4uYjYxOTA0YzA4OTlhMzgxZDQxYzMyZDM2NDMyYzk3NTk3YzU2ODE4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorUmVmPFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0
UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2wsIFdURk1vdmUob3JpZ2lu
KSwgc3RvcmUgfSk7CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSB7IHBvb2wsIHNlY3VyaXR5T3JpZ2luLCBzdG9yZSB9KTsKICAgICBwcm94
eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KIAotU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCitT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlBy
b2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKICAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2ws
IHN0b3JlIH0KLSAgICAsIG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAsIG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQoZ2Vu
ZXJhdGVQYWdlSUQoKSkKIHsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0
aW9ucyYKICAgICBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9u
cyk7CiAKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJ
SUxpdGVyYWwoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIxIikpOwot
ICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJh
bCgic2VjdXJpdHktb3JpZ2luIiksIG9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHkt
b3JpZ2luIiksIHNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMWM3NzBiMWFkOTM1ZjQ2OTRlOGNjMDZiM2MyZGU1ZjdkOTYxMTgwNS4uMzM1MWI3NDA5
NGJlNDdlODMwZTM5N2M0MDY4MWJhYTA4Mjk4YjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtMjgsNyArMjgsNyBA
QAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IGZpbmFs
IDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVm
PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICB+
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOwogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbigpIHsg
cmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KICAg
ICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7
IH0KIAogcHJpdmF0ZToKQEAgLTU2LDkgKzU2LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBtX29yaWdpbjsKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1
cml0eU9yaWdpbjsKICAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5ZTc4OGY0NzQ3MGU2ZTRlYWIxZmZhOTEwNTM1YmIwOTc3
M2JhMzIwLi41NGEwNzkyOWJlYjg1YTc2YzZjMjk2Zjg0YmQ4Njg0OWZlNGNhZDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5jcHAKQEAgLTEyMiwxNSArMTIyLDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6
Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAg
ICAgfQogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgU2Vj
dXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlP
cmlnaW47CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7CiAgICAgICAgIGlzU2VydmljZVdv
cmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3
ZWJQcm9jZXNzUHJveHkpLm9yaWdpbigpKTsKKyAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNlY3VyaXR5
T3JpZ2luKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2Vy
UHJvY2Vzcywgb3JpZ2luKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VXb3JrZXJQ
cm9jZXNzLCBzZWN1cml0eU9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM1MWJmNmFiMjZiNmVlZmQ4M2ZhOTYyN2E4ZTRj
NzY2MjFhMDdmNjYuLjJkZTdkYmEyOGJjODJlMDJjMTI2MDJmMGRmMWQ1OGMzZTQ0NzVlNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5MSwxMiAr
NTkxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9y
YWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2Vzc1ByCiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHksIFNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94eSwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0g
bV9zdG9yYWdlUHJvY2Vzcyk7CiAKLSAgICBhdXRvIG9yaWdpbiA9IG9yaWdpbkRhdGEuc2VjdXJp
dHlPcmlnaW4oKTsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKG9y
aWdpbi5wdHIoKSkpCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhz
ZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWF5SGF2ZVJlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2Vycy5jbGVhcigpOwpAQCAtNjE0LDggKzYxMyw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cyhTdG9yYWdlUHJvCiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyB7IH0pOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBvcmln
aW4uY29weVJlZigpLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmFkZChvcmlnaW4uY29weVJlZigpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0
cigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHNlY3VyaXR5T3JpZ2luLCAqd2Vic2l0ZURhdGFT
dG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQ
cm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHksICp3ZWJzaXRlRGF0YVN0b3JlKTsKQEAgLTk5MCw3ICs5ODksNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKSkgewotICAgICAgICBhdXRvKiByZW1vdmVk
UHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKCZkb3duY2FzdDxTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykub3JpZ2luKCkpOworICAgICAgICBhdXRvKiBy
ZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKS5zZWN1cml0eU9yaWdpbigpKTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MgPT0gcHJv
Y2Vzcyk7CiAgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQpAQCAtMTg3
OCw5ICsxODc3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYg
bV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBl
ciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDog
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byYgb3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPm9yaWdpbigpOwotICAgICAgICAgICAg
ICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250
YWlucygmb3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoJm9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3Mt
PnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgICAgICAgICAgICAg
IGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2Vj
dXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fYmFja2dyb3Vu
ZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE4ODgsOSArMTg4Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVBy
b2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
aXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhh
dmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29y
a2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsK
LSAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY29udGFpbnMoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VX
b3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNz
LT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisg
ICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCA0NTdmNGM0YjE0MzgwZjZlZDNjYjYyZjFjNWYzNjgxMGIxNTgwMDVkLi44OTVmYzMz
Njk4MGE4YjNkMzg3MjUwMDA2YzQxNmM4OGJjMjVlYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwogICAgIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFn
ZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgY29uc3QgSGFzaE1hcDxSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZp
Y2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
OyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dz
QW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KICAgICB2b2lkIHVwZGF0ZVNl
cnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtNTE3LDcg
KzUxNyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQ
YWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhh
c2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3NlczsKICAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0FueVNTTENlcnRpZmlj
YXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwpAQCAtNjc3LDgg
KzY3Nyw4IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICAgICBQcm9jZXNz
VGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5l
dHdvcmtQcm9jZXNzOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91
bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzOwotICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0Zv
clNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2Zv
cmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsK
ICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjMjE0M2ZkZGVjNWE2MWE0
MGU4NjVhNTZkYzk5YjBhOWIyMTExNmU4Li4wZjllOWFjMDQ0NzM5ZDkzNWE1MjgyODFlNzU0YTg2
ZGEyNmE4NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0g
ICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5IHsgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNpdGVEYXRhVHlw
ZTo6RGlza0NhY2hlLCAwIH07CisgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVu
dHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH07CiAg
ICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE8KIAogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmln
aW5zKSB7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGZldGNoT3B0aW9ucy5jb250
YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpID8gc3RvcmFnZS0+ZGlz
a1VzYWdlRm9yT3JpZ2luKCpvcmlnaW4pIDogMDsKLSAgICAgICAgICAgICAgICBXZWJzaXRlRGF0
YTo6RW50cnkgZW50cnkgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSwgc2l6ZSB9OworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7
IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlLCBzaXplIH07CiAKICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCA5M2I5MzZmZTVhMjFjNTA0ZWIz
MzFhYzE1ZTdlMzU0ZjBkMDY3NGY5Li4wMWYxMzU3YTg4NjMyNzAyN2FkMTY1ZjFmMDNlODIyMzBi
NDk1ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24KIAogICAg
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKTsKIAotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRh
dGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uSUQs
IHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkp
KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2Vs
UmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggNWIzMGYzODczOTMzYjBjMTAwNDZjMmQ2YzlmOGY4ODMw
OTBmMTVjYi4uOGY1ZDYxYmY3MWM3MjIyNmE3YjA5MWUzZGIzOTQ3OGJmZDNhZjNiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTY5Myw3ICs2OTMsNyBAQCBXS0FycmF5UmVmIFdL
QnVuZGxlUGFnZUNvcHlPcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpCiAgICAgb3JpZ2luSWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmln
aW5zLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0g
ICAgICAgIG9yaWdpbklkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlN0cmluZzo6Y3Jl
YXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmln
aW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgICAgIG9yaWdpbklkZW50aWZpZXJzLnVu
Y2hlY2tlZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKSk7CiAKICAgICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShX
VEZNb3ZlKG9yaWdpbklkZW50aWZpZXJzKSkubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggZTRkMzdhMjM2Y2NjMDJm
YjQ1ODRiNmUzNmIxYmM0OGQ5NThlNzQ0YS4uOWNjYWNlMDU3N2M3ZmJjOGZmNTcwNmJkZmFkOTNl
NDM3Y2M2ZTFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3Ry
ZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OnNlbmRVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHUKICAgICBB
U1NFUlQod2ViRnJhbWUpOwogCiAgICAgYXV0byogdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiA9IHVz
ZXJSZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRPcmlnaW4oKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJl
cXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKnVzZXJSZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCkpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxEb2N1bWVudE9yaWdp
biksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElE
LCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB1c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdp
bigpLT5kYXRhKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4tPmRhdGEoKSwgdXNlclJlcXVlc3Qu
cmVxdWVzdCgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
OjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmVu
dW1lcmF0ZU1lZGlhRGV2aWNlcyhNZWRpYURldmljZXNFbnVtZXIKIAogICAgIFNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0gcmVxdWVzdC50b3BMZXZlbERvY3VtZW50T3Jp
Z2luKCk7CiAgICAgQVNTRVJUKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pOwotICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1l
KHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKnJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKSksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BMZXZlbERvY3VtZW50T3JpZ2lu
KSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVudW1lcmF0ZU1l
ZGlhRGV2aWNlc0ZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgcmVxdWVz
dC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpLT5kYXRhKCksIHRvcExldmVsRG9jdW1lbnRPcmln
aW4tPmRhdGEoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24oV2ViQ29yZTo6TWVkaWFEZXZpY2VzRW51
bWVyYXRpb25SZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMWUyMjEy
ZTA1OGVhZTgxNDQ1NGRiZmJiZDk2ZTM1NzliZWM1MWU4Ny4uYjRhNTkzZjZlMWFmNzhmMTZkNTMz
MDEwZmE3ZDk5OWFhNWNlNzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
cihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9w
T3JpZ2luKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJ1bk9yRGVs
YXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4p
LCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CisgICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3Ro
aXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5k
YXRhKCksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nTWF0
Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0
cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CkBAIC0xNzIsNyArMTcy
LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2kKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJh
dGlvblJlYWR5VGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFk
eShjYWxsYmFja0lELCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BP
cmlnaW4pLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgp
LCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJh
dGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JE
ZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRv
cE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdp
biksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKKyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2lu
LmRhdGEoKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdH
ZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3Ry
YXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IDQ3YjRkYmI4MjNiNWFlYWExZDdlMzA1ZDgyYTNlYzNhMTc5NzkwNzMuLmQ0
ZWVlMzJjOWRiOTE3MmNmYzkwNGIwZWY0ZGI2NGIzNjYyNGQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC03MzEsMTcgKzczMSwxNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogICAg
IEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgCiAgICAgYXV0byYgb3JpZ2luID0gZnJhbWUuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvIG9yaWdpbkRhdGEgPSBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pOworICAgIGF1dG8mIG9yaWdpbkRh
dGEgPSBvcmlnaW4uZGF0YSgpOwogICAgIGF1dG8mIHRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6
OnNpbmdsZXRvbigpOwogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmln
aW5EYXRhKTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3Jp
Z2luRGF0YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkt
PnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVu
ZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3Jp
Z2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1
b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMu
ZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCi0g
ICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGEo
d2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRp
c3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1
cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSksCisgICAgICAgICAgICBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1l
SUQoKSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRh
aWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRh
aWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSksCiAgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OlJlcGx5KG5l
d1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRT
eW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCkBA
IC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogICAgIHVpbnQ2NF90
IG5ld1F1b3RhID0gMDsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpLCBjdXJyZW50UXVv
dGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAorICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJ
ZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCksCiAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6
OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJ
UEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAK
ICAgICBjYWNoZVN0b3JhZ2Uuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oJm9yaWdpbiwgbmV3
UXVvdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggM2ZiYjE3ZDEyNTI1
OTJmY2Q5ODNjYWM2NmQ2NzhmZWEyODNhMmZkZC4uZWU4Mzk3Y2I1ZWZhNTcyMmVkYzdkZDNkZGJm
N2U0MTdlY2Y2OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04NDUs
NyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuaXNN
YWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlllczsKICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEucmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdChzb3VyY2VEb2N1bWVudC51cmwoKSk7Ci0gICAgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oc291cmNlRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc291cmNlRG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CiAgICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUpCiAgICAg
ICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gb3JpZ2luYXRpbmdGcmFtZS0+
ZnJhbWVJRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
YjZmZGYwYTdiY2RlYzQzM2E2ZDgwMzc0NjUzZjdhNDVhMWNlN2FkNy4uNmM3ZmM5ODNhNjVhOTU5
MGI1ZWQ4NDI3ODc0ODg1NzEzNDU5MGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMTI3Myw3ICsxMjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQK
IHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlKSkgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCi0gICAgICAgICAgICB3ZWJz
aXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1v
cnlDYWNoZSwgMCB9KTsKKyAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdl
YnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlLCAwIH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBjMzBk
ZmVkMzhhZjU0Mjc1NDQ1MjQ3YzFmMjYyNDc2NTdkYTFkOWM1Li41ZDVjMmJjMDVmYzYwYzRlMmY3
MGNjYmFhZDkwYjc5NTU1MmQ4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTEyMiw5ICsxMjIsOSBA
QCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLVdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBTdG9yYWdl
QXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK2NvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc3RvcmFn
ZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFw
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCmluZGV4IDQzM2M0ODczODNjNDgzNjM1YWM2ZjMyNDQ2NTUzNThiZWY1NzQ5ODEuLjE2
NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3MzkyY2QxODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02
MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7CiAgICAgUmVmPFN0b3JhZ2VBcmVh
TWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IGEyNjUwZDFiM2ViZmM3Mjhj
Mjc1ZWUwMTBiZmVhM2EyNjhiMGI4ODYuLmU1NjViMzE4MTVhMjEyNGNhZDAwMjdiZDNlYmI0MzE1
ZTZjZTQ5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTc0LDE0ICs3NCwxNCBAQCBTdG9yYWdlQXJlYU1h
cDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2Us
IFJlZjxXZWJDbwogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgogICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExl
dmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VN
YXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgp
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxPcmlnaW4p
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2lu
KSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmln
aW4uZGF0YSgpKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4u
ZGF0YSgpKSwgMCk7CiAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpT
ZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0
b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5
T3JpZ2luKSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vz
c2lvblN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VO
YW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLmRhdGEoKSksIDApOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsOgpAQCAtMzUyLDcgKzM1
Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1
aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJh
bWUpOwogICAgIH0KIAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbiht
X3NlY3VyaXR5T3JpZ2luKSk7CisgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
ZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4uZGF0YSgpKTsKIH0KIAogdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkBAIC0z
ODMsNyArMzgzLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KICAgICAgICAgfQogICAgIH0K
IAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRz
VG9GcmFtZXMocGFnZUdyb3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxT
dHJpbmcsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlP
cmlnaW4pKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFn
ZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDIxZmQ1ODcwODgwMWMwOGY2
YzE1NmYwOTU0Yzg4NjNkMDQ2ZTkxY2MuLjcxNTIxNDQ0NjY5Y2IxN2MyNzE3NzAyZDVmYTkzY2Ix
MjBmNDE0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3Rv
cmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAKIHZvaWQgU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYg
bWFwKQogewotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihtYXAuc2VjdXJpdHlPcmlnaW4oKSkpOworICAgIG1fc3RvcmFn
ZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiBSZWZQ
dHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZDVlNWY3NDc3ZTgzM2QyNGNlYjNi
YTE5MjhmMWQxYzE2OTJmZWFiYS4uZGRiZGIyMmVhMGZhMGRjNGIxY2JkNWE2ZmM2Zjg4NjViOGFl
YTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCkBAIC02MzcsNyArNjM3LDcgQEAgbG9uZyBsb25nIFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNh
Z2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CiAKLSAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIHBhdGggPSBkYXRhYmFzZVBhdGhGb3JP
cmlnaW4ob3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmIChwYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KaW5kZXggNzZjMjhmNGRk
YmY3NDllZjBkYWIyMTkwNDhjZWQyMTJhOWQwMGJkZS4uMDA1MWY1ODJkZDU0NjJmZGZlNWZmODM3
ZTBjMTlhMDY0MDEwN2QzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCAtIChOU0Fy
cmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsK
ICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBWZWN0b3I8U3RyaW5n
PiBuYW1lVmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVz
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSkp
OworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLmRhdGFiYXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiAgICAgTlNNdXRh
YmxlQXJyYXkgKm5hbWVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpuYW1lVmVjdG9yLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZVZlY3RvcikK
ICAgICAgICAgW25hbWVzIGFkZE9iamVjdDooTlNTdHJpbmcgKiluYW1lXTsKQEAgLTE0MiwxMiAr
MTQyLDEyIEBAIC0gKHZvaWQpZGVsZXRlQWxsRGF0YWJhc2VzCiAKIC0gKEJPT0wpZGVsZXRlT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBvcmlnaW4gJiYg
RGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIG9y
aWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihbb3JpZ2lu
IF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAoQk9PTClkZWxldGVEYXRhYmFzZTooTlNTdHJpbmcg
KilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4KIHsKLSAgICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltv
cmlnaW4gX2NvcmVdKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gb3JpZ2luICYm
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29y
ZV0tPmRhdGEoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIH0KIAogLy8gRm9yIER1bXBSZW5kZXJU
cmVlIHN1cHBvcnQgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KaW5kZXggOWI4NDE4NjAyZTU5YTFj
YTlmMmNjOWU0ODhiNjhkZTY2NmNiMjIyMS4uMTA4YzUyODdmOTA3ZTgxYTYxYTAxYWE3MjQyM2M5
NjA3OTUwYmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCkBAIC01MywxMiArNTMsMTIgQEAgLSAo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdl
CiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSkpOworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFtfb3JpZ2luIF9jb3Jl
XS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSkpOworICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsK
IH0KIAogLy8gSWYgdGhlIHF1b3RhIGlzIHNldCB0byBhIHZhbHVlIGxvd2VyIHRoYW4gdGhlIGN1
cnJlbnQgdXNhZ2UsIHRoYXQgcXVvdGEgd2lsbApAQCAtNjYsNyArNjYsNyBAQCAtICh1bnNpZ25l
ZCBsb25nIGxvbmcpcXVvdGEKIC8vIHByZXZlbnQgbmV3IGRhdGEgZnJvbSBiZWluZyBhZGRlZCB0
byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4uCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBs
b25nIGxvbmcpcXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1
b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29y
ZV0pLCBxdW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShb
X29yaWdpbiBfY29yZV0tPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQppbmRleCA5
YTY4OWNhNTU5NDczZWQzYjAxNTRhYTk1Y2VjNmU1MWZhOWE3ZDcwLi42ZTU3ZWNiMzQ4OWI1YTJk
NDc0ZmE4NWVjYWVlN2Q2NzJiNWMzOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAo
dm9pZClkZWxldGVBbGxPcmlnaW5zCiAKIC0gKHZvaWQpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbgogewotICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltv
cmlnaW4gX2NvcmVdKSk7CisgICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZU9yaWdpbihbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9u
ZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNGY0MjQ4MzdkZWE4YTlhMmM0ZDU3Y2FmNmM4M2RhYWY4
NGU3MmE2MS4uNGU0YzEzZGZiNzNhYjY0YWVlOTdkN2EzNzM5NTEzYWU0OTI0MjlmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAK
IC0gKE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3VyaXR5
T3JpZ2luKj4oX3ByaXZhdGUpKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY5LDE3ICsxNjksMTcg
QEAgQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVkKQogCiAtICh1
bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
cmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOworICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1
b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkucXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+
KF9wcml2YXRlKS0+ZGF0YSgpKTsKIH0KIAogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9u
ZyBsb25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90
YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRlcnByZXRfY2Fz
dDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSktPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBmYjU0NDA4MDIwYTA3MjM1
YWY2YWU0ZTQ1Y2JmMjFhMjk0OGU0YTY0Li4yY2M5ODkzODY1ZjMzMDRlMWM0NTQzMzNiZThiNmNi
Y2QyZDFkYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGF0YWJhc2VzV2l0aE9yaWdpbihfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaQogICAg
IGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBh
dXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNl
TmFtZXMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgYXV0byBkYXRhYmFzZU5hbWVzID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKHdlYlNlY3VyaXR5T3JpZ2lu
LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOwogCiAgICAgQ09NUHRyPENPTUVudW1WYXJpYW50
PFZlY3RvcjxTdHJpbmc+Pj4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENPTUVudW1WYXJpYW50PFZl
Y3RvcjxTdHJpbmc+Pjo6YWRvcHQoZGF0YWJhc2VOYW1lcykpOwogCkBAIC0zMTEsNyArMzExLDcg
QEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihfSW5fb3B0XyBJV2Vi
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5k
ZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNl
Y3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5kZWxldGVPcmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
KCktPmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMzMSw3ICszMzEsNyBAQCBI
UkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoX0luXyBCU1RSIGRhdGFi
YXNlTmFtZSwgX0luX29wdF8gSVdlYgogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRl
bGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp3ZWJT
ZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5
c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0
b24oKS5kZWxldGVEYXRhYmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+
ZGF0YSgpLCBTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zOTYsNyArMzk2LDcgQEAgSFJFU1VMVCBXZWJE
YXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKF9Jbl8gQlNUUiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcg
bG9uZyBxdW90YSkKICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcikK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKSksIHF1b3RhKTsKKyAgICBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKG9yaWdpbikuZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5MDZj
YmJhNTFkYzc1NDliYjczZWRmMjU3M2YyYWZhZTAyM2RjMzA3Li44MWIyNjlmYzQyMGM1OWNjNmVm
NWQ5OTJmYzc2Y2M0OWIwZWEwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0
eU9yaWdpbjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE0MCwxMyArMTQwLDEzIEBAIEhSRVNVTFQgV2ViU2Vj
dXJpdHlPcmlnaW46OnF1b3RhKF9PdXRfIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KQogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKm1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAqcmVzdWx0ID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
OwogICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmln
aW46OnNldFF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7Ci0gICAgRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbiksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcXVvdGEp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336456</attachid>
            <date>2018-03-23 21:49:30 -0700</date>
            <delta_ts>2018-03-23 21:53:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323214927.patch</filename>
            <type>text/plain</type>
            <size>130336</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3
NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBT
dG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4u
Z2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDlj
MWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVj
ZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcg
KzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51
bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNo
ZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAg
c3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgy
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVt
ZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3Jv
dXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3Jv
dXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1h
bmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3Rh
dGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEp
OwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1
YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4
YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0
LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9y
YWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdl
KCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRk
OGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0
NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVS
TCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygp
IDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7
IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1
cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2Fu
IGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3Vt
ZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBE
T00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAg
ICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkK
KyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAg
ICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5
U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEg
eyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9k
b21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAs
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVk
Q29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQor
ICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2Rv
bWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRo
IHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3Ro
ZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAg
ICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIy
OCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2Yg
YW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywg
c2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJl
bnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAg
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6
WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2Rh
dGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVz
IDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAg
LTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxu
ZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90
b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBv
dGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9N
ICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0
ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAg
aWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90
aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1Nl
dEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBA
IC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9j
YWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwg
dXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBp
ZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3Rv
Y29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdo
aXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0
QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpA
QCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwy
MSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigp
CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwor
ICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1f
ZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9l
bmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmls
ZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJv
dG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBw
ZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9T
dHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIp
CkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1f
ZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1
Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0g
b3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2Nv
bCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
bV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmls
ZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgx
YTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFm
ZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAg
ICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJ
bkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hv
c3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4g
VVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBw
cm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVy
IFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMg
YW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAg
Ym9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8
fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09
ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5
KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7Cisg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3
OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4zYzRmZjBiYjdhNjg2ZmY5ZDAxNWZmYWVl
OWM2ZTIyZWRlZDlhNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC0zNywzMiArMzcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKLXsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwotCi0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsK
LSAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IHNlY3VyaXR5T3JpZ2luLnBvcnQoKTsKLQotICAg
IHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7Ci19Ci0KIFN0cmluZyBTZWN1cml0eU9yaWdpbkRh
dGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
IjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOworICAg
IGlmIChwcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZp
bGU6Ly8iKTsKKworICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICc6JywgKnBvcnQpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJuIFNlY3Vy
aXR5T3JpZ2luRGF0YSB7IH07CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7Cisg
ICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogCi0gICAgcmV0dXJuIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQog
CiBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0YTo6c2VjdXJpdHlPcmlnaW4o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggNWY1
NWY5NDJiODFmY2ZlMDBiZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZC4uNzk5MDIzOWM4ZGRhYzIzOWJi
MzkyYmU0NGVjNDIyYzAzMTUyYmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDUsOCArNDUsMTUgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAg
ICAgewogICAgIH0KICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmln
aW5EYXRhIGZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbUZyYW1lKEZyYW1lKik7
CisgICAgc3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7CisgICAgICAgICAgICB1
cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwucHJvdG9jb2woKS50
b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwuaG9z
dCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKSwKKyAgICAgICAgICAgIHVybC5wb3J0KCkKKyAgICAgICAgfTsKKyAgICB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA1MzQxY2E2NWU4
OGZjNzI4Mzc2MGVkYWFjNWI2ZThmZmE4ZDA0MGEwLi45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdj
YzBjYWQ5NDkwYjg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQogCi0g
ICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDhjNGFm
NDJmOGFhMTk1YjNjNmYyYzE0NWMyODhjODBkZDI4OTRhOTQuLjY5YzFiMzM1MzA4YmJmY2Q5N2Jh
NDg1NjUzZTE2YTZjOTc1OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9j
dW1lbnQmIGRvY3VtZW4KICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
QXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFN0b3JhZ2VOYW1l
c3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYThhNTJlZGM5ZTdiN2I1Yzhj
MjdkY2JjMGNjNjYyYjhkYWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3MmI0MTRkMTAzOGRm
ZjJmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MzI0LDcgKzQz
MjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRh
dGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT50b3BPcmln
aW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50b3BPcmlnaW4oKS5k
YXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMjUwMTE0ZWYyNTBlZmZhNGU0NmQ5ZDE2MTYz
NzQ5NWU1ZDllMmQ0OS4uYWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0N2NhZjNkNDJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRV
UkwsIGNvCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFJlZ2lzdHJh
dGlvbjogUmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JE
YXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgam9iRGF0
YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpvYkRhdGEudG9wT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC0+dG9w
T3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCku
ZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rl
cjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNlcnZpY2VXb3JrZXJK
b2JEYXRhIGpvYkRhdGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCksIGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwg
PSBjb250ZXh0LT51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JE
YXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRh
LnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAgICBqb2JEYXRhLnNj
b3BlVVJMID0gc2NvcGVVUkw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmCiAKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9u
LT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAg
ICBqb2JEYXRhLmNsaWVudENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsKLSAgICBqb2JEYXRh
LnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC50b3BPcmln
aW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3Jp
cHRVUkwgPSBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggYjg0
YzY2ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0NmIyM2RiOTNlMzU2
ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApA
QCAtNzcsMTMgKzc3LDEyIEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3Jp
Z2luSXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29s
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikgY29uc3QKIHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BPcmlnaW4gPT0gc2Vj
dXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBzY29wZU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlT3Jp
Z2luLT5pc1NhbWVPcmlnaW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwobV9zY29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0YXRpYyBjb25z
dCBjaGFyIHNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5o
CmluZGV4IDIzOWEzMDBiMTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1ZmIuLjcxMGY0MTJi
NDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7
IG1fc2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0ZXNUb09yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDVl
YTQ1Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZiMTYxY2U4Yzg0ODVk
NTYyNjJlYjZhYzY3MTQxNGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6YWRkKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5z
dXJlKG9yaWdpbi50b1N0cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJl
KG9yaWdpbiwgWyZdIHsKICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6
OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vcmlnaW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoaXRl
cmF0b3IgIT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29y
aWdpbkNvdW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lk
IFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAg
IHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1fb3JpZ2luQ291bnRz
LnJlbW92ZShvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3VudHMucmVtb3ZlKG9y
aWdpbik7CiAgICAgcmVtb3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXgg
ZTExZTQ1MTFmZTE5ODA4ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uY2IyOGIzOTQxOTkyOWZj
MmRhZDRlYjdiZDdkZWNlZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3LDMyICsyNywyOSBA
QAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNzIFNXT3JpZ2luU3Rv
cmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
flNXT3JpZ2luU3RvcmUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Ci0gICAg
dm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgYWRkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAg
dm9pZCBjbGVhckFsbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENvbXBsZXRlKCkgPSAw
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0
b3JlKCkgPSAwOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50
czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG1fb3JpZ2luQ291
bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZWVmMGUzMWMyNzFh
OWFjYTY1YTlkMTNiNzk3MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdmM2FjODExMWQ4YTQ3
MzRhZTBiNGRiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9pZCBTV1NlcnZlcjo6
YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiBy
ZWdpc3RyYXQKICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmFkZChy
ZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRyKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7CiAKLSAgICBtX29y
aWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1f
b3JpZ2luU3RvcmUtPmFkZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpy
ZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5
KQogewotICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAgICAgYXV0byByZWdp
c3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFTU0VSVChyZWdpc3Ry
YXRpb24pOwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5SUQucmVtb3Zl
KHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1LDI5IEBAIHZvaWQg
U1dTZXJ2ZXI6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAgbV9jbGVhckNvbXBs
ZXRpb25DYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVmKG9yaWdpbiksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
eworICAgICAgICBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHNlY3Vy
aXR5T3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENvbXBsZXRlZCk7Ci0g
ICAgICAgICAgICBjbGVhcihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgICAgIGNsZWFyKHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9qb2JRdWV1
ZXMucmVtb3ZlSWYoWyZdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBrZXlB
bmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlB
bmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9KTsKIAog
ICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsK
ICAgICBmb3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAg
IGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCisgICAgICAgIGlm
IChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAg
ICAgICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0
KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDogbV9wZW5kaW5nQ29u
dGV4dERhdGFzLnZhbHVlcygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0oYXV0byYgY29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgsMTAgKzQ5OCwxMCBA
QCB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29u
dGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsKLSAgICBhdXRvIG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8q
IGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JP
cmlnaW4ob3JpZ2luKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tVVJMKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nQ29udGV4dERh
dGFzLmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4
dERhdGFzLmVuc3VyZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewogICAgICAgICAgICAg
cmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNTEyLDExICs1MTIsMTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
Y29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9w
ZW5kaW5nQ29udGV4dERhdGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAg
ICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0RGF0YXMudGFrZShj
b250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3IgKGF1dG8mIGRhdGEg
OiBwZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7
CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1
blJlcXVlc3RzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2Uo
Y29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVt
IDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1
blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
aXRlbS52YWx1ZSkKQEAgLTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0
ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBt
CiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rl
cm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1h
cmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CiAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlmICh3b3JrZXItPnNl
Y3VyaXR5T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyArNzc5LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2Vy
KHdvcmtlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2Vj
dXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKGNsaWVudE9yaWdp
bi5jbGllbnRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MDUsOSArODA1
LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdS
ZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAotYm9vbCBTV1Nl
cnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5j
b250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsK
KyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9y
aWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNjA2ZGI0NmFkMDI3
Y2YxYmM1NWFmNzcxYjg4MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUyNmVmYzg0NzY0Nzk3
ZmVmYTZhYjIwZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYi5oIgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwo
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xp
ZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldv
cmtlciogYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0
b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhG
dW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjksOCArMjI5LDggQEAg
cHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwog
ICAgIFJlZ2lzdHJhdGlvblN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0gICAgSGFzaE1hcDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4g
bV9wZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3Jr
ZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAgICBIYXNoTWFwPFNl
Y3VyaXR5T3JpZ2luRGF0YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVu
ZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
az4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNmFh
NWEyYTlmYmQyMzY2MzliNTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3MmYzMmY1YjEwMTkx
ODFiNzdlMWU5Njg4YzE5MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MCwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4g
Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXJUeXBlPigpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigp
CitzdGF0aWMgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbio+PiBjb25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3Jp
Z2luOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX29yaWdpbihXVEZN
b3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX29yaWdpbi5j
b3B5UmVmKCksIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdp
bigpLmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxs
Q29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4p
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZv
ck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1
cm4gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxTZWN1cml0eU9yaWdp
biY+KG9yaWdpbikpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNl
Y3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEwMmJjNTI1YjcwZDA1
MzRlN2Y3MTBhNDRmMjU5OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUzOGNkZDg3Zjg1ZDg5
ZWM4MmViNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC03
NCwxOCArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCi0gICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVj
dGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJik7CiAKLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9v
cmlnaW4uZ2V0KCk7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJl
ZjxTZWN1cml0eU9yaWdpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiBwcml2
YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEwNjU5MWRhNDA3ZDcx
OWUuLjE1OWJjZTY2OWYxY2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KCkKIGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX29yaWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBt
X3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSkgfTsK
KyAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BP
cmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5zY3JpcHRVUkwpIH07
CiAKICAgICByZXR1cm4gKm1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNXU2Vy
dmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7CisgICAgcmV0dXJuIG9y
aWdpbigpLmNsaWVudE9yaWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBT
V1NlcnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGNjMDc1
OWM2MTZlZjhlODI0YTI3ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAwYWFiOWViMDFiZTRj
YjhjNGRkMGFiMWI2M2ZkODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7
CiAKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
IGNvbnRleHRDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
MGU3ZDgwY2JmODVlYjFkYWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcxZC4uMDE3MmMzYjQxOWI4MWYx
NWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKICAgICBpZiAoc291cmNlT3JpZ2luKQotICAgICAg
ICBlbmNvZGVyIDw8IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3Vy
Y2VPcmlnaW4pOworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZU9yaWdpbi0+ZGF0YSgpOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVh
ZGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0
eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcAppbmRleCAzYzRiNDI0NmU4MTIwODdiMzBlMzZiYWZjMTY4ZWY0NjYzYzcwYThi
Li5iY2Y5NTVhNjZjYjc2ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNkMTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tT
dHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvcwogCiBXS1N0cmluZ1JlZiBXS1NlY3Vy
aXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlU
b1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
T3JpZ2luU3RvcmUuY3BwCmluZGV4IDlkY2FkOTRiZmYyMjZkNGEwOWUwMmUwYzFhNTAyMTdiNWEx
YTBjZjguLjA0Y2JmMjFiM2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0ODdlOTlkNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdp
blN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXZWJTV09yaWdpblN0
b3JlOjpXZWJTV09yaWdpblN0b3JlKCkKIHsKIH0KIAotdm9pZCBXZWJTV09yaWdpblN0b3JlOjph
ZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2lu
U3RvcmU6OmFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAg
ICAgbV9zdG9yZS5zY2hlZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKG9yaWdp
bi50b1N0cmluZygpKSk7CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiB9CiAK
LXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBtX3N0b3JlLnNjaGVkdWxlUmVt
b3ZhbChjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1f
c3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmgKaW5k
ZXggN2Y4Yzk4NzExYzI1ZGFlODZmZWJlZmMwODhjMDliNTI4OWYxN2ZmOS4uMmQyOWY1NjA5NTg0
ZjEwMjA5ZTgwNmNkMTA2YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5o
CkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dPcmlnaW5TdG9yZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOwpAQCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgc2VuZFN0b3JlSGFuZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBh
ZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmluYWw7Ci0gICAgdm9p
ZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBmaW5hbDsK
KyAgICB2b2lkIGFkZFRvU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0b3JlKCkgZmluYWw7CiAKICAgICAv
LyBTaGFyZWRTdHJpbmdIYXNoU3RvcmU6OkNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5MDYwZTVkNDc0MzNhNWNmNTMw
MzZkNS4uMzhjMzk5MWVlZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGExNmRhNmUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZAogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1
bGVKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiB7Ci0gICAgYXV0
byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRV
UkwpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21V
Ukwoam9iRGF0YS5zY3JpcHRVUkwpOwogICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQog
ICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlv
bnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKIAogdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjbGll
bnRPcmlnaW4gPSBDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS51
cmwpKSB9OworICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0
b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51cmwpIH07CiAgICAg
bV9jbGllbnRPcmlnaW5zLmFkZChkYXRhLmlkZW50aWZpZXIsIGNsaWVudE9yaWdpbik7CiAgICAg
c2VydmVyKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY2xpZW50T3JpZ2lu
KSwgV1RGTW92ZShkYXRhKSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCmluZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQwNTEzNDZmOTk4MmQ4
OGQuLjAwYjdmYzdjODM5OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4MThhZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zNyw4
ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1v
dmUob3JpZ2luKSkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBjQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJiMTBiZGVmOTJjZWZhNTYyYTc4ZDhmOTUyMWRj
MzhlNzFkYmM2N2IuLmU5YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdjMzE4MmMzMjhkOTk1MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRl
eCBkZDQ4OGM2ZmRmZjgxYzY2MjViYjkxMGQyMDc4MzVjMjE2ODllYTRkLi5mODU3MjRlYTZmZTZm
YzU4ZTliZDQ0MmIxMWMxMDZmYTczZGU2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTEzLDIzICsxMTMsMjQgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBzZWN1cml0eU9y
aWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5T3JpZ2luKCk7CisKICAg
ICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24tPm9yaWdpbigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShz
ZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMu
dmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVy
bWluYXRlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgICAgIHN3
U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZWN1cml0eU9yaWdp
bik7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24tPm9yaWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4ob3JpZ2luKSkgeworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNs
b3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc3RkOjpu
dWxsb3B0KTsKICAgICB9CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAor
Ym9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1Nl
cnZlcikgewotICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvck9yaWdpbihvcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAg
fSk7CiB9CiAjZW5kaWYKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpw
ZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAKLXZv
aWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtMjc0LDkgKzI3NSw4
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nl
c3MgJiYgIW1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgewogICAg
ICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKTsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmNyZWF0ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShvcmlnaW4pLCBjb250
ZXh0Q29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4s
IG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFk
ZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IAogICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IGZhbHNlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAjZW5k
aWYKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5
T3JpZ2luRGF0YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVh
dGUoW3RoaXMsIGNhbGxiYWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoY2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0ICszNDgsMTQgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucykpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNz
aW9uKHNlc3Npb25JRCk7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IHNlY3VyaXR5
T3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbigpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5
T3JpZ2lucykKKyAgICAgICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoIXdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
KQotICAgICAgICBpZGJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1v
dmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKHNlc3Npb25J
RCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lucywgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICNl
bmRpZgogfQogCkBAIC00NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdpblN0b3JlJiBTdG9yYWdl
UHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXJGb3JTZXNz
aW9uKHNlc3Npb25JRCkub3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JP
cmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJmNvbnN0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9ucy5nZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQg
U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gc2Vzc2lvbklEKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fd2FpdGluZ0Zv
clNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBpZiAoc2Vzc2lv
bklEKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKSwgKnNlc3Npb25JRCksIDApOworICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNl
c3Npb24oc2VjdXJpdHlPcmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAgICBlbHNlCi0gICAgICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
UHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKSwgMCk7CisgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cyhzZWN1cml0eU9yaWdpbiksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWls
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1ICs1MzcsMTUgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZl
ckNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29u
bmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2lu
ID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpOworICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQog
ICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwog
ICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CiAKICAgICBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQxMmZlMzE2
ZTlmMjYxNzlmNzQ1NGE3MWM3OWM5ZmZhMzljMDZiYzkuLjIwNzhhMTMxMDczOTg1OGNjNGIyN2My
YzViMzE3M2NjNWY0YTllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNo
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlLmg+
CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVyOwog
Y2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0czsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgc3RkOjpvcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4pOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4pOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mKTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCiAgICAgV2Vi
U1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwot
ICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29u
c3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+
PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhLCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRv
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggMDMxOWU1YWVk
M2ZmYzBhMzcwOWQ0Zjc1ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNkMTc4NTQ0NWMzOTczM2IyZjA0
OGE2MGYyMDIxNTA4YzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZy
YW1lSW5mby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpj
cmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KICAg
ICBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWUoKTsKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBu
b3QganVzdCB0aGUgVVJMLgogICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdChmcmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9y
aWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJp
dHlPcmlnaW4uZGF0YSgpOwogICAgIGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IGZyYW1lLmZyYW1l
SUQoKTsKIAogICAgIHJldHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0YSwgZnJhbWUucGFnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4YjkzZDg1YTEzYjdjNTk2NzU3
Yjg0Mzk2MDAwMS4uZWU4N2FjMTkxNTA2MDZiNGViODNhODNkZDdhZjNiMjdiMDI3NzgzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUmUKICAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJz
aXRlRGF0YVN0b3JlKCk7CiAKICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAg
IGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0
YShXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNv
cmQgfSwgW10geyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxMGQ2MzMxZDdiN2Q1
MjJkNzVhNDRiM2YzNjQ1MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1MjI1YjlkOWRkMjRlZjgxZmE4
YWY3NTNhMzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zv
ck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0
b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLT5k
ZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0
eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVs
ZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdl
TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggMjNhYTRkMTNkNDEzM2ZkZTg5YmU0ZGMwYzE0
ZWI5OTgwZjhhOWU4Mi4uNmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5MGRkZDlmZmIxMWI1ODdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2Fj
aGVNYQogCiAgICAgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAg
ICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5
cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkp
OwogCiAgICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CiAKICAg
ICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewogICAg
ICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsK
KyAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIHRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICAgICAgZGF0YVJlY29y
ZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDY2NTBiNTgz
NWQzZjc3ZDYzNTA1YjBkMjIzNTMyNmUzMGYyYWQzNWEuLjcxZWQ0NmZlOWUzMzEzMGNhNjcyYTNk
ZTIyMTFiODIyMmZjNGFhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hD
YWNoZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
KSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hl
LCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
VmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3Zl
KGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKQEAgLTQ4MCw3
ICs0ODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3Jp
Z2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzOwogCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2td
IChhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygp
KSk7CisgICAgICAgIGF1dG8mIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRhdGEo
KTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGEgPT0gcmVjb3JkT3JpZ2luKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGNhZWVlYzNiMTI2NDE2MDI1N2M3MDU5Yzg5NzFlZGZkNDIzMDk1NzYuLmI2
MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5NzU5N2M1NjgxODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC00
MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKK1JlZjxTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bv
b2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBXVEZNb3ZlKG9yaWdpbiksIHN0b3JlIH0p
OworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7CiAgICAgcHJveHktPmNvbm5lY3Qo
KTsKICAgICByZXR1cm4gcHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURh
dGFTdG9yZSYgc3RvcmUpCiAgICAgOiBXZWJQcm9jZXNzUHJveHkgeyBwb29sLCBzdG9yZSB9Ci0g
ICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKQogICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlEKGdlbmVyYXRlUGFnZUlE
KCkpCiB7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAgICAg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwogCiAgICAg
bGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJz
ZXJ2aWNlLXdvcmtlci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIpKTsKLSAgICBsYXVuY2hP
cHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5
LW9yaWdpbiIpLCBvcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBz
ZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBzdGQ6Om9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDFjNzcw
YjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRlNWY3ZDk2MTE4MDUuLjMzNTFiNzQwOTRiZTQ3ZTgzMGUz
OTdjNDA2ODFiYWEwODI5OGI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKIAogY2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBX
ZWJQcm9jZXNzUHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgflNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNl
V29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwpAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4oKSB7IHJldHVybiBtX29y
aWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAgICAgdWludDY0X3Qg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZh
dGU6CkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtl
clByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9v
cmlnaW47CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47
CiAgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5jcHAKaW5kZXggOWU3ODhmNDc0NzBlNmU0ZWFiMWZmYTkxMDUzNWJiMDk3NzNiYTMyMC4uNTRh
MDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4NDlmZTRjYWQwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBA
IC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogICAgIH0KIAogICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFNlY3VyaXR5T3JpZ2lu
RGF0YSBvcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
ID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1By
b3h5KS5vcmlnaW4oKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2luID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5zZWN1cml0eU9yaWdpbigpOwog
ICAgIH0KICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdvcmtlclByb2Nlc3MsIG9y
aWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRl
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgc2Vj
dXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAzNTFiZjZhYjI2YjZlZWZkODNmYTk2MjdhOGU0Yzc2NjIxYTA3ZjY2
Li4yZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBkZjFkNThjM2U0NDc1ZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsMTIgKzU5MSwxMSBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQ
cm94eSogc3RvcmFnZVByb2Nlc3NQcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHksIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNz
aW9uSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5ID09IG1fc3RvcmFnZVBy
b2Nlc3MpOwogCi0gICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhvcmlnaW4ucHRyKCkp
KQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmln
aW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdv
cmtlcnMuY2xlYXIoKTsKQEAgLTYxNCw4ICs2MTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVBy
bwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgb3JpZ2luLmNvcHlSZWYo
KSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQo
b3JpZ2luLmNvcHlSZWYoKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CisgICAg
YXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6Y3JlYXRlKCp0aGlzLCBzZWN1cml0eU9yaWdpbiwgKndlYnNpdGVEYXRhU3RvcmUpOworICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC05OTAsNyArOTg5LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5PigqcHJvY2VzcykpIHsKLSAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZSgmZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eT4oKnByb2Nlc3MpLm9yaWdpbigpKTsKKyAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nl
c3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAg
ICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KQEAgLTE4NzgsOSArMTg3Nyw5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAg
ICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3Vu
ZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBj
YW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgog
ICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
Zm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdp
bikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIo
KS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1
cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIG1fZm9y
ZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2lu
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JT
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
ODg4LDkgKzE4ODcsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAm
JiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3Mg
cGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3Mg
OiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2luKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNv
bnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAg
ICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2VjdXJpdHlP
cmlnaW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAg
ICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChz
ZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDU3
ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVmMzY4MTBiMTU4MDA1ZC4uODk1ZmMzMzY5ODBhOGIzZDM4
NzI1MDAwNmM0MTZjODhiYzI1ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAgICBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OwotICAgIGNvbnN0IEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJv
eGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIGNv
bnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsg
bnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKQEAgLTY3Nyw4ICs2NzcsOCBAQCBw
cml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1f
Zm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vz
czsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+LCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlU
b2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBI
YXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQ
cm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+
IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNl
bmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYzIxNDNmZGRlYzVhNjFhNDBlODY1YTU2ZGM5
OWIwYTliMjExMTZlOC4uMGY5ZTlhYzA0NDczOWQ5MzVhNTI4MjgxZTc1NGE4NmRhMjZhODYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgTwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAgICAgICAg
ICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSwgMCB9OworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdp
bi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OwogICAgICAgICAgICAg
ICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBPCiAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAg
ICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSA/IHN0b3JhZ2UtPmRpc2tVc2FnZUZvck9y
aWdpbigqb3JpZ2luKSA6IDA7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVu
dHJ5IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9y
aWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUg
fTsKKyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRh
dGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9
OwogCiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShl
bnRyeSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOTNiOTM2ZmU1YTIxYzUwNGViMzMxYWMxNWU3ZTM1
NGYwZDA2NzRmOS4uMDFmMTM1N2E4ODYzMjcwMjdhZDE2NWYxZjAzZTgyMjMwYjQ5NWQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6
OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uCiAKICAgICBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVl
c3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JH
ZW9sb2NhdGlvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCmluZGV4IDViMzBmMzg3MzkzM2IwYzEwMDQ2YzJkNmM5ZjhmODgzMDkwZjE1Y2IuLjhm
NWQ2MWJmNzFjNzIyMjZhN2IwOTFlM2RiMzk0NzhiZmQzYWYzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VD
b3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAg
IG9yaWdpbklkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkp
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBvcmln
aW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSkpOworICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBl
bmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShvcmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIo
KSkpOwogCiAgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShvcmln
aW5JZGVudGlmaWVycykpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGU0ZDM3YTIzNmNjYzAyZmI0NTg0YjZlMzZi
MWJjNDhkOTU4ZTc0NGEuLjljY2FjZTA1NzdjN2ZiYzhmZjU3MDZiZGZhZDkzZTQzN2NjNmUxZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpz
ZW5kVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiB1CiAgICAgQVNTRVJUKHdlYkZy
YW1lKTsKIAogICAgIGF1dG8qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSB1c2VyUmVxdWVzdC50
b3BMZXZlbERvY3VtZW50T3JpZ2luKCk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdl
YkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCp1c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCB1c2VyUmVx
dWVzdC5yZXF1ZXN0KCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUt
PmZyYW1lSUQoKSwgdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgp
LCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkp
OwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNl
ck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjplbnVtZXJhdGVNZWRp
YURldmljZXMoTWVkaWFEZXZpY2VzRW51bWVyCiAKICAgICBTZWN1cml0eU9yaWdpbiogdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbiA9IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwogICAg
IEFTU0VSVCh0b3BMZXZlbERvY3VtZW50T3JpZ2luKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZShyZXF1ZXN0SUQs
IHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKCpyZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNG
b3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlh
RG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCkp
KTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbE1l
ZGlhRGV2aWNlc0VudW1lcmF0aW9uKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVx
dWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDFlMjIxMmUwNThlYWU4MTQ0
NTRkYmZiYmQ5NmUzNTc5YmVjNTFlODcuLmI0YTU5M2Y2ZTFhZjc4ZjE2ZDUzMzAxMGZhN2Q5OTlh
YTVjZTc2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZAogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJv
bGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dCB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGRh
dGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVy
IGNvbnRleHRJZGVudGlmaWVyKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBydW5PckRlbGF5VGFza0Zvcklt
cG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgY2xpZW50VVJM
XSgpIG11dGFibGUgeworICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uZGF0YSgpLCBjbGll
bnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJl
dmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2luZ01hdGNoUmVnaXN0cmF0
aW9uVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxs
YmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjp3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2
aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJ
RCwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgY2xp
ZW50VVJMKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVu
UmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJM
KSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25SZWFkeSh1
aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJ1bk9yRGVsYXlUYXNrRm9y
SW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRV
UkxdKCkgbXV0YWJsZSB7CisgICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5kYXRhKCksIGNs
aWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9w
cmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nR2V0UmVnaXN0cmF0
aW9uc1Rhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0cmF0aW9ucyhjYWxs
YmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCA0N2I0ZGJiODIzYjVhZWFhMWQ3ZTMwNWQ4MmEzZWMzYTE3OTc5MDczLi5kNGVlZTMyYzlkYjkx
NzJjZmM5MDRiMGVmNGRiNjRiMzY2MjRkMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
NzMxLDE3ICs3MzEsMTcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAgICBBU1NFUlQod2Vi
RnJhbWUpOwogICAgIAogICAgIGF1dG8mIG9yaWdpbiA9IGZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgYXV0byBvcmlnaW5EYXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKTsKKyAgICBhdXRvJiBvcmlnaW5EYXRhID0gb3JpZ2lu
LmRhdGEoKTsKICAgICBhdXRvJiB0cmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24o
KTsKICAgICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7CiAg
ICAgYXV0byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEpOwog
ICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4g
PSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0
eU9yaWdpbigpKTsKICAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50
KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwg
ZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVu
dE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNh
Z2UoKSk7CiAKICAgICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKAotICAgICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhKHdlYkZyYW1lLT5m
cmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiku
ZGF0YWJhc2VJZGVudGlmaWVyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgp
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpLAorICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhKHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdp
bkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5
TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50
VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpLAogICAgICAgICAgICAgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpSZXBseShuZXdRdW90YSksIG1f
cGFnZS5wYWdlSUQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6
SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIApAQCAtNzY2LDcgKzc2
Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKICAgICB1aW50NjRfdCBuZXdRdW90YSA9
IDA7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5
dGVzTmVlZGVkKSwKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigp
LCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAogICAgICAgICBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpSZXBseShuZXdR
dW90YSksIG1fcGFnZS5wYWdlSUQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3lu
Y09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogCiAgICAgY2FjaGVT
dG9yYWdlLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKCZvcmlnaW4sIG5ld1F1b3RhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDNmYmIxN2QxMjUyNTkyZmNkOTgzY2Fj
NjZkNjc4ZmVhMjgzYTJmZGQuLmVlODM5N2NiNWVmYTU3MjJlZGM3ZGQzZGRiZjdlNDE3ZWNmNjhk
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODQ1LDcgKzg0NSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgRnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGE7CiAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0g
bmF2aWdhdGlvbkFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpID09IEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpZZXM7CiAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3Qoc291cmNlRG9jdW1lbnQudXJsKCkpOwotICAgIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKHNvdXJjZURvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IHNvdXJjZURvY3VtZW50LnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpOwogICAgIGlmIChvcmlnaW5hdGluZ0ZyYW1lKQogICAgICAgICBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IG9yaWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGI2ZmRmMGE3YmNk
ZWM0MzNhNmQ4MDM3NDY1M2Y3YTQ1YTFjZTdhZDcuLjZjN2ZjOTgzYTY1YTk1OTBiNWVkODQyNzg3
NDg4NTcxMzQ1OTBmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0CiB7CiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSkp
IHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
b3JpZ2luc1dpdGhDYWNoZShzZXNzaW9uSUQpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAg
fSk7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6
RW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9
KTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNyZWRlbnRpYWxzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggYzMwZGZlZDM4YWY1NDI3
NTQ0NTI0N2MxZjI2MjQ3NjU3ZGExZDljNS4uNWQ1YzJiYzA1ZmM2MGM0ZTJmNzBjY2JhYWQ5MGI3
OTU1NTJkODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgdm9pZCBTdG9y
YWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1XZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgU3RvcmFnZUFyZWFJbXBsOjpz
ZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIFN0b3JhZ2VB
cmVhSW1wbDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3N0b3JhZ2VBcmVhTWFwLT5z
ZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRl
eCA0MzNjNDg3MzgzYzQ4MzYzNWFjNmYzMjQ0NjU1MzU4YmVmNTc0OTgxLi4xNjVhZjQ0ZDkwMThi
OWI5ZDEzZjczZmNlODQ0NzM5MmNkMTgzNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjAsNyArNjAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURh
dGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dWludDY0X3QgbV9zdG9yYWdlQXJlYUlEOwogICAgIFJlZjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9y
YWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCBhMjY1MGQxYjNlYmZjNzI4YzI3NWVlMDEwYmZl
YTNhMjY4YjBiODg2Li40NzEzYWM0YjdlMWM3OGUxMzIyZjQ5ZjJiNTVmYzgzOTI2NWI4MTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCkBAIC03NCwxNCArNzQsMTQgQEAgU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VB
cmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ28K
ICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpMb2NhbDoKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFu
c2llbnRMb2NhbDoKICAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9
IHN0b3JhZ2VOYW1lc3BhY2UtPnRvcExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFn
ZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsT3JpZ2luKSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
LCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6
OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+
c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
TWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFt
ZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwg
MCk7CiAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgot
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAo
bV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSks
IDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3Jh
Z2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJ
RCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbDoKQEAgLTM1Miw3ICszNTIsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qg
c291cmNlU3RvcmFnZUFyZWFJRCwgYwogICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKICAg
ICB9CiAKLSAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdl
RXZlbnRzVG9GcmFtZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZywgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0
eU9yaWdpbikpOworICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0
b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCiB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAgLTM4Myw3ICsz
ODMsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVp
bnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbgogICAgICAgICB9CiAgICAgfQogCi0gICAg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1l
cyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikp
OworICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRz
VG9GcmFtZXMocGFnZUdyb3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxT
dHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDIxZmQ1ODcwODgwMWMwOGY2YzE1NmYw
OTU0Yzg4NjNkMDQ2ZTkxY2MuLjJmMWNkMDdhN2FkZDFlNmE1MGU4YTI4OWFiOWFlYmI3M2ExNzRh
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RvcmFnZU5h
bWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAKIHZvaWQgU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQog
ewotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtYXAuc2VjdXJpdHlPcmlnaW4oKSkpOworICAgIG1fc3RvcmFnZUFyZWFN
YXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiBSZWZQdHI8U3Rv
cmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZvaWQgY2xvc2VEYXRh
YmFzZUlmSWRsZSgpIHsgfQogCi0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NlY3VyaXR5T3JpZ2luRGF0YTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXgg
MTY0NzcyMjc4NGNiYTRjZTNhZGJmMWUxMjJhYWJmMGU2MDM5NWVjOS4uMzg2ZDQ4ZDk5MDI2YmMx
YjE3MWRhMWJlNmQ2NjQzZmYwNDA2ZmQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFz
ZUlmSWRsZSgpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsg
fQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAKICAgICBSZWY8
U3RvcmFnZUFyZWFJbXBsPiBjb3B5KCk7CiAgICAgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZDVlNWY3NDc3ZTgz
M2QyNGNlYjNiYTE5MjhmMWQxYzE2OTJmZWFiYS4uZGRiZGIyMmVhMGZhMGRjNGIxY2JkNWE2ZmM2
Zjg4NjViOGFlYTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgbG9uZyBsb25nIFN0b3JhZ2VUcmFja2Vy
OjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CiAKLSAgICBTdHJpbmcgcGF0aCA9IGRhdGFi
YXNlUGF0aEZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
b3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIHBhdGggPSBkYXRhYmFz
ZVBhdGhGb3JPcmlnaW4ob3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KaW5kZXgg
NzZjMjhmNGRkYmY3NDllZjBkYWIyMTkwNDhjZWQyMTJhOWQwMGJkZS4uMDA1MWY1ODJkZDU0NjJm
ZGZlNWZmODM3ZTBjMTlhMDY0MDEwN2QzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTEwNiw3ICsxMDYsNyBA
QCAtIChOU0FycmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KIHsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBuYW1lVmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRh
YmFzZU5hbWVzKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2lu
IF9jb3JlXSkpOworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiAg
ICAgTlNNdXRhYmxlQXJyYXkgKm5hbWVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpuYW1lVmVjdG9yLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFt
ZVZlY3RvcikKICAgICAgICAgW25hbWVzIGFkZE9iamVjdDooTlNTdHJpbmcgKiluYW1lXTsKQEAg
LTE0MiwxMiArMTQyLDEyIEBAIC0gKHZvaWQpZGVsZXRlQWxsRGF0YWJhc2VzCiAKIC0gKEJPT0wp
ZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBv
cmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVPcmlnaW4oU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAg
cmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdp
bihbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAoQk9PTClkZWxldGVEYXRhYmFzZToo
TlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oKltvcmlnaW4gX2NvcmVdKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
b3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoW29y
aWdpbiBfY29yZV0tPmRhdGEoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIH0KIAogLy8gRm9yIER1
bXBSZW5kZXJUcmVlIHN1cHBvcnQgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KaW5kZXggOWI4NDE4
NjAyZTU5YTFjYTlmMmNjOWU0ODhiNjhkZTY2NmNiMjIyMS4uMTA4YzUyODdmOTA3ZTgxYTYxYTAx
YWE3MjQyM2M5NjA3OTUwYmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCkBAIC01MywxMiArNTMs
MTIgQEAgLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIAogLSAodW5zaWduZWQgbG9uZyBs
b25nKXVzYWdlCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNh
Z2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3Jl
XSkpOworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFtfb3Jp
Z2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSkpOworICAgIHJl
dHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKFtfb3JpZ2luIF9jb3JlXS0+
ZGF0YSgpKTsKIH0KIAogLy8gSWYgdGhlIHF1b3RhIGlzIHNldCB0byBhIHZhbHVlIGxvd2VyIHRo
YW4gdGhlIGN1cnJlbnQgdXNhZ2UsIHRoYXQgcXVvdGEgd2lsbApAQCAtNjYsNyArNjYsNyBAQCAt
ICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIC8vIHByZXZlbnQgbmV3IGRhdGEgZnJvbSBiZWlu
ZyBhZGRlZCB0byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4uCiAtICh2b2lkKXNldFF1b3RhOih1
bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29y
aWdpbiBfY29yZV0pLCBxdW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5z
ZXRRdW90YShbX29yaWdpbiBfY29yZV0tPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2Vy
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5t
bQppbmRleCA5YTY4OWNhNTU5NDczZWQzYjAxNTRhYTk1Y2VjNmU1MWZhOWE3ZDcwLi42ZTU3ZWNi
MzQ4OWI1YTJkNDc0ZmE4NWVjYWVlN2Q2NzJiNWMzOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KQEAgLTg0LDcgKzg0
LDcgQEAgLSAodm9pZClkZWxldGVBbGxPcmlnaW5zCiAKIC0gKHZvaWQpZGVsZXRlT3JpZ2luOihX
ZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6
OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJh
Y2tlcigpLmRlbGV0ZU9yaWdpbihbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAodW5z
aWduZWQgbG9uZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNGY0MjQ4MzdkZWE4YTlhMmM0ZDU3Y2Fm
NmM4M2RhYWY4NGU3MmE2MS4uNGU0YzEzZGZiNzNhYjY0YWVlOTdkN2EzNzM5NTEzYWU0OTI0Mjlm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoTlNTdHJpbmcg
Kilob3N0CiAKIC0gKE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0
PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgp
LmRhdGFiYXNlSWRlbnRpZmllcigpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY5LDE3
ICsxNjksMTcgQEAgQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVk
KQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOwor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKHJlaW50ZXJwcmV0
X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZylxdW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLnF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWlu
dGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0
eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpKTsKIH0KIAogLSAodm9pZClzZXRRdW90YToodW5z
aWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24o
KS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSksIHF1b3RhKTsKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJp
dHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBmYjU0NDA4
MDIwYTA3MjM1YWY2YWU0ZTQ1Y2JmMjFhMjk0OGU0YTY0Li4yY2M5ODkzODY1ZjMzMDRlMWM0NTQz
MzNiZThiNmNiY2QyZDFkYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VzV2l0aE9yaWdpbihfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaQogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBhdXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigp
LmRhdGFiYXNlTmFtZXMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndl
YlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgYXV0byBkYXRhYmFzZU5h
bWVzID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKHdlYlNlY3Vy
aXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOwogCiAgICAgQ09NUHRyPENPTUVu
dW1WYXJpYW50PFZlY3RvcjxTdHJpbmc+Pj4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENPTUVudW1W
YXJpYW50PFZlY3RvcjxTdHJpbmc+Pjo6YWRvcHQoZGF0YWJhc2VOYW1lcykpOwogCkBAIC0zMTEs
NyArMzExLDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihfSW5f
b3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAoIXdlYlNlY3VyaXR5T3Jp
Z2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5n
bGV0b24oKS5kZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKndlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVPcmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCktPmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMzMSw3ICsz
MzEsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoX0luXyBC
U1RSIGRhdGFiYXNlTmFtZSwgX0luX29wdF8gSVdlYgogICAgIGlmICghd2ViU2VjdXJpdHlPcmln
aW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSksIFN0cmluZyhkYXRhYmFz
ZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlP
cmlnaW4oKS0+ZGF0YSgpLCBTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJh
c2VOYW1lKSkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zOTYsNyArMzk2LDcgQEAgSFJF
U1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKF9Jbl8gQlNUUiBvcmlnaW4sIHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNl
TWFuYWdlcikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKSksIHF1b3RhKTsKKyAg
ICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19P
SzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA5MDZjYmJhNTFkYzc1NDliYjczZWRmMjU3M2YyYWZhZTAyM2RjMzA3Li44MWIyNjlmYzQy
MGM1OWNjNmVmNWQ5OTJmYzc2Y2M0OWIwZWEwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgSFJFU1VMVCBX
ZWJTZWN1cml0eU9yaWdpbjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQp
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVz
dWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQg
PSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKG1fc2VjdXJpdHlPcmlnaW4tPmRh
dGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE0MCwxMyArMTQwLDEzIEBAIEhSRVNV
TFQgV2ViU2VjdXJpdHlPcmlnaW46OnF1b3RhKF9PdXRfIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVz
dWx0KQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAg
KnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAqcmVz
dWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShtX3NlY3VyaXR5T3JpZ2lu
LT5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKIEhSRVNVTFQgV2ViU2Vj
dXJpdHlPcmlnaW46OnNldFF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7Ci0gICAg
RGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbiksIHF1b3RhKTsKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSwgcXVvdGEpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336457</attachid>
            <date>2018-03-23 21:53:17 -0700</date>
            <delta_ts>2018-03-23 21:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323215316.patch</filename>
            <type>text/plain</type>
            <size>132471</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3
NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBT
dG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4u
Z2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDlj
MWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVj
ZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcg
KzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51
bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNo
ZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAg
c3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgy
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVt
ZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3Jv
dXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3Jv
dXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1h
bmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3Rh
dGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEp
OwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1
YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4
YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0
LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9y
YWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdl
KCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRk
OGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0
NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVS
TCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygp
IDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7
IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1
cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2Fu
IGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3Vt
ZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBE
T00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAg
ICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkK
KyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAg
ICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5
U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEg
eyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9k
b21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAs
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVk
Q29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQor
ICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2Rv
bWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRo
IHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3Ro
ZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAg
ICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIy
OCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2Yg
YW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywg
c2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJl
bnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAg
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6
WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2Rh
dGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVz
IDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAg
LTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxu
ZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90
b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBv
dGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9N
ICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0
ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAg
aWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90
aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1Nl
dEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBA
IC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9j
YWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwg
dXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBp
ZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3Rv
Y29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdo
aXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0
QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpA
QCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwy
MSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigp
CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwor
ICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1f
ZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9l
bmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmls
ZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJv
dG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBw
ZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9T
dHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIp
CkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1f
ZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1
Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0g
b3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2Nv
bCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
bV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmls
ZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgx
YTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFm
ZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAg
ICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJ
bkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hv
c3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4g
VVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBw
cm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVy
IFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMg
YW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAg
Ym9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8
fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09
ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5
KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7Cisg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3
OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4zYzRmZjBiYjdhNjg2ZmY5ZDAxNWZmYWVl
OWM2ZTIyZWRlZDlhNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC0zNywzMiArMzcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKLXsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwotCi0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsK
LSAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IHNlY3VyaXR5T3JpZ2luLnBvcnQoKTsKLQotICAg
IHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7Ci19Ci0KIFN0cmluZyBTZWN1cml0eU9yaWdpbkRh
dGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
IjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOworICAg
IGlmIChwcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZp
bGU6Ly8iKTsKKworICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICc6JywgKnBvcnQpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJuIFNlY3Vy
aXR5T3JpZ2luRGF0YSB7IH07CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7Cisg
ICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogCi0gICAgcmV0dXJuIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQog
CiBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0YTo6c2VjdXJpdHlPcmlnaW4o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggNWY1
NWY5NDJiODFmY2ZlMDBiZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZC4uNzk5MDIzOWM4ZGRhYzIzOWJi
MzkyYmU0NGVjNDIyYzAzMTUyYmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDUsOCArNDUsMTUgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAg
ICAgewogICAgIH0KICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmln
aW5EYXRhIGZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbUZyYW1lKEZyYW1lKik7
CisgICAgc3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7CisgICAgICAgICAgICB1
cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwucHJvdG9jb2woKS50
b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwuaG9z
dCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKSwKKyAgICAgICAgICAgIHVybC5wb3J0KCkKKyAgICAgICAgfTsKKyAgICB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA1MzQxY2E2NWU4
OGZjNzI4Mzc2MGVkYWFjNWI2ZThmZmE4ZDA0MGEwLi45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdj
YzBjYWQ5NDkwYjg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQogCi0g
ICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDhjNGFm
NDJmOGFhMTk1YjNjNmYyYzE0NWMyODhjODBkZDI4OTRhOTQuLjY5YzFiMzM1MzA4YmJmY2Q5N2Jh
NDg1NjUzZTE2YTZjOTc1OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9j
dW1lbnQmIGRvY3VtZW4KICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3Rv
cmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
QXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFN0b3JhZ2VOYW1l
c3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYThhNTJlZGM5ZTdiN2I1Yzhj
MjdkY2JjMGNjNjYyYjhkYWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3MmI0MTRkMTAzOGRm
ZjJmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MzI0LDcgKzQz
MjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRh
dGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT50b3BPcmln
aW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50b3BPcmlnaW4oKS5k
YXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMjUwMTE0ZWYyNTBlZmZhNGU0NmQ5ZDE2MTYz
NzQ5NWU1ZDllMmQ0OS4uYWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0N2NhZjNkNDJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRV
UkwsIGNvCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFJlZ2lzdHJh
dGlvbjogUmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JE
YXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgam9iRGF0
YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpvYkRhdGEudG9wT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC0+dG9w
T3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCku
ZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rl
cjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNlcnZpY2VXb3JrZXJK
b2JEYXRhIGpvYkRhdGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCksIGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwg
PSBjb250ZXh0LT51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JE
YXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRh
LnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAgICBqb2JEYXRhLnNj
b3BlVVJMID0gc2NvcGVVUkw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmCiAKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9u
LT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAg
ICBqb2JEYXRhLmNsaWVudENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsKLSAgICBqb2JEYXRh
LnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC50b3BPcmln
aW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3Jp
cHRVUkwgPSBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggYjg0
YzY2ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0NmIyM2RiOTNlMzU2
ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApA
QCAtNzcsMTMgKzc3LDEyIEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3Jp
Z2luSXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29s
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikgY29uc3QKIHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BPcmlnaW4gPT0gc2Vj
dXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBzY29wZU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlT3Jp
Z2luLT5pc1NhbWVPcmlnaW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwobV9zY29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0YXRpYyBjb25z
dCBjaGFyIHNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5o
CmluZGV4IDIzOWEzMDBiMTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1ZmIuLjcxMGY0MTJi
NDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7
IG1fc2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0ZXNUb09yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDVl
YTQ1Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZiMTYxY2U4Yzg0ODVk
NTYyNjJlYjZhYzY3MTQxNGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6YWRkKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5z
dXJlKG9yaWdpbi50b1N0cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJl
KG9yaWdpbiwgWyZdIHsKICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6
OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbV9vcmlnaW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoaXRl
cmF0b3IgIT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29y
aWdpbkNvdW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lk
IFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAg
IHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1fb3JpZ2luQ291bnRz
LnJlbW92ZShvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3VudHMucmVtb3ZlKG9y
aWdpbik7CiAgICAgcmVtb3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXgg
ZTExZTQ1MTFmZTE5ODA4ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uY2IyOGIzOTQxOTkyOWZj
MmRhZDRlYjdiZDdkZWNlZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3LDMyICsyNywyOSBA
QAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNzIFNXT3JpZ2luU3Rv
cmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
flNXT3JpZ2luU3RvcmUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Ci0gICAg
dm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgYWRkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAg
dm9pZCBjbGVhckFsbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENvbXBsZXRlKCkgPSAw
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0
b3JlKCkgPSAwOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50
czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG1fb3JpZ2luQ291
bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZWVmMGUzMWMyNzFh
OWFjYTY1YTlkMTNiNzk3MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdmM2FjODExMWQ4YTQ3
MzRhZTBiNGRiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9pZCBTV1NlcnZlcjo6
YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiBy
ZWdpc3RyYXQKICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmFkZChy
ZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRyKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7CiAKLSAgICBtX29y
aWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1f
b3JpZ2luU3RvcmUtPmFkZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpy
ZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5
KQogewotICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAgICAgYXV0byByZWdp
c3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFTU0VSVChyZWdpc3Ry
YXRpb24pOwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5SUQucmVtb3Zl
KHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1LDI5IEBAIHZvaWQg
U1dTZXJ2ZXI6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAgbV9jbGVhckNvbXBs
ZXRpb25DYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVmKG9yaWdpbiksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
eworICAgICAgICBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHNlY3Vy
aXR5T3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENvbXBsZXRlZCk7Ci0g
ICAgICAgICAgICBjbGVhcihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgICAgIGNsZWFyKHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9qb2JRdWV1
ZXMucmVtb3ZlSWYoWyZdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBrZXlB
bmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlB
bmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9KTsKIAog
ICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsK
ICAgICBmb3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAg
IGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCisgICAgICAgIGlm
IChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAg
ICAgICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0
KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDogbV9wZW5kaW5nQ29u
dGV4dERhdGFzLnZhbHVlcygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0oYXV0byYgY29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgsMTAgKzQ5OCwxMCBA
QCB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29u
dGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsKLSAgICBhdXRvIG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8q
IGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JP
cmlnaW4ob3JpZ2luKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tVVJMKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nQ29udGV4dERh
dGFzLmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4
dERhdGFzLmVuc3VyZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewogICAgICAgICAgICAg
cmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNTEyLDExICs1MTIsMTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
Y29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9w
ZW5kaW5nQ29udGV4dERhdGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAg
ICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0RGF0YXMudGFrZShj
b250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3IgKGF1dG8mIGRhdGEg
OiBwZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7
CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1
blJlcXVlc3RzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2Uo
Y29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVt
IDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1
blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
aXRlbS52YWx1ZSkKQEAgLTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0
ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBt
CiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rl
cm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1h
cmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWlu
YXRlZFdvcmtlcnM7CiAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlmICh3b3JrZXItPnNl
Y3VyaXR5T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVk
V29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJt
aW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyArNzc5LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3Jp
Z2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2Vy
KHdvcmtlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2Vj
dXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKGNsaWVudE9yaWdp
bi5jbGllbnRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MDUsOSArODA1
LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdS
ZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAotYm9vbCBTV1Nl
cnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5j
b250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsK
KyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9y
aWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNjA2ZGI0NmFkMDI3
Y2YxYmM1NWFmNzcxYjg4MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUyNmVmYzg0NzY0Nzk3
ZmVmYTZhYjIwZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYi5oIgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwo
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xp
ZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldv
cmtlciogYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0
b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhG
dW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjksOCArMjI5LDggQEAg
cHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwog
ICAgIFJlZ2lzdHJhdGlvblN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0gICAgSGFzaE1hcDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4g
bV9wZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3Jr
ZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAgICBIYXNoTWFwPFNl
Y3VyaXR5T3JpZ2luRGF0YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVu
ZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaE1h
cDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
az4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNmFh
NWEyYTlmYmQyMzY2MzliNTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3MmYzMmY1YjEwMTkx
ODFiNzdlMWU5Njg4YzE5MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MCwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4g
Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXJUeXBlPigpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigp
CitzdGF0aWMgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbio+PiBjb25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3Jp
Z2luOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX29yaWdpbihXVEZN
b3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX29yaWdpbi5j
b3B5UmVmKCksIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdp
bigpLmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxs
Q29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4p
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZv
ck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1
cm4gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxTZWN1cml0eU9yaWdp
biY+KG9yaWdpbikpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNl
Y3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEwMmJjNTI1YjcwZDA1
MzRlN2Y3MTBhNDRmMjU5OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUzOGNkZDg3Zjg1ZDg5
ZWM4MmViNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC03
NCwxOCArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCi0gICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVj
dGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJik7CiAKLSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9v
cmlnaW4uZ2V0KCk7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJl
ZjxTZWN1cml0eU9yaWdpbj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiBwcml2
YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEwNjU5MWRhNDA3ZDcx
OWUuLjE1OWJjZTY2OWYxY2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KCkKIGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX29yaWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBt
X3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSkgfTsK
KyAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BP
cmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5zY3JpcHRVUkwpIH07
CiAKICAgICByZXR1cm4gKm1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNXU2Vy
dmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7CisgICAgcmV0dXJuIG9y
aWdpbigpLmNsaWVudE9yaWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBT
V1NlcnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGNjMDc1
OWM2MTZlZjhlODI0YTI3ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAwYWFiOWViMDFiZTRj
YjhjNGRkMGFiMWI2M2ZkODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7
CiAKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
IGNvbnRleHRDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
MGU3ZDgwY2JmODVlYjFkYWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcxZC4uMDE3MmMzYjQxOWI4MWYx
NWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKICAgICBpZiAoc291cmNlT3JpZ2luKQotICAgICAg
ICBlbmNvZGVyIDw8IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3Vy
Y2VPcmlnaW4pOworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZU9yaWdpbi0+ZGF0YSgpOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVh
ZGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0
eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcAppbmRleCAzYzRiNDI0NmU4MTIwODdiMzBlMzZiYWZjMTY4ZWY0NjYzYzcwYThi
Li5iY2Y5NTVhNjZjYjc2ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNkMTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tT
dHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvcwogCiBXS1N0cmluZ1JlZiBXS1NlY3Vy
aXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlU
b1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
T3JpZ2luU3RvcmUuY3BwCmluZGV4IDlkY2FkOTRiZmYyMjZkNGEwOWUwMmUwYzFhNTAyMTdiNWEx
YTBjZjguLjA0Y2JmMjFiM2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0ODdlOTlkNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdp
blN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXZWJTV09yaWdpblN0
b3JlOjpXZWJTV09yaWdpblN0b3JlKCkKIHsKIH0KIAotdm9pZCBXZWJTV09yaWdpblN0b3JlOjph
ZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2lu
U3RvcmU6OmFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAg
ICAgbV9zdG9yZS5zY2hlZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKG9yaWdp
bi50b1N0cmluZygpKSk7CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiB9CiAK
LXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBtX3N0b3JlLnNjaGVkdWxlUmVt
b3ZhbChjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1f
c3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmgKaW5k
ZXggN2Y4Yzk4NzExYzI1ZGFlODZmZWJlZmMwODhjMDliNTI4OWYxN2ZmOS4uMmQyOWY1NjA5NTg0
ZjEwMjA5ZTgwNmNkMTA2YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5o
CkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dPcmlnaW5TdG9yZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOwpAQCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgc2VuZFN0b3JlSGFuZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBh
ZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmluYWw7Ci0gICAgdm9p
ZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBmaW5hbDsK
KyAgICB2b2lkIGFkZFRvU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikg
ZmluYWw7CisgICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0b3JlKCkgZmluYWw7CiAKICAgICAv
LyBTaGFyZWRTdHJpbmdIYXNoU3RvcmU6OkNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5MDYwZTVkNDc0MzNhNWNmNTMw
MzZkNS4uMzhjMzk5MWVlZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGExNmRhNmUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZAogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1
bGVKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiB7Ci0gICAgYXV0
byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRV
UkwpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21V
Ukwoam9iRGF0YS5zY3JpcHRVUkwpOwogICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQog
ICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlv
bnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKIAogdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjbGll
bnRPcmlnaW4gPSBDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS51
cmwpKSB9OworICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0
b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51cmwpIH07CiAgICAg
bV9jbGllbnRPcmlnaW5zLmFkZChkYXRhLmlkZW50aWZpZXIsIGNsaWVudE9yaWdpbik7CiAgICAg
c2VydmVyKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY2xpZW50T3JpZ2lu
KSwgV1RGTW92ZShkYXRhKSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCmluZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQwNTEzNDZmOTk4MmQ4
OGQuLjAwYjdmYzdjODM5OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4MThhZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zNyw4
ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1v
dmUob3JpZ2luKSkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBjQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJiMTBiZGVmOTJjZWZhNTYyYTc4ZDhmOTUyMWRj
MzhlNzFkYmM2N2IuLmU5YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdjMzE4MmMzMjhkOTk1MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRl
eCBkZDQ4OGM2ZmRmZjgxYzY2MjViYjkxMGQyMDc4MzVjMjE2ODllYTRkLi5mODU3MjRlYTZmZTZm
YzU4ZTliZDQ0MmIxMWMxMDZmYTczZGU2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTEzLDIzICsxMTMsMjQgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBzZWN1cml0eU9y
aWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5T3JpZ2luKCk7CisKICAg
ICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24tPm9yaWdpbigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShz
ZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMu
dmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVy
bWluYXRlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgICAgIHN3
U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZWN1cml0eU9yaWdp
bik7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24tPm9yaWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25Gb3JPcmlnaW4ob3JpZ2luKSkgeworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNs
b3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc3RkOjpu
dWxsb3B0KTsKICAgICB9CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAor
Ym9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1Nl
cnZlcikgewotICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvck9yaWdpbihvcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAg
fSk7CiB9CiAjZW5kaWYKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpw
ZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAKLXZv
aWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtMjc0LDkgKzI3NSw4
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nl
c3MgJiYgIW1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgewogICAg
ICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKTsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmNyZWF0ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShvcmlnaW4pLCBjb250
ZXh0Q29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4s
IG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFk
ZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IAogICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IGZhbHNlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAjZW5k
aWYKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5
T3JpZ2luRGF0YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
ewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVh
dGUoW3RoaXMsIGNhbGxiYWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoY2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0ICszNDgsMTQgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucykpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNz
aW9uKHNlc3Npb25JRCk7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IHNlY3VyaXR5
T3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2luRGF0YS5zZWN1cml0
eU9yaWdpbigpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5
T3JpZ2lucykKKyAgICAgICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoIXdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
KQotICAgICAgICBpZGJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1v
dmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKHNlc3Npb25J
RCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lucywgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICNl
bmRpZgogfQogCkBAIC00NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdpblN0b3JlJiBTdG9yYWdl
UHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXJGb3JTZXNz
aW9uKHNlc3Npb25JRCkub3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JP
cmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJmNvbnN0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9ucy5nZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQg
U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gc2Vzc2lvbklEKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fd2FpdGluZ0Zv
clNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBpZiAoc2Vzc2lv
bklEKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKSwgKnNlc3Npb25JRCksIDApOworICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNl
c3Npb24oc2VjdXJpdHlPcmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAgICBlbHNlCi0gICAgICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
UHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKSwgMCk7CisgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cyhzZWN1cml0eU9yaWdpbiksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWls
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1ICs1MzcsMTUgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZl
ckNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29u
bmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2lu
ID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpOworICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQog
ICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwog
ICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CiAKICAgICBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQxMmZlMzE2
ZTlmMjYxNzlmNzQ1NGE3MWM3OWM5ZmZhMzljMDZiYzkuLjIwNzhhMTMxMDczOTg1OGNjNGIyN2My
YzViMzE3M2NjNWY0YTllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lEQlNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNo
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlLmg+
CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVyOwog
Y2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0czsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgc3RkOjpvcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4pOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4pOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mKTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCiAgICAgV2Vi
U1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwot
ICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29u
c3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0
cmluZyYgcGF0aCk7CkBAIC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+
PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhLCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRv
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggMDMxOWU1YWVk
M2ZmYzBhMzcwOWQ0Zjc1ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNkMTc4NTQ0NWMzOTczM2IyZjA0
OGE2MGYyMDIxNTA4YzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZy
YW1lSW5mby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpj
cmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KICAg
ICBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWUoKTsKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBu
b3QganVzdCB0aGUgVVJMLgogICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdChmcmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9y
aWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJp
dHlPcmlnaW4uZGF0YSgpOwogICAgIGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IGZyYW1lLmZyYW1l
SUQoKTsKIAogICAgIHJldHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0YSwgZnJhbWUucGFnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4YjkzZDg1YTEzYjdjNTk2NzU3
Yjg0Mzk2MDAwMS4uZWU4N2FjMTkxNTA2MDZiNGViODNhODNkZDdhZjNiMjdiMDI3NzgzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUmUKICAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJz
aXRlRGF0YVN0b3JlKCk7CiAKICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAg
IGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0
YShXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNv
cmQgfSwgW10geyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxMGQ2MzMxZDdiN2Q1
MjJkNzVhNDRiM2YzNjQ1MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1MjI1YjlkOWRkMjRlZjgxZmE4
YWY3NTNhMzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zv
ck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0
b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLT5k
ZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0
eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVs
ZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdl
TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggMjNhYTRkMTNkNDEzM2ZkZTg5YmU0ZGMwYzE0
ZWI5OTgwZjhhOWU4Mi4uNmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5MGRkZDlmZmIxMWI1ODdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2Fj
aGVNYQogCiAgICAgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAg
ICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5
cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkp
OwogCiAgICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CiAKICAg
ICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewogICAg
ICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsK
KyAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIHRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICAgICAgZGF0YVJlY29y
ZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDY2NTBiNTgz
NWQzZjc3ZDYzNTA1YjBkMjIzNTMyNmUzMGYyYWQzNWEuLjcxZWQ0NmZlOWUzMzEzMGNhNjcyYTNk
ZTIyMTFiODIyMmZjNGFhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hD
YWNoZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
KSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hl
LCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
VmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3Zl
KGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKQEAgLTQ4MCw3
ICs0ODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3Jp
Z2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzOwogCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2td
IChhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygp
KSk7CisgICAgICAgIGF1dG8mIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRhdGEo
KTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGEgPT0gcmVjb3JkT3JpZ2luKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGNhZWVlYzNiMTI2NDE2MDI1N2M3MDU5Yzg5NzFlZGZkNDIzMDk1NzYuLmI2
MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5NzU5N2M1NjgxODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC00
MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKK1JlZjxTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bv
b2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBXVEZNb3ZlKG9yaWdpbiksIHN0b3JlIH0p
OworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7CiAgICAgcHJveHktPmNvbm5lY3Qo
KTsKICAgICByZXR1cm4gcHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURh
dGFTdG9yZSYgc3RvcmUpCiAgICAgOiBXZWJQcm9jZXNzUHJveHkgeyBwb29sLCBzdG9yZSB9Ci0g
ICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKQogICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlEKGdlbmVyYXRlUGFnZUlE
KCkpCiB7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAgICAg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwogCiAgICAg
bGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJz
ZXJ2aWNlLXdvcmtlci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIpKTsKLSAgICBsYXVuY2hP
cHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5
LW9yaWdpbiIpLCBvcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBz
ZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBzdGQ6Om9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDFjNzcw
YjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRlNWY3ZDk2MTE4MDUuLjMzNTFiNzQwOTRiZTQ3ZTgzMGUz
OTdjNDA2ODFiYWEwODI5OGI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKIAogY2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBX
ZWJQcm9jZXNzUHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgflNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNl
V29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwpAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4oKSB7IHJldHVybiBtX29y
aWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAgICAgdWludDY0X3Qg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZh
dGU6CkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtl
clByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9v
cmlnaW47CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47
CiAgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5jcHAKaW5kZXggOWU3ODhmNDc0NzBlNmU0ZWFiMWZmYTkxMDUzNWJiMDk3NzNiYTMyMC4uNTRh
MDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4NDlmZTRjYWQwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBA
IC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogICAgIH0KIAogICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFNlY3VyaXR5T3JpZ2lu
RGF0YSBvcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
ID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1By
b3h5KS5vcmlnaW4oKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2luID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5zZWN1cml0eU9yaWdpbigpOwog
ICAgIH0KICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdvcmtlclByb2Nlc3MsIG9y
aWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRl
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgc2Vj
dXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAzNTFiZjZhYjI2YjZlZWZkODNmYTk2MjdhOGU0Yzc2NjIxYTA3ZjY2
Li4yZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBkZjFkNThjM2U0NDc1ZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsMTIgKzU5MSwxMSBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQ
cm94eSogc3RvcmFnZVByb2Nlc3NQcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHksIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNz
aW9uSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5ID09IG1fc3RvcmFnZVBy
b2Nlc3MpOwogCi0gICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhvcmlnaW4ucHRyKCkp
KQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmln
aW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdv
cmtlcnMuY2xlYXIoKTsKQEAgLTYxNCw4ICs2MTMsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVBy
bwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgb3JpZ2luLmNvcHlSZWYo
KSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQo
b3JpZ2luLmNvcHlSZWYoKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CisgICAg
YXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6Y3JlYXRlKCp0aGlzLCBzZWN1cml0eU9yaWdpbiwgKndlYnNpdGVEYXRhU3RvcmUpOworICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC05OTAsNyArOTg5LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5PigqcHJvY2VzcykpIHsKLSAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZSgmZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eT4oKnByb2Nlc3MpLm9yaWdpbigpKTsKKyAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nl
c3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAg
ICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KQEAgLTE4NzgsOSArMTg3Nyw5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAg
ICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3Vu
ZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBj
YW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgog
ICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9
IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1f
Zm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdp
bikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIo
KS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1
cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIG1fZm9y
ZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2lu
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JT
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
ODg4LDkgKzE4ODcsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAm
JiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3Mg
cGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3Mg
OiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2luKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNv
bnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAgICAg
ICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2VjdXJpdHlP
cmlnaW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAg
ICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChz
ZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDU3
ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVmMzY4MTBiMTU4MDA1ZC4uODk1ZmMzMzY5ODBhOGIzZDM4
NzI1MDAwNmM0MTZjODhiYzI1ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAgICBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OwotICAgIGNvbnN0IEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJv
eGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQorICAgIGNv
bnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsg
bnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKQEAgLTY3Nyw4ICs2NzcsOCBAQCBw
cml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1f
Zm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2Vz
czsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+LCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlU
b2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBI
YXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQ
cm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+
IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNl
bmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZmQ0ODA0ZGNiYmYzNTRkZmNiMzllZDBlOWNkZTc5OGZl
MTI5MTg2OS4uN2Y3MDJlMThlYjNhNjdkYmU0NzZlNjkzYTBmNDIwZDEzYjRjZjc2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0
b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2NhbFN0bwogICAgIH0p
OwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQordm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3Vy
aXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8m
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaAppbmRleCAyYjFmOGRlYjZhYmQyOWQ0NTNiNTQzODQ5MTcyMzQwODYzNmI3NmI1Li44
NDIzYjk5MzQ1ZjhkOTExNzA3ZTBmOGI1YzVmZTZhZDA0MGUyMzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zv
ck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBnZXRMb2NhbFN0
b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3Rv
cmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYpOworICAg
IHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2lu
c01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGMyMTQzZmRkZWM1YTYx
YTQwZTg2NWE1NmRjOTliMGE5YjIxMTE2ZTguLjBmOWU5YWMwNDQ3MzlkOTM1YTUyODI4MWU3NTRh
ODZkYTI2YTg2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsK
LSAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFU
eXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkg
ZW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsK
ICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9y
aWdpbnMpIHsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBzaXplID0gZmV0Y2hPcHRpb25zLmNv
bnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykgPyBzdG9yYWdlLT5k
aXNrVXNhZ2VGb3JPcmlnaW4oKm9yaWdpbikgOiAwOwotICAgICAgICAgICAgICAgIFdlYnNpdGVE
YXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlLCBzaXplIH07CisgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5
IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGUsIHNpemUgfTsKIAogICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBw
ZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDkzYjkzNmZlNWEyMWM1MDRl
YjMzMWFjMTVlN2UzNTRmMGQwNjc0ZjkuLjAxZjEzNTdhODg2MzI3MDI3YWQxNjVmMWYwM2U4MjIz
MGI0OTVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbgogCiAg
ICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpOwogCi0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5m
cmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiku
ZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25J
RCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIo
KSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5j
ZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1YjMwZjM4NzM5MzNiMGMxMDA0NmMyZDZjOWY4Zjg4
MzA5MGYxNWNiLi44ZjVkNjFiZjcxYzcyMjI2YTdiMDkxZTNkYjM5NDc4YmZkM2FmM2JjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIFdLQXJyYXlSZWYg
V0tCdW5kbGVQYWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9y
aWdpbnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykK
LSAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpj
cmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9y
aWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMu
dW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUob3JpZ2luLT5kYXRhKCkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUob3JpZ2luSWRlbnRpZmllcnMpKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCBlNGQzN2EyMzZjY2Mw
MmZiNDU4NGI2ZTM2YjFiYzQ4ZDk1OGU3NDRhLi45Y2NhY2UwNTc3YzdmYmM4ZmY1NzA2YmRmYWQ5
M2U0MzdjYzZlMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFT
dHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6c2VuZFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgdQogICAg
IEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBhdXRvKiB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0g
dXNlclJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwotICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUo
cmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKSksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BMZXZlbERvY3VtZW50T3Jp
Z2luKSwgdXNlclJlcXVlc3QucmVxdWVzdCgpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0
SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHVzZXJSZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3Jp
Z2luKCktPmRhdGEoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0YSgpLCB1c2VyUmVxdWVz
dC5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKQEAg
LTE4Miw3ICsxODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
ZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0VudW1lcgogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSByZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRP
cmlnaW4oKTsKICAgICBBU1NFUlQodG9wTGV2ZWxEb2N1bWVudE9yaWdpbik7Ci0gICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJh
bWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbigqcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmln
aW4pKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCByZXF1
ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCktPmRhdGEoKSwgdG9wTGV2ZWxEb2N1bWVudE9y
aWdpbi0+ZGF0YSgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmljZXNF
bnVtZXJhdGlvblJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAxZTIy
MTJlMDU4ZWFlODE0NDU0ZGJmYmJkOTZlMzU3OWJlYzUxZTg3Li41ODk4NDAyYzMxNDljY2IzNDkz
NzE2MzZiMDcyMWE2MWY5Nzk0Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+
CkBAIC05NSw3ICs5Niw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAKIHZvaWQgV2ViU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGEmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCks
IGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSk7
CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIpCkBAIC0xNTMsNyAr
MTU0LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB0b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CisgICAgcnVuT3JEZWxheVRh
c2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdp
biA9IHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAg
ICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92
ZShjYWxsYmFjaykpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7
CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdp
c3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2kKIHsKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1f
b25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5S
ZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCB0
b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKQEAgLTE5MSw3
ICsxOTIsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhj
b25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjbwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKKyAgICBydW5PckRlbGF5
VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3Jp
Z2luID0gdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAg
ICAgICBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ3YjRkYmI4MjNiNWFlYWExZDdlMzA1ZDgyYTNl
YzNhMTc5NzkwNzMuLmQ0ZWVlMzJjOWRiOTE3MmNmYzkwNGIwZWY0ZGI2NGIzNjYyNGQwMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03MzEsMTcgKzczMSwxNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgCiAgICAgYXV0byYgb3JpZ2lu
ID0gZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvIG9yaWdpbkRh
dGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pOworICAg
IGF1dG8mIG9yaWdpbkRhdGEgPSBvcmlnaW4uZGF0YSgpOwogICAgIGF1dG8mIHRyYWNrZXIgPSBE
YXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJh
Y2tlci5xdW90YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRy
YWNrZXIudXNhZ2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRh
YmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIG5ld1F1b3RhID0gbV9w
YWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3Bh
Z2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5h
bWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVz
YWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlmICghbmV3UXVvdGEpIHsK
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRl
ZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0YWJhc2VO
YW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVz
YWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSksCisg
ICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGEo
d2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0
YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2Uo
KSksCiAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNl
UXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0
eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVu
ZCk7CiAgICAgfQogCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwK
IAogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmll
cigpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAorICAgICAgICBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG9yaWdpbi5k
YXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRl
ZCksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRz
OjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NX
aWxsU3VzcGVuZCk7CiAKICAgICBjYWNoZVN0b3JhZ2Uuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmln
aW4oJm9yaWdpbiwgbmV3UXVvdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggM2ZiYjE3ZDEyNTI1OTJmY2Q5ODNjYWM2NmQ2NzhmZWEyODNhMmZkZC4uZWU4Mzk3Y2I1ZWZh
NTcyMmVkYzdkZDNkZGJmN2U0MTdlY2Y2OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBG
cmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKICAgICBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFp
bkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKICAgICBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChzb3VyY2VEb2N1bWVudC51cmwo
KSk7Ci0gICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc291cmNlRG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0g
c291cmNlRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CiAgICAgaWYgKG9yaWdpbmF0
aW5nRnJhbWUpCiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gb3Jp
Z2luYXRpbmdGcmFtZS0+ZnJhbWVJRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggYjZmZGYwYTdiY2RlYzQzM2E2ZDgwMzc0NjUzZjdhNDVhMWNlN2FkNy4u
NmM3ZmM5ODNhNjVhOTU5MGI1ZWQ4NDI3ODc0ODg1NzEzNDU5MGY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTI3Myw3ICsxMjczLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXQKIHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6
IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCi0g
ICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkg
eyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSwgV2Vic2l0
ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKKyAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVu
dHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRl
RGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmNwcAppbmRleCBjMzBkZmVkMzhhZjU0Mjc1NDQ1MjQ3YzFmMjYyNDc2NTdkYTFkOWM1Li41ZDVj
MmJjMDVmYzYwYzRlMmY3MGNjYmFhZDkwYjc5NTU1MmQ4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAg
LTEyMiw5ICsxMjIsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRs
ZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK2NvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKG1fc3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBt
X3N0b3JhZ2VBcmVhTWFwLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDQzM2M0ODczODNjNDgzNjM1YWM2ZjMyNDQ2NTUz
NThiZWY1NzQ5ODEuLjE2NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3MzkyY2QxODM0MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKLSAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7CiAgICAg
UmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IGEy
NjUwZDFiM2ViZmM3MjhjMjc1ZWUwMTBiZmVhM2EyNjhiMGI4ODYuLjQ3MTNhYzRiN2UxYzc4ZTEz
MjJmNDlmMmI1NWZjODM5MjY1YjgxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTc0LDE0ICs3NCwxNCBA
QCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0
b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgog
ICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAoU2VjdXJp
dHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS0+dG9wTGV2ZWxPcmln
aW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
dG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbiht
X3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFn
ZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCks
IG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFn
ZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VNYXAo
bV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBt
X3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKIAogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgU3RvcmFnZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
OjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFj
ZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VN
YW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSks
IDApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsOgpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vz
c2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAgICAgICAg
IGZyYW1lcy5hcHBlbmQoZnJhbWUpOwogICAgIH0KIAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwgZnJhbWVzLCBr
ZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFt
ZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4t
PmRhdGEoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdl
RXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29u
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5k
ZXggMjFmZDU4NzA4ODAxYzA4ZjZjMTU2ZjA5NTRjODg2M2QwNDZlOTFjYy4uMmYxY2QwN2E3YWRk
MWU2YTUwZThhMjg5YWI5YWViYjczYTE3NGExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKCkKIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiB7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3Zl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1hcC5zZWN1cml0eU9yaWdp
bigpKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7CiB9CiAKIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCkBA
IC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50
KCkgeyB9CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9CiAKLSAgICBTZWN1cml0
eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAorICAgIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
c2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCAxNjQ3NzIyNzg0Y2JhNGNlM2FkYmYxZTEyMmFhYmYw
ZTYwMzk1ZWM5Li4zODZkNDhkOTkwMjZiYzFiMTcxZGExYmU2ZDY2NDNmZjA0MDZmZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vj
dXJpdHlPcmlnaW47IH0KIAogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAgICB2
b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAppbmRleCBkNWU1Zjc0NzdlODMzZDI0Y2ViM2JhMTkyOGYxZDFjMTY5MmZlYWJhLi5k
ZGJkYjIyZWEwZmEwZGM0YjFjYmQ1YTZmYzZmODg2NWI4YWVhMTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTYzNyw3ICs2MzcsNyBA
QCBsb25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsK
IAotICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihvcmlnaW4tPmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlci5tbQppbmRleCA3NmMyOGY0ZGRiZjc0OWVmMGRhYjIxOTA0OGNlZDIx
MmE5ZDAwYmRlLi4wMDUxZjU4MmRkNTQ2MmZkZmU1ZmY4MzdlMGMxOWEwNjQwMTA3ZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlci5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIC0gKE5TQXJyYXkgKilkYXRhYmFzZXNXaXRoT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIGlmICghb3JpZ2luKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAgVmVjdG9yPFN0cmluZz4g
bmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhb
b3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKICAgICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6ZSgpXTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lVmVjdG9yKQogICAgICAgICBbbmFtZXMgYWRkT2Jq
ZWN0OihOU1N0cmluZyAqKW5hbWVdOwpAQCAtMTQyLDEyICsxNDIsMTIgQEAgLSAodm9pZClkZWxl
dGVBbGxEYXRhYmFzZXMKIAogLSAoQk9PTClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bigqW29yaWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tl
cjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQog
CiAtIChCT09MKWRlbGV0ZURhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciB3
aXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBvcmln
aW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pLCBkYXRhYmFz
ZUlkZW50aWZpZXIpOworICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5n
bGV0b24oKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpLCBkYXRhYmFzZUlk
ZW50aWZpZXIpOwogfQogCiAvLyBGb3IgRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBvbmx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1
b3RhTWFuYWdlci5tbQppbmRleCA5Yjg0MTg2MDJlNTlhMWNhOWYyY2M5ZTQ4OGI2OGRlNjY2Y2Iy
MjIxLi4xMDhjNTI4N2Y5MDdlODFhNjFhMDFhYTcyNDIzYzk2MDc5NTBiYzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90
YU1hbmFnZXIubW0KQEAgLTUzLDEyICs1MywxMiBAQCAtIChXZWJTZWN1cml0eU9yaWdpbiAqKW9y
aWdpbgogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6c2luZ2xldG9uKCkudXNhZ2UoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAtICh1
bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
W19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkucXVvdGEoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAvLyBJZiB0aGUgcXVvdGEg
aXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1c2FnZSwgdGhhdCBxdW90
YSB3aWxsCkBAIC02Niw3ICs2Niw3IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogLy8g
cHJldmVudCBuZXcgZGF0YSBmcm9tIGJlaW5nIGFkZGVkIHRvIGRhdGFiYXNlcyBpbiB0aGF0IG9y
aWdpbi4KIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewotICAg
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSksIHF1b3RhKTsKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgp
LCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCmluZGV4IDlhNjg5Y2E1NTk0NzNlZDNiMDE1NGFh
OTVjZWM2ZTUxZmE5YTdkNzAuLjZlNTdlY2IzNDg5YjVhMmQ0NzRmYTg1ZWNhZWU3ZDY3MmI1YzM4
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFn
ZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlTWFuYWdlci5tbQpAQCAtODQsNyArODQsNyBAQCAtICh2b2lkKWRlbGV0ZUFsbE9yaWdpbnMK
IAogLSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0g
ICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKKyAgICBX
ZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2Nv
cmVdLT5kYXRhKCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpZGlza1VzYWdlRm9yT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRl
eCA0ZjQyNDgzN2RlYThhOWEyYzRkNTdjYWY2YzgzZGFhZjg0ZTcyYTYxLi40ZTRjMTNkZmI3M2Fi
NjRhZWU5N2Q3YTM3Mzk1MTNhZTQ5MjQyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAt
NzEsNyArNzEsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNTdHJpbmcgKilkYXRhYmFz
ZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpLmRh
dGFiYXNlSWRlbnRpZmllcigpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5
T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCk7CiB9CiAKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0xNjksMTcgKzE2OSwxNyBAQCBAaW1wbGVtZW50YXRpb24gV2Vi
U2VjdXJpdHlPcmlnaW4gKERlcHJlY2F0ZWQpCiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2Fn
ZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkudXNhZ2UocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihf
cHJpdmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90
YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkpOwog
fQogCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3By
aXZhdGUpKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVv
dGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpLCBx
dW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCmluZGV4IGZiNTQ0MDgwMjBhMDcyMzVhZjZhZTRlNDVjYmYyMWEyOTQ4ZTRh
NjQuLjJjYzk4OTM4NjVmMzMwNGUxYzQ1NDMzM2JlOGI2Y2JjZDJkMWRjNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMjU2LDcgKzI1
Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKF9J
bl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdp
bikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gZGF0YWJhc2VOYW1lcyA9IERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
KCkpKTsKKyAgICBhdXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLmRhdGFiYXNlTmFtZXMod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPmRh
dGEoKSk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4+PiBlbnVt
VmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4+OjphZG9wdChk
YXRhYmFzZU5hbWVzKSk7CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNl
TWFuYWdlcjo6ZGVsZXRlT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdp
bih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKIAogICAgIHJl
dHVybiBTX09LOwogfQpAQCAtMzMxLDcgKzMzMSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1lLCBfSW5fb3B0XyBJV2Vi
CiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0
eU9yaWdpbigpKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFt
ZSkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKHdl
YlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCksIFN0cmluZyhkYXRhYmFz
ZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTM5Niw3ICszOTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVv
dGEoX0luXyBCU1RSIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogICAgIGlmICh0
aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhvcmlnaW4pKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5kYXRhKCks
IHF1b3RhKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDkwNmNiYmE1MWRjNzU0OWJiNzNlZGYyNTcz
ZjJhZmFlMDIzZGMzMDcuLjgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZShfT3V0XyB1
bnNpZ25lZCBsb25nIGxvbmcqIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3Vy
aXR5T3JpZ2luKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
dXNhZ2UobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtMTQwLDEzICsxNDAsMTMgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cXVvdGEoX091
dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5n
bGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqbV9z
ZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLnF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAgICAgICAgIAogSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEodW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKSAKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNl
dFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5
T3JpZ2luKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVv
dGEobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336458</attachid>
            <date>2018-03-23 21:57:54 -0700</date>
            <delta_ts>2018-03-23 22:54:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323215753.patch</filename>
            <type>text/plain</type>
            <size>132487</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3
NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBT
dG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4u
Z2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDlj
MWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVj
ZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcg
KzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51
bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNo
ZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAg
c3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgy
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVt
ZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3Jv
dXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3Jv
dXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1h
bmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3Rh
dGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEp
OwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1
YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4
YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0
LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9y
YWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdl
KCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRk
OGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0
NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVS
TCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygp
IDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7
IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1
cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2Fu
IGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3Vt
ZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBE
T00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAg
ICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkK
KyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAg
ICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5
U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEg
eyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9k
b21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAs
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVk
Q29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQor
ICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2Rv
bWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRo
IHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3Ro
ZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAg
ICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIy
OCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2Yg
YW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywg
c2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJl
bnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAg
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6
WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2Rh
dGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVz
IDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAg
LTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxu
ZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90
b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBv
dGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9N
ICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0
ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAg
aWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90
aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1Nl
dEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBA
IC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9j
YWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwg
dXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBp
ZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3Rv
Y29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdo
aXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0
QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpA
QCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwy
MSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigp
CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwor
ICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1f
ZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9l
bmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmls
ZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJv
dG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBw
ZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9T
dHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIp
CkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1f
ZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1
Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0g
b3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2Nv
bCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
bV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmls
ZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgx
YTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFm
ZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAg
ICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJ
bkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hv
c3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4g
VVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBw
cm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVy
IFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMg
YW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAg
Ym9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8
fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09
ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5
KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7Cisg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3
OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4yMWJhYWJlZjgyYzU4M2YxN2VhMmU4ZDZj
MmY5YTE1MDRiMzU5MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC0zNywzMiArMzcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKLXsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwotCi0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsK
LSAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IHNlY3VyaXR5T3JpZ2luLnBvcnQoKTsKLQotICAg
IHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7Ci19Ci0KIFN0cmluZyBTZWN1cml0eU9yaWdpbkRh
dGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
IjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOworICAg
IGlmIChwcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZp
bGU6Ly8iKTsKKworICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICc6JywgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKIH0KIAogU2VjdXJpdHlPcmln
aW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7CisgICAg
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogICAgIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luRGF0YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgfTsKIAot
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKTsKIH0KIAogUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbkRhdGE6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IDVmNTVmOTQyYjgxZmNmZTAwYmZkNDNiYzEwOTk2ZjNjZGMyNDcxNWQuLjc5
OTAyMzljOGRkYWMyMzliYjM5MmJlNDRlYzQyMmMwMzE1MmJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlVSTC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDggKzQ1LDE1IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGEgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZy
b21GcmFtZShGcmFtZSopOworICAgIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbVVSTChj
b25zdCBVUkwmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eworICAgICAgICAgICAgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDog
dXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLAorICAg
ICAgICAgICAgdXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwucG9ydCgpCisgICAg
ICAgIH07CisgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
aW5kZXggNTM0MWNhNjVlODhmYzcyODM3NjBlZGFhYzViNmU4ZmZhOGQwNDBhMC4uOTczMmI2NmM3
YWY4NTVhZjhlZjNmYTY3Y2MwY2FkOTQ5MGI4NjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWEuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VJ
ZklkbGUoKSB7IH0KIAotICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA4YzRhZjQyZjhhYTE5NWIzYzZmMmMxNDVjMjg4YzgwZGQyODk0YTk0Li42OWMx
YjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVuCiAgICAgZWxzZQogICAgICAgICBzdG9yYWdl
TmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwogCi0gICAgcmV0dXJuIHN0b3Jh
Z2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICByZXR1cm4gc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwog
fQogCiBTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWE4
YTUyZWRjOWU3YjdiNWM4YzI3ZGNiYzBjYzY2MmI4ZGFlOThiYy4uNGZjMjMzZjYyYjdhOTcyYWRh
N2NlNzJiNDE0ZDEwMzhkZmYyZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNDMyNCw3ICs0MzI0LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdl
TWVtb3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYKICAgICAgICAg
aWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihDbGllbnRPcmlnaW4geyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihk
b2N1bWVudC0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgfSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUgeworICAgIG1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihDbGllbnRPcmlnaW4geyBkb2N1bWVu
dC0+dG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkg
fSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CiAgICAgICAgIHByb21p
c2UucmVzb2x2ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MDExNGVmMjUw
ZWZmYTRlNDZkOWQxNjE2Mzc0OTVlNWQ5ZTJkNDkuLmFiMDA3YzkyYjQ3ZWQ3N2ZkN2UxODgwMDlh
ZTU1NDdjYWYzZDQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJhZGRSZWdpc3RyYXRpb246IFJlZ2lzdGVyaW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6
ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAg
ICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRl
eHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0
aW9uczsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlCiAKICAg
ICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNs
aWVudENyZWF0aW9uVVJMID0gY29udGV4dC0+dXJsKCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LT50b3BPcmln
aW4oKSk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRh
KCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXI7
CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwogCkBAIC0yMjEsNyArMjIxLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0
YShtX3N3Q29ubmVjdGlvbi0+c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElk
ZW50aWZpZXIoKSk7CiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQudXJs
KCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VX
b3JrZXJKb2JUeXBlOjpVcGRhdGU7CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwog
ICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuY3BwCmluZGV4IGI4NGM2NmU4ZjVlZTMyZDhiYTc4NWQ0MWY4MjNkNjM4ZjJlODhlMzIuLjFj
M2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKQEAgLTc3LDEzICs3NywxMiBAQCBib29sIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk6Om9yaWdpbklzTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0
bwogICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY2xpZW50VVJMLCBtX3Nj
b3BlKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9P
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK2Jvb2wgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fdG9wT3JpZ2luID09IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikpCisgICAgaWYgKG1f
dG9wT3JpZ2luID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGF1dG8gc2NvcGVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fc2NvcGUpOwotICAg
IHJldHVybiBzY29wZU9yaWdpbi0+aXNTYW1lT3JpZ2luQXMob3JpZ2luKTsKKyAgICByZXR1cm4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fc2NvcGUpID09IHNlY3VyaXR5T3JpZ2luOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaAppbmRleCAyMzlhMzAwYjE3ZmFlNzhlMTE3ZmFjZWVhNDkwZTVhM2E1
MjI5NWZiLi43MTBmNDEyYjQ3MmQ4ZjE3NDJlMGJlZTQ4ZDUwMmJlODlhOWEwMzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFVSTCYgc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlOyB9CiAgICAgdm9pZCBzZXRTY29w
ZShVUkwmJiBzY29wZSkgeyBtX3Njb3BlID0gV1RGTW92ZShzY29wZSk7IH0KIAotICAgIGJvb2wg
cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBy
ZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0
b3JlLmNwcAppbmRleCA1ZWE0NWI5NTVkZmY1NzQzMjc1ZDVkMDA3MTlmMmVjMmRkODRiODA3Li5m
MDFmYjE2MWNlOGM4NDg1ZDU2MjYyZWI2YWM2NzE0MTRkYzAyYzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAK
QEAgLTMyLDE3ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU1dPcmln
aW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2lu
U3RvcmU6OmFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICArK21f
b3JpZ2luQ291bnRzLmVuc3VyZShvcmlnaW4udG9TdHJpbmcoKSwgWyZdIHsKKyAgICArK21fb3Jp
Z2luQ291bnRzLmVuc3VyZShvcmlnaW4sIFsmXSB7CiAgICAgICAgIGFkZFRvU3RvcmUob3JpZ2lu
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lk
IFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9p
ZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luLnRvU3Ry
aW5nKCkpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29yaWdpbkNvdW50cy5maW5kKG9yaWdpbik7
CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fb3JpZ2luQ291bnRzLmVuZCgpKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0
LDkgKzU0LDkgQEAgdm9pZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICByZW1vdmVGcm9tU3RvcmUob3JpZ2luKTsKIH0KIAotdm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAg
ICBtX29yaWdpbkNvdW50cy5yZW1vdmUob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIG1fb3JpZ2lu
Q291bnRzLnJlbW92ZShvcmlnaW4pOwogICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmln
aW5TdG9yZS5oCmluZGV4IGUxMWU0NTExZmUxOTgwOGY2OGZkYWZkNDE3MWRjODA5Y2ZiOGVhN2Uu
LmNiMjhiMzk0MTk5MjlmYzJkYWQ0ZWI3YmQ3ZGVjZWUyMDlkOTRjYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBA
IC0yNywzMiArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotCiBj
bGFzcyBTV09yaWdpblN0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TV09yaWdpblN0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBh
ZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwotICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICB2
b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRDb21wbGV0ZSgpID0gMDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdG9y
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJv
bVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRU
b1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJTdG9yZSgpID0gMDsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRf
dD4gbV9vcmlnaW5Db3VudHM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2
NF90PiBtX29yaWdpbkNvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggYmVlZjBlMzFjMjcxYTlhY2E2NWE5ZDEzYjc5NzFhZDI0YzMxNDQ2My4uYTBiN2ZjMmU4MTQx
N2E3ZjNhYzgxMTFkOGE0NzM0YWUwYjRkYjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1MywxMiArMTUzLDEyIEBA
IHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0CiAgICAgYXV0byBhZGRSZXN1bHQyID0gbV9yZWdpc3Ry
YXRpb25zQnlJRC5hZGQocmVnaXN0cmF0aW9uUHRyLT5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlv
blB0cik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQyLCBhZGRSZXN1bHQyLmlzTmV3RW50
cnkpOwogCi0gICAgbV9vcmlnaW5TdG9yZS0+YWRkKGtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpKTsKIH0KIAog
dm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIGtleSkKIHsKLSAgICBhdXRvIHRvcE9yaWdpbiA9IGtleS50b3BPcmlnaW4o
KS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigp
OwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLnRha2Uoa2V5KTsKICAg
ICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKICAgICBib29sIHdhc1JlbW92ZWQgPSBtX3JlZ2lzdHJh
dGlvbnNCeUlELnJlbW92ZShyZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKSk7CkBAIC0yMDUsMjkg
KzIwNSwyOSBAQCB2b2lkIFNXU2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS5jbGVhckFs
bChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKSB7Ci0gICAg
ICAgIG1fY2xlYXJDb21wbGV0aW9uQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgb3JpZ2luID0gbWFr
ZVJlZihvcmlnaW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBzZWN1cml0eU9yaWdpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbXBv
cnRDb21wbGV0ZWQpOwotICAgICAgICAgICAgY2xlYXIob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICBjbGVhcihzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fam9iUXVldWVzLnJlbW92ZUlmKFsmXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdp
bik7CiAgICAgfSk7CiAKICAgICBWZWN0b3I8U1dTZXJ2ZXJSZWdpc3RyYXRpb24qPiByZWdpc3Ry
YXRpb25zVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBrZXlBbmRWYWx1ZSA6IG1fcmVnaXN0cmF0
aW9ucykgewotICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmln
aW4pKQorICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0
eU9yaWdpbikpCiAgICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKGtleUFu
ZFZhbHVlLnZhbHVlLmdldCgpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGNvbnRleHREYXRh
cyA6IG1fcGVuZGluZ0NvbnRleHREYXRhcy52YWx1ZXMoKSkgewogICAgICAgICBjb250ZXh0RGF0
YXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGNvbnRleHREYXRhKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS5yZWxhdGVzVG9PcmlnaW4ob3Jp
Z2luKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJl
bGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
NDk4LDEwICs0OTgsMTAgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24m
LCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBTV1NlcnZl
cjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiB7Ci0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0
VVJMKTsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1f
cGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShvcmlnaW4pLCBbXSB7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFtd
IHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiB7
IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTUxMiwxMSArNTEyLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogCiB2b2lk
IFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8gcGVuZGluZ0Nv
bnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKCZjb250ZXh0Q29ubmVjdGlv
bi5vcmlnaW4oKSk7CisgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29u
dGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAg
Zm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAgICAgaW5zdGFsbENv
bnRleHREYXRhKGRhdGEpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBt
X3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy50YWtlKCZjb250ZXh0Q29ubmVjdGlvbi5vcmlnaW4o
KSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBtX3NlcnZpY2VXb3JrZXJS
dW5SZXF1ZXN0cy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAgICAgICBi
b29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCkBAIC02NDEsMTEgKzY0MSwxMSBAQCB2b2lkIFNX
U2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBU
ZXJtaW5hdGlvbk1vZGUgbQogICAgIH07CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3Jr
ZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIFZlY3RvcjxTV1NlcnZl
cldvcmtlcio+IHRlcm1pbmF0ZWRXb3JrZXJzOwogICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9y
dW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKG9yaWdp
bi5pc1NhbWVTY2hlbWVIb3N0UG9ydCh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAg
ICBpZiAod29ya2VyLT5zZWN1cml0eU9yaWdpbigpID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAg
ICAgICAgdGVybWluYXRlZFdvcmtlcnMuYXBwZW5kKHdvcmtlci5wdHIoKSk7CiAgICAgfQogICAg
IGZvciAoYXV0byYgdGVybWluYXRlZFdvcmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJzKQpAQCAtNzc5
LDcgKzc3OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICAgICAgICAg
IHRlcm1pbmF0ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKGNsaWVudE9yaWdpbi5jbGllbnRP
cmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY2xpZW50T3JpZ2luLmNs
aWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luKSkKICAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKICAgICAgICAgICAgIH0K
IApAQCAtODA1LDkgKzgwNSw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGll
bnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7
CiB9CiAKLWJvb2wgU1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTV1NlcnZlcjo6
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50c0J5
U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29u
dGFpbnMoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0
cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IDYwNmRiNDZhZDAyN2NmMWJjNTVhZjc3MWI4ODI3ZjEwMDIzNDUyZmMuLmMxM2Y0ODI0NzMz
NzJlMjZlZmM4NDc2NDc5N2ZlZmE2YWIyMGVlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5o
IgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5I
YXNoLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyQWxsKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmKTsKQEAgLTE0NSw3ICsxNDUs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4g
c2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFz
VGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICAKICAgICBDb25uZWN0
aW9uKiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdp
blN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE3Nyw3
ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICB2b2lkIGRp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHRydWU7IH0KIApAQCAt
MjI5LDggKzIyOSw4IEBAIHByaXZhdGU6CiAKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4g
bV9vcmlnaW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3Jl
OwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKLSAgICBIYXNoTWFwPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3Rv
cjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7
CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+PiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9y
aWdpbkRhdGEsIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2
aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2ltcG9ydENvbXBsZXRlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDZhYTVhMmE5ZmJkMjM2NjM5YjU3NDQwMjJjYjM4MjYyOWUxYjVkNGUuLjNj
MjYxNzJmMzJmNWIxMDE5MTgxYjc3ZTFlOTY4OGMxOTAwMmY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUg
IlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMjkgKzM5LDI5IEBAIHN0YXRpYyBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bklkCiAgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5l
Y3Rpb25zQnlPcmlnaW4oKQorc3RhdGljIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zQnlPcmlnaW47CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKICAgICByZXR1cm4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbikK
K1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX2lkZW50
aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAg
ICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4o
KS5hZGQobV9vcmlnaW4uY29weVJlZigpLCB0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENv
bm5lY3Rpb25zQnlPcmlnaW4oKS5hZGQobV9zZWN1cml0eU9yaWdpbiwgdGhpcyk7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5yZW1vdmUobV9vcmlnaW4ucHRy
KCkpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZSht
X3NlY3VyaXR5T3JpZ2luKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0K
IAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
b25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCiB7Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5nZXQoJmNvbnN0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNC
eU9yaWdpbigpLmdldChzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXgg
NmYxMDJiYzUyNWI3MGQwNTM0ZTdmNzEwYTQ0ZjI1OTk4MzZhYTliMS4uMmU2MDRlZjJjYjU0N2Mx
NWQ1MzhjZGQ4N2Y4NWQ4OWVjODJlYjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgpAQCAtNzQsMTggKzc0LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAotICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsK
IAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwor
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA5MGExOWE1ODJkNDBlY2Y5YzI1MjYz
MDUxMDY1OTFkYTQwN2Q3MTllLi4xNTliY2U2NjlmMWNiOWIyZTZiOTRmMzljNmNkMjYxMjcxMmU2
YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnRlcm1pbmF0ZSgpCiBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpv
cmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9vcmlnaW4pCi0gICAgICAgIG1fb3JpZ2luID0g
Q2xpZW50T3JpZ2luIHsgbV9yZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRh
LnNjcmlwdFVSTCkpIH07CisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChtX2Rh
dGEuc2NyaXB0VVJMKSB9OwogCiAgICAgcmV0dXJuICptX29yaWdpbjsKIH0KIAotUmVmPFNlY3Vy
aXR5T3JpZ2luPiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25z
dAogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0YS5zY3JpcHRVUkwp
OworICAgIHJldHVybiBvcmlnaW4oKS5jbGllbnRPcmlnaW47CiB9CiAKIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCBjYzA3NTljNjE2ZWY4ZTgyNGEyN2VmZmM3NDFhNTkzYzVmZmZiYWQ5Li5kOTNm
NTAwMGFhYjllYjAxYmU0Y2I4YzRkZDBhYjFiNjNmZDg2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250
ZXh0RGF0YSgpIGNvbnN0OwogCiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDBlN2Q4MGNiZjg1ZWIxZGFjZmNkZGY1NTIzYTcxODMwNjQ3YzY3MWQu
LjAxNzJjM2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbikKLSAgICAgICAgZW5jb2RlciA8PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2VPcmln
aW4tPmRhdGEoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8
PCBjc3BSZXNwb25zZUhlYWRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggM2M0YjQyNDZlODEyMDg3YjMwZTM2YmFm
YzE2OGVmNDY2M2M3MGE4Yi4uYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVmIHByb3RvY29sLCBXS1N0cmluZ1JlZiBob3MKIAogV0tT
dHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFzZUlkZW50aWZpZXIoV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKHNlY3Vy
aXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV09yaWdpblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAppbmRleCA5ZGNhZDk0YmZmMjI2ZDRhMDll
MDJlMGMxYTUwMjE3YjVhMWEwY2Y4Li4wNGNiZjIxYjNlN2FhYTYzMWI1MjUzYTdkNTk2M2RjNDg3
ZTk5ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwCkBAIC00MSwxMyArNDEsMTMg
QEAgV2ViU1dPcmlnaW5TdG9yZTo6V2ViU1dPcmlnaW5TdG9yZSgpCiB7CiB9CiAKLXZvaWQgV2Vi
U1dPcmlnaW5TdG9yZTo6YWRkVG9TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQor
dm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQogewogICAgIG1fc3RvcmUuc2NoZWR1bGVBZGRpdGlvbihjb21wdXRlU2hhcmVk
U3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5n
Q2hhbmdlcygpOwogfQogCi12b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgbV9z
dG9yZS5zY2hlZHVsZVJlbW92YWwoY29tcHV0ZVNoYXJlZFN0cmluZ0hhc2gob3JpZ2luLnRvU3Ry
aW5nKCkpKTsKICAgICBtX3N0b3JlLmZsdXNoUGVuZGluZ0NoYW5nZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5oCmluZGV4IDdmOGM5ODcxMWMyNWRhZTg2ZmViZWZjMDg4YzA5YjUyODlmMTdm
ZjkuLjJkMjlmNTYwOTU4NGYxMDIwOWU4MDZjZDEwNmFkNzY4ZDBiNDM5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXT3JpZ2luU3RvcmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NX
T3JpZ2luU3RvcmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTUwLDggKzQ2LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZShXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKIAotICAgIHZvaWQgYWRkVG9TdG9yZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYp
IGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJikgZmluYWw7CisgICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJTdG9yZSgp
IGZpbmFsOwogCiAgICAgLy8gU2hhcmVkU3RyaW5nSGFzaFN0b3JlOjpDbGllbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDUwMGY5NDliYzE3ZmRjNTZmOTA2
MGU1ZDQ3NDMzYTVjZjUzMDM2ZDUuLjM4YzM5OTFlZWZkMWFlZWJlYzU1NzJmOTA4MWFjNGRhMTZk
YTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0yMTIs
NyArMjEyLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JE
YXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGpvYkRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKGpvYkRhdGEuc2NyaXB0VVJMKTsKICAgICBpZiAoIVN0b3JhZ2VQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4sIHNlcnZlcigpLnNlc3Np
b25JRCgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkCiAK
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
IGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ewotICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmln
aW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGRhdGEudXJsKSkgfTsKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IENsaWVudE9y
aWdpbiB7IFdURk1vdmUodG9wT3JpZ2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRh
dGEudXJsKSB9OwogICAgIG1fY2xpZW50T3JpZ2lucy5hZGQoZGF0YS5pZGVudGlmaWVyLCBjbGll
bnRPcmlnaW4pOwogICAgIHNlcnZlcigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXVEZN
b3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoZGF0YSksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAxNDg1MGFjZGY2ZjFmYmU4ODk1ZDkz
MDVkMDUxMzQ2Zjk5ODJkODhkLi4wMGI3ZmM3YzgzOThhM2IzMjhkZjU4ZmIyNjhhMDdhOTJkODE4
YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihXVEZNb3ZlKG9yaWdpbikpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisg
ICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBt
X2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiYjEwYmRlZjkyY2Vm
YTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiLi5lOWMzOTg4YzkzNmViOGViZDgyODFkMmI3YzMx
ODJjMzI4ZDk5NTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKaW5kZXggZGQ0ODhjNmZkZmY4MWM2NjI1YmI5MTBkMjA3ODM1YzIxNjg5ZWE0
ZC4uZjg1NzI0ZWE2ZmU2ZmM1OGU5YmQ0NDJiMTFjMTA2ZmE3M2RlNjc2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTExMywyMyAr
MTEzLDI0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCiB7CisgICAg
YXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5zZWN1cml0
eU9yaWdpbigpOworCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKCZzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZl
ciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2lu
KCkpOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0
ZWQoc2VjdXJpdHlPcmlnaW4pOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBpZiAobmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbikpIHsKKyAgICBpZiAobmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkgewogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQi
KTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJp
dHlPcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogfQogCi1ib29sIFN0b3JhZ2VQcm9jZXNz
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikgY29uc3QKK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygp
LCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOwogICAgIH0pOwogfQogI2VuZGlmCkBAIC0yNTAsNyArMjUxLDcgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHRTdG9yYWdlVGFzaygpCiAgICAgdGFzay5wZXJmb3Jt
VGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Ms
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBz
b2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
QEAgLTI3NCw5ICsyNzUsOCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclBybwogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gb3JpZ2luRGF0YS5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUob3JpZ2luLmNvcHlSZWYoKSwgbV9zdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKFdURk1v
dmUob3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgYXV0byBj
b250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRl
KHNlY3VyaXR5T3JpZ2luLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCkt
PmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIGNvbnRleHRDb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiAKICAgICAgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogI2VuZGlmCiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbkRhdGFzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSgpIHsKICAgICAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTM0OCwx
NCArMzQ4LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpKSB7CiAgICAgICAgIGF1dG8mIHNlcnZlciA9
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
bkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQotICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlP
cmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICBzZXJ2ZXIuY2xlYXIoc2VjdXJp
dHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgIGlk
YlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhzZWN1
cml0eU9yaWdpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtNDU1LDIxICs0NTUsMjEgQEAgV2ViU1dPcmln
aW5TdG9yZSYgU3RvcmFnZVByb2Nlc3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+
KHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLm9yaWdpblN0b3JlKCkpOwogfQogCi1XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnMuZ2V0KCZjb25zdF9jYXN0PFNlY3VyaXR5T3JpZ2luJj4ob3JpZ2luKSk7CisgICAgcmV0dXJu
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNlY3VyaXR5T3JpZ2luKTsKIH0KIAot
dm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBz
ZXNzaW9uSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBpZiAobV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7
CiAgICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiksICpzZXNzaW9uSUQpLCAwKTsKKyAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzRm9yRXhwbGljaXRTZXNzaW9uKHNlY3VyaXR5T3JpZ2luLCAqc2Vzc2lvbklEKSwgMCk7CiAg
ICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKSksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3Moc2VjdXJpdHlPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdl
UHJvY2Vzczo6ZGlkRmFpbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKQEAgLTUzNywx
NSArNTM3LDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKLSAgICBhdXRv
JiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpOwotICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkKKyAgICBhdXRv
JiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmln
aW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVy
bWluYXRpbmcgaXQiKTsKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OwogCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0g
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJm9yaWdpbik7CisgICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aAppbmRleCBkMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZmYTM5YzA2YmM5Li4yMDc4YTEz
MTA3Mzk4NThjYzRiMjdjMmM1YjMxNzNjYzVmNGE5ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQmFja2luZ1N0b3Jl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZS5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiBzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogfQogCkBAIC05NCw4ICs5Myw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwotICAgIHZvaWQgY3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZl
ckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKTsKIAogICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEKTsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0OworICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNl
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtMTc3LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogCi0gICAgSGFz
aE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBSZWY8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkg
eyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFi
YXNlUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJh
bWVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
CmluZGV4IDAzMTllNWFlZDNmZmMwYTM3MDlkNGY3NWY2ZDc5Njg2MmI2NWRhNTguLjk2YjEzZDE3
ODU0NDVjMzk3MzNiMmYwNDhhNjBmMjAyMTUwOGM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxGcmFtZUlu
Zm8+IEZyYW1lSW5mbzo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUs
IGNvbnN0IFdlYkNvCiAgICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFp
bkZyYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0
IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KICAgICBmcmFtZUluZm9EYXRhLnJlcXVl
c3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5m
b0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmRhdGEoKTsKICAgICBmcmFtZUluZm9EYXRhLmZyYW1l
SUQgPSBmcmFtZS5mcmFtZUlEKCk7CiAKICAgICByZXR1cm4gY3JlYXRlKGZyYW1lSW5mb0RhdGEs
IGZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhYjYwYWZiNmI0OGI5
M2Q4NWExM2I3YzU5Njc1N2I4NDM5NjAwMDEuLmVlODdhYzE5MTUwNjA2YjRlYjgzYTgzZGQ3YWYz
YjI3YjAyNzc4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlCiAgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1w
bChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHRv
SW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICB3ZWJzaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBmMTBkNjMzMWQ3YjdkNTIyZDc1YTQ0YjNmMzY0NTM4ZmUxODEzZjlmLi40ZTM5ZGFkODJhNTIy
NWI5ZDlkZDI0ZWY4MWZhOGFmNzUzYTM1YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmCiAgICAgaWYgKCFzdG9yYWdlTWFu
YWdlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbih0b0ltcGwo
b3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDIzYWE0ZDEzZDQx
MzNmZGU4OWJlNGRjMGMxNGViOTk4MGY4YTllODIuLjZiMTZjMmEwNWMyNWJkNDBiMTkwODFiOTBk
ZGQ5ZmZiMTFiNTg3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9p
ZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyUmVmIGNhY2hlTWEKIAogICAgIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1v
cnlDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJlY29yZC5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29y
ZCk7CiAgICAgfQogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXJBbGwpIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICAg
ICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogCiAg
ICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAppbmRleCA2NjUwYjU4MzVkM2Y3N2Q2MzUwNWIwZDIyMzUzMjZlMzBmMmFkMzVhLi43MWVkNDZm
ZTllMzMxMzBjYTY3MmEzZGUyMjExYjgyMjJmYzRhYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNv
cmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpET01DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkpOwogICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVj
b3JkcyA9IHsgV1RGTW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9N
Q2FjaGU7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRj
aENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKICAgICBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKIAogICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNv
bnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgewotICAgICAgICBhdXRvIG9yaWdp
bkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChv
cmlnaW4pLT5zdHJpbmcoKSkpOworICAgICAgICBhdXRvJiBvcmlnaW5EYXRhID0gV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+
c3RyaW5nKCkpLT5kYXRhKCk7CiAgICAgICAgIGZvciAoYXV0byYgZGF0YVJlY29yZCA6IGRhdGFS
ZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZE9yaWdpbiA6IGRh
dGFSZWNvcmQub3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhID09IHJl
Y29yZE9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjYWVlZWMzYjEyNjQxNjAyNTdjNzA1OWM4OTcx
ZWRmZDQyMzA5NTc2Li5iNjE5MDRjMDg5OWEzODFkNDFjMzJkMzY0MzJjOTc1OTdjNTY4MTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDIsMTYgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCitSZWY8
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3Jl
YXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKIHsKLSAgICBhdXRvIHByb3h5ID0g
YWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IHsgcG9vbCwgV1RGTW92ZShv
cmlnaW4pLCBzdG9yZSB9KTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5IHsgcG9vbCwgc2VjdXJpdHlPcmlnaW4sIHN0b3JlIH0pOwogICAg
IHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQogCi1TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBw
b29sLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9y
ZSkKK1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHko
V2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQogICAgIDogV2ViUHJvY2Vzc1Byb3h5IHsg
cG9vbCwgc3RvcmUgfQotICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICwgbV9z
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1fc2VydmljZVdvcmtlclBhZ2VJ
RChnZW5lcmF0ZVBhZ2VJRCgpKQogewogfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVu
Y2hPcHRpb25zJgogICAgIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hP
cHRpb25zKTsKIAogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRk
KEFTQ0lJTGl0ZXJhbCgic2VydmljZS13b3JrZXItcHJvY2VzcyIpLCBBU0NJSUxpdGVyYWwoIjEi
KSk7Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlM
aXRlcmFsKCJzZWN1cml0eS1vcmlnaW4iKSwgb3JpZ2luKCkudG9TdHJpbmcoKSk7CisgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJzZWN1
cml0eS1vcmlnaW4iKSwgc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaAppbmRleCAxYzc3MGIxYWQ5MzVmNDY5NGU4Y2MwNmIzYzJkZTVmN2Q5NjExODA1Li4zMzUx
Yjc0MDk0YmU0N2U4MzBlMzk3YzQwNjgxYmFhMDgyOThiNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC0yOCw3ICsy
OCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKQEAgLTM2LDcgKzM2LDcgQEAgc3RydWN0
IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkg
ZmluYWwgOiBwdWJsaWMgV2ViUHJvY2Vzc1Byb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFJlZjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRp
YyBSZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwog
ICAgIH5TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KCk7CiAKICAgICBzdGF0aWMgYm9vbCBoYXNS
ZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0
b3J5KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlckFnZW50KGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
KCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsg
fQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBh
Z2VJRDsgfQogCiBwcml2YXRlOgpAQCAtNTYsOSArNTYsOSBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+IG1fb3JpZ2luOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBt
X3NlY3VyaXR5T3JpZ2luOwogICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7IDAg
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDllNzg4ZjQ3NDcwZTZlNGVhYjFmZmE5MTA1MzVi
YjA5NzczYmEzMjAuLjU0YTA3OTI5YmViODVhNzZjNmMyOTZmODRiZDg2ODQ5ZmU0Y2FkMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTIyLDE1ICsxMjIsMTUgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1By
b3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9j
ZXMKICAgICB9CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKLSAg
ICBTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luOworICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSkpIHsKICAgICAgICAgaXNTZXJ2
aWNlV29ya2VyUHJvY2VzcyA9IHRydWU7Ci0gICAgICAgIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk+KHdlYlByb2Nlc3NQcm94eSkub3JpZ2luKCkpOworICAgICAgICBzZWN1cml0eU9yaWdpbiA9
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSkuc2Vj
dXJpdHlPcmlnaW4oKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzLCBvcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6U3RvcmFn
ZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIHNlY3VyaXR5T3JpZ2luKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFN0b3JhZ2VQ
cm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMzUxYmY2YWIyNmI2ZWVmZDgzZmE5NjI3
YThlNGM3NjYyMWEwN2Y2Ni4uMmRlN2RiYTI4YmM4MmUwMmMxMjYwMmYwZGYxZDU4YzNlNDQ3NWU3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTkx
LDEyICs1OTEsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVk
KFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzUHIKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94eSwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gc2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6
OlNlc3Npb25JRD4gc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9VTlVTRUQocHJveHksICZwcm94
eSA9PSBtX3N0b3JhZ2VQcm9jZXNzKTsKIAotICAgIGF1dG8gb3JpZ2luID0gb3JpZ2luRGF0YS5z
ZWN1cml0eU9yaWdpbigpOwotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFp
bnMob3JpZ2luLnB0cigpKSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRh
aW5zKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CkBAIC02MTQsOCArNjEzLDggQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKFN0b3JhZ2VQcm8KICAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1w
dHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpS
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsgfSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMs
IG9yaWdpbi5jb3B5UmVmKCksICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKG9yaWdpbi5jb3B5UmVmKCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkucHRyKCkpOworICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgc2VjdXJpdHlPcmlnaW4sICp3ZWJzaXRl
RGF0YVN0b3JlKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKIAogICAgIHVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSwgKndlYnNpdGVEYXRhU3RvcmUpOwpAQCAtOTkwLDcgKzk4
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpKSB7Ci0gICAgICAgIGF1dG8qIHJl
bW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoJmRvd25jYXN0PFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKS5vcmlnaW4oKSk7CisgICAgICAgIGF1
dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoZG93bmNh
c3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLnNlY3VyaXR5T3JpZ2luKCkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9
PSBwcm9jZXNzKTsKICAgICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CkBA
IC0xODc4LDkgKzE4NzcsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHko
KSAmJiBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nl
c3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nl
c3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2luKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmNvbnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgICAgICAg
ICAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+c2VjdXJp
dHlPcmlnaW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAg
ICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFk
ZChzZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9iYWNr
Z3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTg4OCw5ICsxODg3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ug
d2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgb3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPm9yaWdp
bigpOwotICAgICAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdv
cmtlclByb2Nlc3Nlcy5jb250YWlucygmb3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoJm9yaWdpbiwgc2Vy
dmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmljZVdvcmtlclBy
b2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91
bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2lu
KSkKKyAgICAgICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtl
clByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIo
KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IDQ1N2Y0YzRiMTQzODBmNmVkM2NiNjJmMWM1ZjM2ODEwYjE1ODAwNWQuLjg5
NWZjMzM2OTgwYThiM2QzODcyNTAwMDZjNDE2Yzg4YmMyNWVhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CiAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZy
b21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKLSAgICBjb25zdCBIYXNoTWFwPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYg
c2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7IH0KKyAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwg
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxsb3dz
QW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dz
QW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9vbCBh
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVybiBt
X2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQogICAgIHZvaWQgdXBk
YXRlU2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CkBAIC01
MTcsNyArNTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcm9jZXNz
V2l0aFBhZ2VDYWNoZSB7IG51bGxwdHIgfTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5Kj4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4gbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwogICAgIGJvb2wgbV93YWl0aW5nRm9yV29ya2VyQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CkBAIC02
NzcsOCArNjc3LDggQEAgcHJpdmF0ZToKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbiBtX2ZvcmVncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOwogICAgIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZFRva2Vu
Rm9yTmV0d29ya1Byb2Nlc3M7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hN
YXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUHJvY2Vzc1Rocm90dGxlcjo6Rm9y
ZWdyb3VuZEFjdGl2aXR5VG9rZW4+IG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXM7Ci0gICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4+
IG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzOwogI2VuZGlmCiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGZkNDgwNGRjYmJmMzU0ZGZj
YjM5ZWQwZTljZGU3OThmZTEyOTE4NjkuLjdmNzAyZTE4ZWIzYTY3ZGJlNDc2ZTY5M2EwZjQyMGQx
M2I0Y2Y3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBTdG9yYWdlTWFu
YWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhGdW5jdGlvbjx2b2lkIChWZWN0b3I8
TG9jYWxTdG8KICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdp
bikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb3Bp
ZWRPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5h
bWVzcGFjZXMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMmIxZjhkZWI2YWJkMjlkNDUzYjU0Mzg0OTE3
MjM0MDg2MzZiNzZiNS4uODQyM2I5OTM0NWY4ZDkxMTcwN2UwZjhiNWM1ZmU2YWQwNDBlMjMzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVTZXNzaW9u
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAg
IHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9p
ZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmKTsKKyAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4o
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKICAgICB2b2lkIGRlbGV0ZUxv
Y2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmll
c0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCBjMjE0M2ZkZGVjNWE2MWE0MGU4NjVhNTZkYzk5YjBhOWIyMTExNmU4Li4wZjllOWFjMDQ0NzM5
ZDkzNWE1MjgyODFlNzU0YTg2ZGEyNmE4NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBXZWJzaXRlRGF0
YSB3ZWJzaXRlRGF0YTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5
IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdp
biksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH07CisgICAgICAgICAgICAgICAgV2Vi
c2l0ZURhdGE6OkVudHJ5IGVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6
RGlza0NhY2hlLCAwIH07CiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBl
bmQoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00NDcs
NyArNDQ3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KIAogICAgICAgICAgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9
IGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6
ZXMpID8gc3RvcmFnZS0+ZGlza1VzYWdlRm9yT3JpZ2luKCpvcmlnaW4pIDogMDsKLSAgICAgICAg
ICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9OworICAgICAgICAgICAgICAgIFdlYnNpdGVE
YXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBzaXplIH07CiAKICAgICAgICAgICAgICAgICB3ZWJzaXRl
RGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCA5
M2I5MzZmZTVhMjFjNTA0ZWIzMzFhYzE1ZTdlMzU0ZjBkMDY3NGY5Li4wMWYxMzU3YTg4NjMyNzAy
N2FkMTY1ZjFmMDNlODIyMzBiNDk1ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24o
R2VvbG9jYXRpb24KIAogICAgIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlv
bklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZy
YW1lKGdlb2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi5kYXRhKCkuZGF0
YWJhc2VJZGVudGlmaWVyKCkpKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6Y2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uJiBnZW9s
b2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggNWIzMGYzODczOTMzYjBj
MTAwNDZjMmQ2YzlmOGY4ODMwOTBmMTVjYi4uOGY1ZDYxYmY3MWM3MjIyNmE3YjA5MWUzZGIzOTQ3
OGJmZDNhZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTY5Myw3ICs2OTMs
NyBAQCBXS0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlPcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2Fj
aGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgb3JpZ2luSWRlbnRpZmllcnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShvcmlnaW5zLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9y
aWdpbiA6IG9yaWdpbnMpCi0gICAgICAgIG9yaWdpbklkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVu
ZChBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CisgICAgICAgIG9y
aWdpbklkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKG9yaWdp
bi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiAKICAgICByZXR1cm4gdG9BUEkoJkFQ
STo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbklkZW50aWZpZXJzKSkubGVha1JlZigpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5k
ZXggZTRkMzdhMjM2Y2NjMDJmYjQ1ODRiNmUzNmIxYmM0OGQ5NThlNzQ0YS4uOWNjYWNlMDU3N2M3
ZmJjOGZmNTcwNmJkZmFkOTNlNDM3Y2M2ZTFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnNlbmRVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRp
YVJlcXVlc3QmIHUKICAgICBBU1NFUlQod2ViRnJhbWUpOwogCiAgICAgYXV0byogdG9wTGV2ZWxE
b2N1bWVudE9yaWdpbiA9IHVzZXJSZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRPcmlnaW4oKTsKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVy
bWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnVzZXJSZXF1ZXN0LnVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB1c2VyUmVxdWVzdC51c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbigpLT5kYXRhKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4tPmRh
dGEoKSwgdXNlclJlcXVlc3QucmVxdWVzdCgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVl
c3QmIHJlcXVlc3QpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyhNZWRpYURldmljZXNFbnVtZXIK
IAogICAgIFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0gcmVxdWVzdC50
b3BMZXZlbERvY3VtZW50T3JpZ2luKCk7CiAgICAgQVNTRVJUKHRvcExldmVsRG9jdW1lbnRPcmln
aW4pOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVudW1lcmF0ZU1l
ZGlhRGV2aWNlc0ZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlcXVlc3QudXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUt
PmZyYW1lSUQoKSwgcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpLT5kYXRhKCksIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4tPmRhdGEoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24oV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKaW5kZXggMWUyMjEyZTA1OGVhZTgxNDQ1NGRiZmJiZDk2ZTM1NzliZWM1MWU4Ny4uNTg5
ODQwMmMzMTQ5Y2NiMzQ5MzcxNjM2YjA3MjFhNjFmOTc5NGY3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgogI2lu
Y2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJGZXRjaFJlc3VsdC5oPgpAQCAtOTUsNyArOTYsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZAogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGRhdGEsIGNvbnRyb2xsaW5n
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyB0
b3BPcmlnaW4uZGF0YSgpLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlm
aWVyKQpAQCAtMTUzLDcgKzE1NCw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRj
aFJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewor
ICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkxdKCkgbXV0YWJs
ZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lk
ZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9uVGFza3MuYWRkKGNh
bGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxsYmFja0lELCB0b3BPcmln
aW4sIGNsaWVudFVSTCkpOwpAQCAtMTcyLDcgKzE3Myw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjp3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRl
bnRpZmllcjsKICAgICBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzLmFkZChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJRCwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgY2xpZW50VVJMKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVh
ZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMKSk7CiB9CiAKIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFj
a0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlv
bkRhdGEpCkBAIC0xOTEsNyArMTkyLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omdl
dFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY28KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7
CisgICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTF0oKSBtdXRh
YmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNr
SWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rhc2tzLmFkZChj
YWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0cmF0aW9ucyhjYWxsYmFja0lELCB0b3BPcmln
aW4sIGNsaWVudFVSTCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0N2I0ZGJiODIzYjVh
ZWFhMWQ3ZTMwNWQ4MmEzZWMzYTE3OTc5MDczLi5kNGVlZTMyYzlkYjkxNzJjZmM5MDRiMGVmNGRi
NjRiMzY2MjRkMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzMxLDE3ICs3MzEsMTcg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJh
bWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAgICBBU1NFUlQod2ViRnJhbWUpOwogICAgIAog
ICAgIGF1dG8mIG9yaWdpbiA9IGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0g
ICAgYXV0byBvcmlnaW5EYXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4ob3JpZ2luKTsKKyAgICBhdXRvJiBvcmlnaW5EYXRhID0gb3JpZ2luLmRhdGEoKTsKICAgICBh
dXRvJiB0cmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKTsKICAgICBhdXRvIGN1
cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7CiAgICAgYXV0byBjdXJyZW50
T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEpOwogICAgIHVpbnQ2NF90IG5l
d1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBS
ZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKICAg
ICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0
YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBk
ZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBk
ZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAgICBp
ZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhKHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlm
aWVyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEs
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBl
Y3RlZFVzYWdlKCkpLAorICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbkRhdGEuZGF0YWJhc2VJ
ZGVudGlmaWVyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50
UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpLAogICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpSZXBseShuZXdRdW90YSksIG1fcGFnZS5wYWdlSUQoKSwg
U2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Q
cm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIApAQCAtNzY2LDcgKzc2Niw3IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sCiAKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCi0g
ICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkKSwKKyAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpLCBjdXJyZW50UXVvdGEs
IHRvdGFsQnl0ZXNOZWVkZWQpLAogICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpSZXBseShuZXdRdW90YSksIG1fcGFnZS5w
YWdlSUQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3Jt
UGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogCiAgICAgY2FjaGVTdG9yYWdlLnN0b3JlVXBk
YXRlZFF1b3RhRm9yT3JpZ2luKCZvcmlnaW4sIG5ld1F1b3RhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDNmYmIxN2QxMjUyNTkyZmNkOTgzY2FjNjZkNjc4ZmVhMjgzYTJm
ZGQuLmVlODM5N2NiNWVmYTU3MjJlZGM3ZGQzZGRiZjdlNDE3ZWNmNjhkYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODQ1LDcgKzg0NSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0CiAgICAgRnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGE7CiAg
ICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gbmF2aWdhdGlvbkFjdGlv
bi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpID09IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXM7CiAg
ICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qoc291
cmNlRG9jdW1lbnQudXJsKCkpOwotICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNvdXJjZURv
Y3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5z
ZWN1cml0eU9yaWdpbiA9IHNvdXJjZURvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwog
ICAgIGlmIChvcmlnaW5hdGluZ0ZyYW1lKQogICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuZnJhbWVJRCA9IG9yaWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGI2ZmRmMGE3YmNkZWM0MzNhNmQ4MDM3NDY1
M2Y3YTQ1YTFjZTdhZDcuLjZjN2ZjOTgzYTY1YTk1OTBiNWVkODQyNzg3NDg4NTcxMzQ1OTBmOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNzMsNyArMTI3
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0CiB7CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSkpIHsKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhDYWNo
ZShzZXNzaW9uSUQpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vi
c2l0ZURhdGE6OkVudHJ5IHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
Km9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CisgICAgICAgICAg
ICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4t
PmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9CiAKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRp
YWxzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggYzMwZGZlZDM4YWY1NDI3NTQ0NTI0N2MxZjI2MjQ3
NjU3ZGExZDljNS4uNWQ1YzJiYzA1ZmM2MGM0ZTJmNzBjY2JhYWQ5MGI3OTU1NTJkODFiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNs
b3NlRGF0YWJhc2VJZklkbGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1XZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigp
IGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIFN0b3JhZ2VBcmVhSW1wbDo6c2VjdXJp
dHlPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3N0b3JhZ2VBcmVhTWFwLT5zZWN1cml0eU9yaWdpbigp
KTsKKyAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA0MzNjNDg3MzgzYzQ4
MzYzNWFjNmYzMjQ0NjU1MzU4YmVmNTc0OTgxLi4xNjVhZjQ0ZDkwMThiOWI5ZDEzZjczZmNlODQ0
NzM5MmNkMTgzNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlY3JlbWVu
dEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkg
b3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgbV9zdG9y
YWdlQXJlYUlEOwogICAgIFJlZjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcAppbmRleCBhMjY1MGQxYjNlYmZjNzI4YzI3NWVlMDEwYmZlYTNhMjY4YjBiODg2Li40
NzEzYWM0YjdlMWM3OGUxMzIyZjQ5ZjJiNTVmYzgzOTI2NWI4MTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBA
IC03NCwxNCArNzQsMTQgQEAgU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ28KICAgICBjYXNlIFN0b3Jh
Z2VUeXBlOjpMb2NhbDoKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKICAg
ICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9IHN0b3JhZ2VOYW1lc3Bh
Y2UtPnRvcExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6Q3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdl
TmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKnRvcExldmVsT3JpZ2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAgICAgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9y
YWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZl
bE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3Rv
cmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFj
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlP
cmlnaW4pKSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRl
TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
TmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CiAKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQs
IHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdl
TWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5
T3JpZ2luLT5kYXRhKCkpLCAwKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0b3JhZ2VU
eXBlOjpFcGhlbWVyYWxMb2NhbDoKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFy
ZWFJRCwgYwogICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKICAgICB9CiAKLSAgICBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMo
KnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpOworICAg
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0Zy
YW1lcygqcGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBt
X3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNw
YXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGNvbgogICAgICAgICB9CiAgICAgfQogCi0gICAgU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZy
YW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpOworICAgIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdy
b3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJp
dHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCmluZGV4IDIxZmQ1ODcwODgwMWMwOGY2YzE1NmYwOTU0Yzg4NjNkMDQ2ZTkx
Y2MuLjJmMWNkMDdhN2FkZDFlNmE1MGU4YTI4OWFiOWFlYmI3M2ExNzRhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6On5T
dG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERl
c3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQogewotICAgIG1fc3RvcmFn
ZUFyZWFNYXBzLnJlbW92ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbiht
YXAuc2VjdXJpdHlPcmlnaW4oKSkpOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiBSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNy
ZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsg
fQogCi0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QKKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3NlY3VyaXR5T3JpZ2luRGF0YTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggMTY0NzcyMjc4NGNiYTRj
ZTNhZGJmMWUxMjJhYWJmMGU2MDM5NWVjOS4uMzg2ZDQ4ZDk5MDI2YmMxYjE3MWRhMWJlNmQ2NjQz
ZmYwNDA2ZmQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nl
c3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJy
aWRlOwogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAKICAgICBSZWY8U3RvcmFnZUFyZWFJbXBs
PiBjb3B5KCk7CiAgICAgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZDVlNWY3NDc3ZTgzM2QyNGNlYjNiYTE5Mjhm
MWQxYzE2OTJmZWFiYS4uZGRiZGIyMmVhMGZhMGRjNGIxY2JkNWE2ZmM2Zjg4NjViOGFlYTEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBA
IC02MzcsNyArNjM3LDcgQEAgbG9uZyBsb25nIFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
ZGF0YWJhc2VNdXRleCk7CiAKLSAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdp
bihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIHBhdGggPSBkYXRhYmFzZVBhdGhGb3JPcmlnaW4o
b3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmIChwYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KaW5kZXggNzZjMjhmNGRkYmY3NDll
ZjBkYWIyMTkwNDhjZWQyMTJhOWQwMGJkZS4uMDA1MWY1ODJkZDU0NjJmZGZlNWZmODM3ZTBjMTlh
MDY0MDEwN2QzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCAtIChOU0FycmF5ICop
ZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKICAgICBp
ZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1l
VmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSkpOworICAg
IFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigp
LmRhdGFiYXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiAgICAgTlNNdXRhYmxlQXJy
YXkgKm5hbWVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpuYW1l
VmVjdG9yLnNpemUoKV07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZVZlY3RvcikKICAgICAg
ICAgW25hbWVzIGFkZE9iamVjdDooTlNTdHJpbmcgKiluYW1lXTsKQEAgLTE0MiwxMiArMTQyLDEy
IEBAIC0gKHZvaWQpZGVsZXRlQWxsRGF0YWJhc2VzCiAKIC0gKEJPT0wpZGVsZXRlT3JpZ2luOihX
ZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIG9yaWdpbiAm
JiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihbb3JpZ2luIF9jb3Jl
XS0+ZGF0YSgpKTsKIH0KIAogLSAoQk9PTClkZWxldGVEYXRhYmFzZTooTlNTdHJpbmcgKilkYXRh
YmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsK
LSAgICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRl
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4g
X2NvcmVdKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gb3JpZ2luICYmIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0tPmRh
dGEoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIH0KIAogLy8gRm9yIER1bXBSZW5kZXJUcmVlIHN1
cHBvcnQgb25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KaW5kZXggOWI4NDE4NjAyZTU5YTFjYTlmMmNj
OWU0ODhiNjhkZTY2NmNiMjIyMS4uMTA4YzUyODdmOTA3ZTgxYTYxYTAxYWE3MjQyM2M5NjA3OTUw
YmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZVF1b3RhTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCkBAIC01MywxMiArNTMsMTIgQEAgLSAoV2ViU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW4KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7Ci0g
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSkpOworICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFtfb3JpZ2luIF9jb3JlXS0+ZGF0
YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSkpOworICAgIHJldHVybiBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAog
Ly8gSWYgdGhlIHF1b3RhIGlzIHNldCB0byBhIHZhbHVlIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQg
dXNhZ2UsIHRoYXQgcXVvdGEgd2lsbApAQCAtNjYsNyArNjYsNyBAQCAtICh1bnNpZ25lZCBsb25n
IGxvbmcpcXVvdGEKIC8vIHByZXZlbnQgbmV3IGRhdGEgZnJvbSBiZWluZyBhZGRlZCB0byBkYXRh
YmFzZXMgaW4gdGhhdCBvcmlnaW4uCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxv
bmcpcXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29yZV0pLCBx
dW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShbX29yaWdp
biBfY29yZV0tPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQppbmRleCA5YTY4OWNh
NTU5NDczZWQzYjAxNTRhYTk1Y2VjNmU1MWZhOWE3ZDcwLi42ZTU3ZWNiMzQ4OWI1YTJkNDc0ZmE4
NWVjYWVlN2Q2NzJiNWMzOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAodm9pZClk
ZWxldGVBbGxPcmlnaW5zCiAKIC0gKHZvaWQpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdp
biAqKW9yaWdpbgogewotICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxl
dGVPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4g
X2NvcmVdKSk7CisgICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9y
aWdpbihbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25n
KWRpc2tVc2FnZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3Jp
Z2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0KaW5kZXggNGY0MjQ4MzdkZWE4YTlhMmM0ZDU3Y2FmNmM4M2RhYWY4NGU3MmE2
MS4uNGU0YzEzZGZiNzNhYjY0YWVlOTdkN2EzNzM5NTEzYWU0OTI0MjlmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0KQEAgLTcxLDcgKzcxLDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0gKE5T
U3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2lu
Kj4oX3ByaXZhdGUpKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRp
ZmllcigpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY5LDE3ICsxNjksMTcgQEAgQGlt
cGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVkKQogCiAtICh1bnNpZ25l
ZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0
b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOworICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlP
cmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylx
dW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNl
Y3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkucXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKS0+ZGF0YSgpKTsKIH0KIAogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25n
KXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1
cml0eU9yaWdpbio+KF9wcml2YXRlKSksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNp
bmdsZXRvbigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSktPmRhdGEoKSwgcXVvdGEpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBmYjU0NDA4MDIwYTA3MjM1YWY2YWU0
ZTQ1Y2JmMjFhMjk0OGU0YTY0Li4yY2M5ODkzODY1ZjMzMDRlMWM0NTQzMzNiZThiNmNiY2QyZDFk
YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGF0YWJh
c2VzV2l0aE9yaWdpbihfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaQogICAgIGlmICgh
d2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGRh
dGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMo
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5T3JpZ2lu
LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgYXV0byBkYXRhYmFzZU5hbWVzID0gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLT5kYXRhKCkpOwogCiAgICAgQ09NUHRyPENPTUVudW1WYXJpYW50PFZlY3Rv
cjxTdHJpbmc+Pj4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENPTUVudW1WYXJpYW50PFZlY3RvcjxT
dHJpbmc+Pjo6YWRvcHQoZGF0YWJhc2VOYW1lcykpOwogCkBAIC0zMTEsNyArMzExLDcgQEAgSFJF
U1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihfSW5fb3B0XyBJV2ViU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVP
cmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0
b24oKS5kZWxldGVPcmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPmRh
dGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMzMSw3ICszMzEsNyBAQCBIUkVTVUxU
IFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoX0luXyBCU1RSIGRhdGFiYXNlTmFt
ZSwgX0luX29wdF8gSVdlYgogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURh
dGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0
eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmlu
Z0xlbihkYXRhYmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5k
ZWxldGVEYXRhYmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgp
LCBTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zOTYsNyArMzk2LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKF9Jbl8gQlNUUiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSkKICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcikKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0
UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKSksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KG9yaWdpbikuZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5MDZjYmJhNTFk
Yzc1NDliYjczZWRmMjU3M2YyYWZhZTAyM2RjMzA3Li44MWIyNjlmYzQyMGM1OWNjNmVmNWQ5OTJm
Yzc2Y2M0OWIwZWEwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJp
dHlPcmlnaW4uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdp
bjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnVzYWdlKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAKICAgICBy
ZXR1cm4gU19PSzsKIH0KQEAgLTE0MCwxMyArMTQwLDEzIEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlP
cmlnaW46OnF1b3RhKF9PdXRfIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KQogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKm1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgICAgICAKIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnNl
dFF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7Ci0gICAgRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqbV9zZWN1cml0eU9yaWdpbiksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNp
bmdsZXRvbigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcXVvdGEpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336464</attachid>
            <date>2018-03-23 22:54:08 -0700</date>
            <delta_ts>2018-03-24 10:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180323225408.patch</filename>
            <type>text/plain</type>
            <size>132486</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3
NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBT
dG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4u
Z2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDlj
MWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVj
ZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcg
KzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51
bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNo
ZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAg
c3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgy
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVt
ZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3Jv
dXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3Jv
dXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1h
bmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3Rh
dGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEp
OwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1
YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4
YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0
LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9y
YWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdl
KCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRk
OGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0
NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVS
TCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygp
IDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7
IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1
cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2Fu
IGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3Vt
ZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBE
T00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAg
ICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkK
KyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAg
ICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5
U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEg
eyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9k
b21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAs
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVk
Q29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQor
ICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2Rv
bWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRo
IHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3Ro
ZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAg
ICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIy
OCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2Yg
YW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywg
c2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJl
bnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAg
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6
WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2Rh
dGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVz
IDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAg
LTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxu
ZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90
b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBv
dGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9N
ICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0
ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAg
aWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90
aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1Nl
dEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBA
IC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9j
YWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwg
dXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBp
ZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3Rv
Y29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdo
aXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0
QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpA
QCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwy
MSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigp
CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwor
ICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1f
ZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9l
bmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmls
ZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJv
dG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBw
ZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9T
dHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIp
CkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1f
ZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1
Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0g
b3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2Nv
bCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
bV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmls
ZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgx
YTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFm
ZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAg
ICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJ
bkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hv
c3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4g
VVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBw
cm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVy
IFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMg
YW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAg
Ym9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8
fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09
ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5
KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7Cisg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3
OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4yMWJhYWJlZjgyYzU4M2YxN2VhMmU4ZDZj
MmY5YTE1MDRiMzU5MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC0zNywzMiArMzcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKLXsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwotCi0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsK
LSAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IHNlY3VyaXR5T3JpZ2luLnBvcnQoKTsKLQotICAg
IHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7Ci19Ci0KIFN0cmluZyBTZWN1cml0eU9yaWdpbkRh
dGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
IjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOworICAg
IGlmIChwcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZp
bGU6Ly8iKTsKKworICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICc6JywgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKIH0KIAogU2VjdXJpdHlPcmln
aW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7CisgICAg
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogICAgIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luRGF0YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgfTsKIAot
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKTsKIH0KIAogUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbkRhdGE6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IDVmNTVmOTQyYjgxZmNmZTAwYmZkNDNiYzEwOTk2ZjNjZGMyNDcxNWQuLjc5
OTAyMzljOGRkYWMyMzliYjM5MmJlNDRlYzQyMmMwMzE1MmJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlVSTC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDggKzQ1LDE1IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGEgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZy
b21GcmFtZShGcmFtZSopOworICAgIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbVVSTChj
b25zdCBVUkwmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eworICAgICAgICAgICAgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDog
dXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLAorICAg
ICAgICAgICAgdXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwucG9ydCgpCisgICAg
ICAgIH07CisgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
aW5kZXggNTM0MWNhNjVlODhmYzcyODM3NjBlZGFhYzViNmU4ZmZhOGQwNDBhMC4uOTczMmI2NmM3
YWY4NTVhZjhlZjNmYTY3Y2MwY2FkOTQ5MGI4NjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWEuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VJ
ZklkbGUoKSB7IH0KIAotICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA4YzRhZjQyZjhhYTE5NWIzYzZmMmMxNDVjMjg4YzgwZGQyODk0YTk0Li42OWMx
YjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVuCiAgICAgZWxzZQogICAgICAgICBzdG9yYWdl
TmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwogCi0gICAgcmV0dXJuIHN0b3Jh
Z2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICByZXR1cm4gc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwog
fQogCiBTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWE4
YTUyZWRjOWU3YjdiNWM4YzI3ZGNiYzBjYzY2MmI4ZGFlOThiYy4uNGZjMjMzZjYyYjdhOTcyYWRh
N2NlNzJiNDE0ZDEwMzhkZmYyZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNDMyNCw3ICs0MzI0LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdl
TWVtb3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYKICAgICAgICAg
aWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihDbGllbnRPcmlnaW4geyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihk
b2N1bWVudC0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgfSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUgeworICAgIG1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihDbGllbnRPcmlnaW4geyBkb2N1bWVu
dC0+dG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkg
fSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CiAgICAgICAgIHByb21p
c2UucmVzb2x2ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MDExNGVmMjUw
ZWZmYTRlNDZkOWQxNjE2Mzc0OTVlNWQ5ZTJkNDkuLmFiMDA3YzkyYjQ3ZWQ3N2ZkN2UxODgwMDlh
ZTU1NDdjYWYzZDQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJhZGRSZWdpc3RyYXRpb246IFJlZ2lzdGVyaW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6
ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAg
ICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRl
eHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0
aW9uczsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlCiAKICAg
ICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNs
aWVudENyZWF0aW9uVVJMID0gY29udGV4dC0+dXJsKCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LT50b3BPcmln
aW4oKSk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRh
KCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXI7
CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwogCkBAIC0yMjEsNyArMjIxLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0
YShtX3N3Q29ubmVjdGlvbi0+c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElk
ZW50aWZpZXIoKSk7CiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQudXJs
KCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VX
b3JrZXJKb2JUeXBlOjpVcGRhdGU7CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwog
ICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuY3BwCmluZGV4IGI4NGM2NmU4ZjVlZTMyZDhiYTc4NWQ0MWY4MjNkNjM4ZjJlODhlMzIuLjFj
M2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKQEAgLTc3LDEzICs3NywxMiBAQCBib29sIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk6Om9yaWdpbklzTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0
bwogICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY2xpZW50VVJMLCBtX3Nj
b3BlKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9P
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK2Jvb2wgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fdG9wT3JpZ2luID09IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikpCisgICAgaWYgKG1f
dG9wT3JpZ2luID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGF1dG8gc2NvcGVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fc2NvcGUpOwotICAg
IHJldHVybiBzY29wZU9yaWdpbi0+aXNTYW1lT3JpZ2luQXMob3JpZ2luKTsKKyAgICByZXR1cm4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fc2NvcGUpID09IHNlY3VyaXR5T3JpZ2luOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaAppbmRleCAyMzlhMzAwYjE3ZmFlNzhlMTE3ZmFjZWVhNDkwZTVhM2E1
MjI5NWZiLi43MTBmNDEyYjQ3MmQ4ZjE3NDJlMGJlZTQ4ZDUwMmJlODlhOWEwMzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFVSTCYgc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlOyB9CiAgICAgdm9pZCBzZXRTY29w
ZShVUkwmJiBzY29wZSkgeyBtX3Njb3BlID0gV1RGTW92ZShzY29wZSk7IH0KIAotICAgIGJvb2wg
cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBy
ZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0
b3JlLmNwcAppbmRleCA1ZWE0NWI5NTVkZmY1NzQzMjc1ZDVkMDA3MTlmMmVjMmRkODRiODA3Li5m
MDFmYjE2MWNlOGM4NDg1ZDU2MjYyZWI2YWM2NzE0MTRkYzAyYzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAK
QEAgLTMyLDE3ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU1dPcmln
aW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2lu
U3RvcmU6OmFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICArK21f
b3JpZ2luQ291bnRzLmVuc3VyZShvcmlnaW4udG9TdHJpbmcoKSwgWyZdIHsKKyAgICArK21fb3Jp
Z2luQ291bnRzLmVuc3VyZShvcmlnaW4sIFsmXSB7CiAgICAgICAgIGFkZFRvU3RvcmUob3JpZ2lu
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lk
IFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9p
ZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luLnRvU3Ry
aW5nKCkpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29yaWdpbkNvdW50cy5maW5kKG9yaWdpbik7
CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fb3JpZ2luQ291bnRzLmVuZCgpKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0
LDkgKzU0LDkgQEAgdm9pZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICByZW1vdmVGcm9tU3RvcmUob3JpZ2luKTsKIH0KIAotdm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAg
ICBtX29yaWdpbkNvdW50cy5yZW1vdmUob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIG1fb3JpZ2lu
Q291bnRzLnJlbW92ZShvcmlnaW4pOwogICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmln
aW5TdG9yZS5oCmluZGV4IGUxMWU0NTExZmUxOTgwOGY2OGZkYWZkNDE3MWRjODA5Y2ZiOGVhN2Uu
LmNiMjhiMzk0MTk5MjlmYzJkYWQ0ZWI3YmQ3ZGVjZWUyMDlkOTRjYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBA
IC0yNywzMiArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotCiBj
bGFzcyBTV09yaWdpblN0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TV09yaWdpblN0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBh
ZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwotICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICB2
b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRDb21wbGV0ZSgpID0gMDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdG9y
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJv
bVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRU
b1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJTdG9yZSgpID0gMDsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRf
dD4gbV9vcmlnaW5Db3VudHM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2
NF90PiBtX29yaWdpbkNvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggYmVlZjBlMzFjMjcxYTlhY2E2NWE5ZDEzYjc5NzFhZDI0YzMxNDQ2My4uYTBiN2ZjMmU4MTQx
N2E3ZjNhYzgxMTFkOGE0NzM0YWUwYjRkYjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1MywxMiArMTUzLDEyIEBA
IHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0CiAgICAgYXV0byBhZGRSZXN1bHQyID0gbV9yZWdpc3Ry
YXRpb25zQnlJRC5hZGQocmVnaXN0cmF0aW9uUHRyLT5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlv
blB0cik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQyLCBhZGRSZXN1bHQyLmlzTmV3RW50
cnkpOwogCi0gICAgbV9vcmlnaW5TdG9yZS0+YWRkKGtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpKTsKIH0KIAog
dm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIGtleSkKIHsKLSAgICBhdXRvIHRvcE9yaWdpbiA9IGtleS50b3BPcmlnaW4o
KS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigp
OwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLnRha2Uoa2V5KTsKICAg
ICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKICAgICBib29sIHdhc1JlbW92ZWQgPSBtX3JlZ2lzdHJh
dGlvbnNCeUlELnJlbW92ZShyZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKSk7CkBAIC0yMDUsMjkg
KzIwNSwyOSBAQCB2b2lkIFNXU2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS5jbGVhckFs
bChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKSB7Ci0gICAg
ICAgIG1fY2xlYXJDb21wbGV0aW9uQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgb3JpZ2luID0gbWFr
ZVJlZihvcmlnaW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBzZWN1cml0eU9yaWdpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbXBv
cnRDb21wbGV0ZWQpOwotICAgICAgICAgICAgY2xlYXIob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICBjbGVhcihzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fam9iUXVldWVzLnJlbW92ZUlmKFsmXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdp
bik7CiAgICAgfSk7CiAKICAgICBWZWN0b3I8U1dTZXJ2ZXJSZWdpc3RyYXRpb24qPiByZWdpc3Ry
YXRpb25zVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBrZXlBbmRWYWx1ZSA6IG1fcmVnaXN0cmF0
aW9ucykgewotICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmln
aW4pKQorICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0
eU9yaWdpbikpCiAgICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKGtleUFu
ZFZhbHVlLnZhbHVlLmdldCgpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGNvbnRleHREYXRh
cyA6IG1fcGVuZGluZ0NvbnRleHREYXRhcy52YWx1ZXMoKSkgewogICAgICAgICBjb250ZXh0RGF0
YXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGNvbnRleHREYXRhKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS5yZWxhdGVzVG9PcmlnaW4ob3Jp
Z2luKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJl
bGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
NDk4LDEwICs0OTgsMTAgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24m
LCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBTV1NlcnZl
cjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiB7Ci0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0
VVJMKTsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1f
cGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShvcmlnaW4pLCBbXSB7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFtd
IHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiB7
IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTUxMiwxMSArNTEyLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogCiB2b2lk
IFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8gcGVuZGluZ0Nv
bnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKCZjb250ZXh0Q29ubmVjdGlv
bi5vcmlnaW4oKSk7CisgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29u
dGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAg
Zm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAgICAgaW5zdGFsbENv
bnRleHREYXRhKGRhdGEpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBt
X3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy50YWtlKCZjb250ZXh0Q29ubmVjdGlvbi5vcmlnaW4o
KSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBtX3NlcnZpY2VXb3JrZXJS
dW5SZXF1ZXN0cy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAgICAgICBi
b29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCkBAIC02NDEsMTEgKzY0MSwxMSBAQCB2b2lkIFNX
U2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBU
ZXJtaW5hdGlvbk1vZGUgbQogICAgIH07CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3Jr
ZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIFZlY3RvcjxTV1NlcnZl
cldvcmtlcio+IHRlcm1pbmF0ZWRXb3JrZXJzOwogICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9y
dW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKG9yaWdp
bi5pc1NhbWVTY2hlbWVIb3N0UG9ydCh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAg
ICBpZiAod29ya2VyLT5zZWN1cml0eU9yaWdpbigpID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAg
ICAgICAgdGVybWluYXRlZFdvcmtlcnMuYXBwZW5kKHdvcmtlci5wdHIoKSk7CiAgICAgfQogICAg
IGZvciAoYXV0byYgdGVybWluYXRlZFdvcmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJzKQpAQCAtNzc5
LDcgKzc3OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICAgICAgICAg
IHRlcm1pbmF0ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKGNsaWVudE9yaWdpbi5jbGllbnRP
cmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY2xpZW50T3JpZ2luLmNs
aWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luKSkKICAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKICAgICAgICAgICAgIH0K
IApAQCAtODA1LDkgKzgwNSw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGll
bnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7
CiB9CiAKLWJvb2wgU1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTV1NlcnZlcjo6
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50c0J5
U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29u
dGFpbnMoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0
cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IDYwNmRiNDZhZDAyN2NmMWJjNTVhZjc3MWI4ODI3ZjEwMDIzNDUyZmMuLmMxM2Y0ODI0NzMz
NzJlMjZlZmM4NDc2NDc5N2ZlZmE2YWIyMGVlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5o
IgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5I
YXNoLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyQWxsKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmKTsKQEAgLTE0NSw3ICsxNDUs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4g
c2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFz
VGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICAKICAgICBDb25uZWN0
aW9uKiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdp
blN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE3Nyw3
ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICB2b2lkIGRp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHRydWU7IH0KIApAQCAt
MjI5LDggKzIyOSw4IEBAIHByaXZhdGU6CiAKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4g
bV9vcmlnaW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3Jl
OwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKLSAgICBIYXNoTWFwPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3Rv
cjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7
CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+PiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9y
aWdpbkRhdGEsIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2
aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2ltcG9ydENvbXBsZXRlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDZhYTVhMmE5ZmJkMjM2NjM5YjU3NDQwMjJjYjM4MjYyOWUxYjVkNGUuLjNj
MjYxNzJmMzJmNWIxMDE5MTgxYjc3ZTFlOTY4OGMxOTAwMmY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUg
IlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMjkgKzM5LDI5IEBAIHN0YXRpYyBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bklkCiAgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5l
Y3Rpb25zQnlPcmlnaW4oKQorc3RhdGljIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zQnlPcmlnaW47CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKICAgICByZXR1cm4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbikK
K1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX2lkZW50
aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAg
ICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4o
KS5hZGQobV9vcmlnaW4uY29weVJlZigpLCB0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENv
bm5lY3Rpb25zQnlPcmlnaW4oKS5hZGQobV9zZWN1cml0eU9yaWdpbiwgdGhpcyk7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5yZW1vdmUobV9vcmlnaW4ucHRy
KCkpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZSht
X3NlY3VyaXR5T3JpZ2luKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0K
IAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
b25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCiB7Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5nZXQoJmNvbnN0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNC
eU9yaWdpbigpLmdldChzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXgg
NmYxMDJiYzUyNWI3MGQwNTM0ZTdmNzEwYTQ0ZjI1OTk4MzZhYTliMS4uMmU2MDRlZjJjYjU0N2Mx
NWQ1MzhjZGQ4N2Y4NWQ4OWVjODJlYjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgpAQCAtNzQsMTggKzc0LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAotICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsK
IAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwor
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA5MGExOWE1ODJkNDBlY2Y5YzI1MjYz
MDUxMDY1OTFkYTQwN2Q3MTllLi4xNTliY2U2NjlmMWNiOWIyZTZiOTRmMzljNmNkMjYxMjcxMmU2
YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnRlcm1pbmF0ZSgpCiBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpv
cmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9vcmlnaW4pCi0gICAgICAgIG1fb3JpZ2luID0g
Q2xpZW50T3JpZ2luIHsgbV9yZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRh
LnNjcmlwdFVSTCkpIH07CisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChtX2Rh
dGEuc2NyaXB0VVJMKSB9OwogCiAgICAgcmV0dXJuICptX29yaWdpbjsKIH0KIAotUmVmPFNlY3Vy
aXR5T3JpZ2luPiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25z
dAogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0YS5zY3JpcHRVUkwp
OworICAgIHJldHVybiBvcmlnaW4oKS5jbGllbnRPcmlnaW47CiB9CiAKIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCBjYzA3NTljNjE2ZWY4ZTgyNGEyN2VmZmM3NDFhNTkzYzVmZmZiYWQ5Li5kOTNm
NTAwMGFhYjllYjAxYmU0Y2I4YzRkZDBhYjFiNjNmZDg2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250
ZXh0RGF0YSgpIGNvbnN0OwogCiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDBlN2Q4MGNiZjg1ZWIxZGFjZmNkZGY1NTIzYTcxODMwNjQ3YzY3MWQu
LjAxNzJjM2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbikKLSAgICAgICAgZW5jb2RlciA8PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2VPcmln
aW4tPmRhdGEoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8
PCBjc3BSZXNwb25zZUhlYWRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggM2M0YjQyNDZlODEyMDg3YjMwZTM2YmFm
YzE2OGVmNDY2M2M3MGE4Yi4uYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVmIHByb3RvY29sLCBXS1N0cmluZ1JlZiBob3MKIAogV0tT
dHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFzZUlkZW50aWZpZXIoV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKHNlY3Vy
aXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV09yaWdpblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAppbmRleCA5ZGNhZDk0YmZmMjI2ZDRhMDll
MDJlMGMxYTUwMjE3YjVhMWEwY2Y4Li4wNGNiZjIxYjNlN2FhYTYzMWI1MjUzYTdkNTk2M2RjNDg3
ZTk5ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwCkBAIC00MSwxMyArNDEsMTMg
QEAgV2ViU1dPcmlnaW5TdG9yZTo6V2ViU1dPcmlnaW5TdG9yZSgpCiB7CiB9CiAKLXZvaWQgV2Vi
U1dPcmlnaW5TdG9yZTo6YWRkVG9TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQor
dm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQogewogICAgIG1fc3RvcmUuc2NoZWR1bGVBZGRpdGlvbihjb21wdXRlU2hhcmVk
U3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5n
Q2hhbmdlcygpOwogfQogCi12b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgbV9z
dG9yZS5zY2hlZHVsZVJlbW92YWwoY29tcHV0ZVNoYXJlZFN0cmluZ0hhc2gob3JpZ2luLnRvU3Ry
aW5nKCkpKTsKICAgICBtX3N0b3JlLmZsdXNoUGVuZGluZ0NoYW5nZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5oCmluZGV4IDdmOGM5ODcxMWMyNWRhZTg2ZmViZWZjMDg4YzA5YjUyODlmMTdm
ZjkuLjJkMjlmNTYwOTU4NGYxMDIwOWU4MDZjZDEwNmFkNzY4ZDBiNDM5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXT3JpZ2luU3RvcmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NX
T3JpZ2luU3RvcmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTUwLDggKzQ2LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZShXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKIAotICAgIHZvaWQgYWRkVG9TdG9yZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYp
IGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJikgZmluYWw7CisgICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJTdG9yZSgp
IGZpbmFsOwogCiAgICAgLy8gU2hhcmVkU3RyaW5nSGFzaFN0b3JlOjpDbGllbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDUwMGY5NDliYzE3ZmRjNTZmOTA2
MGU1ZDQ3NDMzYTVjZjUzMDM2ZDUuLjM4YzM5OTFlZWZkMWFlZWJlYzU1NzJmOTA4MWFjNGRhMTZk
YTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0yMTIs
NyArMjEyLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JE
YXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGpvYkRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKGpvYkRhdGEuc2NyaXB0VVJMKTsKICAgICBpZiAoIVN0b3JhZ2VQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4sIHNlcnZlcigpLnNlc3Np
b25JRCgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkCiAK
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
IGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ewotICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmln
aW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGRhdGEudXJsKSkgfTsKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IENsaWVudE9y
aWdpbiB7IFdURk1vdmUodG9wT3JpZ2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRh
dGEudXJsKSB9OwogICAgIG1fY2xpZW50T3JpZ2lucy5hZGQoZGF0YS5pZGVudGlmaWVyLCBjbGll
bnRPcmlnaW4pOwogICAgIHNlcnZlcigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXVEZN
b3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoZGF0YSksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAxNDg1MGFjZGY2ZjFmYmU4ODk1ZDkz
MDVkMDUxMzQ2Zjk5ODJkODhkLi4wMGI3ZmM3YzgzOThhM2IzMjhkZjU4ZmIyNjhhMDdhOTJkODE4
YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihXVEZNb3ZlKG9yaWdpbikpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisg
ICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBt
X2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiYjEwYmRlZjkyY2Vm
YTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiLi5lOWMzOTg4YzkzNmViOGViZDgyODFkMmI3YzMx
ODJjMzI4ZDk5NTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKaW5kZXggZGQ0ODhjNmZkZmY4MWM2NjI1YmI5MTBkMjA3ODM1YzIxNjg5ZWE0
ZC4uZjg1NzI0ZWE2ZmU2ZmM1OGU5YmQ0NDJiMTFjMTA2ZmE3M2RlNjc2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTExMywyMyAr
MTEzLDI0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCiB7CisgICAg
YXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5zZWN1cml0
eU9yaWdpbigpOworCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKCZzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZl
ciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2lu
KCkpOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0
ZWQoc2VjdXJpdHlPcmlnaW4pOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBpZiAobmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbikpIHsKKyAgICBpZiAobmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkgewogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQi
KTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJp
dHlPcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogfQogCi1ib29sIFN0b3JhZ2VQcm9jZXNz
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikgY29uc3QKK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygp
LCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOwogICAgIH0pOwogfQogI2VuZGlmCkBAIC0yNTAsNyArMjUxLDcgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHRTdG9yYWdlVGFzaygpCiAgICAgdGFzay5wZXJmb3Jt
VGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Ms
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBz
b2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
QEAgLTI3NCw5ICsyNzUsOCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclBybwogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gb3JpZ2luRGF0YS5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUob3JpZ2luLmNvcHlSZWYoKSwgbV9zdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKFdURk1v
dmUob3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgYXV0byBj
b250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRl
KHNlY3VyaXR5T3JpZ2luLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCkt
PmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIGNvbnRleHRDb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiAKICAgICAgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogI2VuZGlmCiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbkRhdGFzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSgpIHsKICAgICAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTM0OCwx
NCArMzQ4LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpKSB7CiAgICAgICAgIGF1dG8mIHNlcnZlciA9
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
bkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQotICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlP
cmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICBzZXJ2ZXIuY2xlYXIoc2VjdXJp
dHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgIGlk
YlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhzZWN1
cml0eU9yaWdpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtNDU1LDIxICs0NTUsMjEgQEAgV2ViU1dPcmln
aW5TdG9yZSYgU3RvcmFnZVByb2Nlc3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+
KHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLm9yaWdpblN0b3JlKCkpOwogfQogCi1XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnMuZ2V0KCZjb25zdF9jYXN0PFNlY3VyaXR5T3JpZ2luJj4ob3JpZ2luKSk7CisgICAgcmV0dXJu
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNlY3VyaXR5T3JpZ2luKTsKIH0KIAot
dm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBz
ZXNzaW9uSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBpZiAobV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7
CiAgICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiksICpzZXNzaW9uSUQpLCAwKTsKKyAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzRm9yRXhwbGljaXRTZXNzaW9uKHNlY3VyaXR5T3JpZ2luLCAqc2Vzc2lvbklEKSwgMCk7CiAg
ICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKSksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3Moc2VjdXJpdHlPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdl
UHJvY2Vzczo6ZGlkRmFpbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKQEAgLTUzNywx
NSArNTM3LDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKLSAgICBhdXRv
JiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpOwotICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkKKyAgICBhdXRv
JiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmln
aW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVy
bWluYXRpbmcgaXQiKTsKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OwogCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0g
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJm9yaWdpbik7CisgICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aAppbmRleCBkMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZmYTM5YzA2YmM5Li4yMDc4YTEz
MTA3Mzk4NThjYzRiMjdjMmM1YjMxNzNjYzVmNGE5ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQmFja2luZ1N0b3Jl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZS5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiBzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogfQogCkBAIC05NCw4ICs5Myw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwotICAgIHZvaWQgY3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZl
ckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKTsKIAogICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEKTsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0OworICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNl
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtMTc3LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogCi0gICAgSGFz
aE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBSZWY8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkg
eyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFi
YXNlUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJh
bWVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
CmluZGV4IDAzMTllNWFlZDNmZmMwYTM3MDlkNGY3NWY2ZDc5Njg2MmI2NWRhNTguLjk2YjEzZDE3
ODU0NDVjMzk3MzNiMmYwNDhhNjBmMjAyMTUwOGM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxGcmFtZUlu
Zm8+IEZyYW1lSW5mbzo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUs
IGNvbnN0IFdlYkNvCiAgICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFp
bkZyYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0
IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KICAgICBmcmFtZUluZm9EYXRhLnJlcXVl
c3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5m
b0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmRhdGEoKTsKICAgICBmcmFtZUluZm9EYXRhLmZyYW1l
SUQgPSBmcmFtZS5mcmFtZUlEKCk7CiAKICAgICByZXR1cm4gY3JlYXRlKGZyYW1lSW5mb0RhdGEs
IGZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhYjYwYWZiNmI0OGI5
M2Q4NWExM2I3YzU5Njc1N2I4NDM5NjAwMDEuLmVlODdhYzE5MTUwNjA2YjRlYjgzYTgzZGQ3YWYz
YjI3YjAyNzc4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlCiAgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1w
bChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHRv
SW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICB3ZWJzaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBmMTBkNjMzMWQ3YjdkNTIyZDc1YTQ0YjNmMzY0NTM4ZmUxODEzZjlmLi40ZTM5ZGFkODJhNTIy
NWI5ZDlkZDI0ZWY4MWZhOGFmNzUzYTM1YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmCiAgICAgaWYgKCFzdG9yYWdlTWFu
YWdlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbih0b0ltcGwo
b3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDIzYWE0ZDEzZDQx
MzNmZGU4OWJlNGRjMGMxNGViOTk4MGY4YTllODIuLjZiMTZjMmEwNWMyNWJkNDBiMTkwODFiOTBk
ZGQ5ZmZiMTFiNTg3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9p
ZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyUmVmIGNhY2hlTWEKIAogICAgIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1v
cnlDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJlY29yZC5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29y
ZCk7CiAgICAgfQogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXJBbGwpIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICAg
ICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogCiAg
ICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAppbmRleCA2NjUwYjU4MzVkM2Y3N2Q2MzUwNWIwZDIyMzUzMjZlMzBmMmFkMzVhLi5jYTI5YWFm
YjFiYzliNDI0ODI2ZThhODg3NDJmZjRjZDUyYmEwMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNv
cmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpET01DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkpOwogICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVj
b3JkcyA9IHsgV1RGTW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9N
Q2FjaGU7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRj
aENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKICAgICBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKIAogICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNv
bnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgewotICAgICAgICBhdXRvIG9yaWdp
bkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChv
cmlnaW4pLT5zdHJpbmcoKSkpOworICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5z
dHJpbmcoKSktPmRhdGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJl
Y29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0
YVJlY29yZC5vcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGEgPT0gcmVj
b3JkT3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhZWVlYzNiMTI2NDE2MDI1N2M3MDU5Yzg5NzFl
ZGZkNDIzMDk1NzYuLmI2MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5NzU5N2M1NjgxODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKK1JlZjxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBh
ZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBXVEZNb3ZlKG9y
aWdpbiksIHN0b3JlIH0pOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7CiAgICAg
cHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBv
b2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3Jl
KQorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShX
ZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCiAgICAgOiBXZWJQcm9jZXNzUHJveHkgeyBw
b29sLCBzdG9yZSB9Ci0gICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3Nl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlE
KGdlbmVyYXRlUGFnZUlEKCkpCiB7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5j
aE9wdGlvbnMmCiAgICAgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9w
dGlvbnMpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
QVNDSUlMaXRlcmFsKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIp
KTsKLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxp
dGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBvcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBsYXVu
Y2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3Vy
aXR5LW9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5oCmluZGV4IDFjNzcwYjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRlNWY3ZDk2MTE4MDUuLjMzNTFi
NzQwOTRiZTQ3ZTgzMGUzOTdjNDA2ODFiYWEwODI5OGI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4
LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBm
aW5hbCA6IHB1YmxpYyBXZWJQcm9jZXNzUHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGlj
IFJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAg
ICAgflNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1Jl
Z2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3Rv
cnkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4o
KSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9
CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFn
ZUlEOyB9CiAKIHByaXZhdGU6CkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1f
c2VjdXJpdHlPcmlnaW47CiAgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWU3ODhmNDc0NzBlNmU0ZWFiMWZmYTkxMDUzNWJi
MDk3NzNiYTMyMC4uNTRhMDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4NDlmZTRjYWQwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJv
eHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nl
cwogICAgIH0KIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAg
IFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4od2ViUHJvY2Vzc1Byb3h5KS5vcmlnaW4oKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2luID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5zZWN1
cml0eU9yaWdpbigpOwogICAgIH0KICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6U3RvcmFn
ZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIG9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29y
a2VyUHJvY2Vzcywgc2VjdXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzNTFiZjZhYjI2YjZlZWZkODNmYTk2Mjdh
OGU0Yzc2NjIxYTA3ZjY2Li4yZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBkZjFkNThjM2U0NDc1ZTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEs
MTIgKzU5MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQo
U3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcgogfQogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPiBzZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHks
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5
ID09IG1fc3RvcmFnZVByb2Nlc3MpOwogCi0gICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlu
cyhvcmlnaW4ucHRyKCkpKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFp
bnMoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKQEAgLTYxNCw4ICs2MTMsOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MoU3RvcmFnZVBybwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0
eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywg
b3JpZ2luLmNvcHlSZWYoKSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5hZGQob3JpZ2luLmNvcHlSZWYoKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5wdHIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBzZWN1cml0eU9yaWdpbiwgKndlYnNpdGVE
YXRhU3RvcmUpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShzZWN1
cml0eU9yaWdpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC05OTAsNyArOTg5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2VzcykpIHsKLSAgICAgICAgYXV0byogcmVt
b3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZSgmZG93bmNhc3Q8U2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLm9yaWdpbigpKTsKKyAgICAgICAgYXV0
byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykuc2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09
IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KQEAg
LTE4NzgsOSArMTg3Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgp
ICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2Vz
cyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAg
IGF1dG8mIG9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
Y29udGFpbnMoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vu
c0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0
eU9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAg
ICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRk
KHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2JhY2tn
cm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xODg4LDkgKzE4ODcsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3
ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2Vydmlj
ZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2lu
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmNvbnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2Jh
Y2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgICAgICAgICAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3Vu
ZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4p
KQorICAgICAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChzZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigp
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggNDU3ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVmMzY4MTBiMTU4MDA1ZC4uODk1
ZmMzMzY5ODBhOGIzZDM4NzI1MDAwNmM0MTZjODhiYzI1ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAg
ICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJv
bVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIGNvbnN0IEhhc2hNYXA8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBz
ZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nl
c3NlczsgfQorICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFs
bG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTUx
Nyw3ICs1MTcsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NX
aXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKQEAgLTY3
Nyw4ICs2NzcsOCBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1h
cDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBQcm9jZXNzVGhyb3R0bGVyOjpGb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclBy
b2Nlc3NlczsKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4g
bV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7CiAjZW5kaWYKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZmQ0ODA0ZGNiYmYzNTRkZmNi
MzllZDBlOWNkZTc5OGZlMTI5MTg2OS4uN2Y3MDJlMThlYjNhNjdkYmU0NzZlNjkzYTBmNDIwZDEz
YjRjZjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxM
b2NhbFN0bwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0
b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
KQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGll
ZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAg
ICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRleCAyYjFmOGRlYjZhYmQyOWQ0NTNiNTQzODQ5MTcy
MzQwODYzNmI3NmI1Li44NDIzYjk5MzQ1ZjhkOTExNzA3ZTBmOGI1YzVmZTZhZDA0MGUyMzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25T
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAg
dm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIHZvaWQgZGVsZXRlTG9j
YWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IGMyMTQzZmRkZWM1YTYxYTQwZTg2NWE1NmRjOTliMGE5YjIxMTE2ZTguLjBmOWU5YWMwNDQ3Mzlk
OTM1YTUyODI4MWU3NTRhODZkYTI2YTg2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNDcsNyAr
MzQ3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgICAgIFdlYnNpdGVEYXRh
IHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkg
eyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2lu
KSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICBXZWJz
aXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpE
aXNrQ2FjaGUsIDAgfTsKICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBzaXplID0g
ZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
cykgPyBzdG9yYWdlLT5kaXNrVXNhZ2VGb3JPcmlnaW4oKm9yaWdpbikgOiAwOwotICAgICAgICAg
ICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBzaXplIH07CisgICAgICAgICAgICAgICAgV2Vic2l0ZURh
dGE6OkVudHJ5IGVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsKIAogICAgICAgICAgICAgICAgIHdlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDkz
YjkzNmZlNWEyMWM1MDRlYjMzMWFjMTVlN2UzNTRmMGQwNjc0ZjkuLjAxZjEzNTdhODg2MzI3MDI3
YWQxNjVmMWYwM2U4MjIzMGI0OTVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihH
ZW9sb2NhdGlvbgogCiAgICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9u
SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLmRhdGEoKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24mIGdlb2xv
Y2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1YjMwZjM4NzM5MzNiMGMx
MDA0NmMyZDZjOWY4Zjg4MzA5MGYxNWNiLi44ZjVkNjFiZjcxYzcyMjI2YTdiMDkxZTNkYjM5NDc4
YmZkM2FmM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjkzLDcgKzY5Myw3
IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNo
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG9yaWdpbnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luIDogb3JpZ2lucykKLSAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5k
KEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgb3Jp
Z2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUob3JpZ2lu
LT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luSWRlbnRpZmllcnMpKS5sZWFrUmVmKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRl
eCBlNGQzN2EyMzZjY2MwMmZiNDU4NGI2ZTM2YjFiYzQ4ZDk1OGU3NDRhLi45Y2NhY2UwNTc3Yzdm
YmM4ZmY1NzA2YmRmYWQ5M2U0MzdjYzZlMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlh
UmVxdWVzdCYgdQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBhdXRvKiB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luID0gdXNlclJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwotICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSwgdXNlclJlcXVlc3QucmVxdWVzdCgpKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25G
b3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHVzZXJSZXF1ZXN0LnVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luKCktPmRhdGEoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0
YSgpLCB1c2VyUmVxdWVzdC5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVz
dCYgcmVxdWVzdCkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0VudW1lcgog
CiAgICAgU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSByZXF1ZXN0LnRv
cExldmVsRG9jdW1lbnRPcmlnaW4oKTsKICAgICBBU1NFUlQodG9wTGV2ZWxEb2N1bWVudE9yaWdp
bik7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRlTWVk
aWFEZXZpY2VzRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExl
dmVsRG9jdW1lbnRPcmlnaW4pKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCktPmRhdGEoKSwgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0YSgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3Jl
OjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAppbmRleCAxZTIyMTJlMDU4ZWFlODE0NDU0ZGJmYmJkOTZlMzU3OWJlYzUxZTg3Li41ODk4
NDAyYzMxNDljY2IzNDkzNzE2MzZiMDcyMWE2MWY5Nzk0Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0Lmg+CkBAIC05NSw3ICs5Niw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgZGF0YSwgY29udHJvbGxpbmdT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRv
cE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgY29udGV4dElkZW50aWZp
ZXIpCkBAIC0xNTMsNyArMTU0LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNo
UmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7Cisg
ICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTF0oKSBtdXRhYmxl
IHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRl
bnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2kKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVu
dGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRkKGNhbGxiYWNr
SUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkwpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFk
eShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNr
SUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9u
RGF0YSkKQEAgLTE5MSw3ICsxOTIsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0
UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsK
KyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMXSgpIG11dGFi
bGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJ
ZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNh
bGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ3YjRkYmI4MjNiNWFl
YWExZDdlMzA1ZDgyYTNlYzNhMTc5NzkwNzMuLmQ0ZWVlMzJjOWRiOTE3MmNmYzkwNGIwZWY0ZGI2
NGIzNjYyNGQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03MzEsMTcgKzczMSwxNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgCiAg
ICAgYXV0byYgb3JpZ2luID0gZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAg
ICBhdXRvIG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pOworICAgIGF1dG8mIG9yaWdpbkRhdGEgPSBvcmlnaW4uZGF0YSgpOwogICAgIGF1
dG8mIHRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gY3Vy
cmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJlbnRP
cmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3QgbmV3
UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
b3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJl
ZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRh
YmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRl
dGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRl
dGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlm
ICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwg
Y3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVj
dGVkVXNhZ2UoKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRl
ZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRR
dW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxz
LmV4cGVjdGVkVXNhZ2UoKSksCiAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBT
ZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVBy
b2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwKIAogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRh
dGFiYXNlSWRlbnRpZmllcigpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAorICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwg
dG90YWxCeXRlc05lZWRlZCksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBh
Z2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1Q
bGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAKICAgICBjYWNoZVN0b3JhZ2Uuc3RvcmVVcGRh
dGVkUXVvdGFGb3JPcmlnaW4oJm9yaWdpbiwgbmV3UXVvdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggM2ZiYjE3ZDEyNTI1OTJmY2Q5ODNjYWM2NmQ2NzhmZWEyODNhMmZk
ZC4uZWU4Mzk3Y2I1ZWZhNTcyMmVkYzdkZDNkZGJmN2U0MTdlY2Y2OGRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKICAg
ICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9u
LmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKICAg
ICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChzb3Vy
Y2VEb2N1bWVudC51cmwoKSk7Ci0gICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc291cmNlRG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNl
Y3VyaXR5T3JpZ2luID0gc291cmNlRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CiAg
ICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUpCiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YS5mcmFtZUlEID0gb3JpZ2luYXRpbmdGcmFtZS0+ZnJhbWVJRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjZmZGYwYTdiY2RlYzQzM2E2ZDgwMzc0NjUz
ZjdhNDVhMWNlN2FkNy4uNmM3ZmM5ODNhNjVhOTU5MGI1ZWQ4NDI3ODc0ODg1NzEzNDU5MGY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKIHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkgewogICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hl
KHNlc3Npb25JRCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJz
aXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
b3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKKyAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbi0+
ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOwogICAgIH0KIAogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBjMzBkZmVkMzhhZjU0Mjc1NDQ1MjQ3YzFmMjYyNDc2
NTdkYTFkOWM1Li41ZDVjMmJjMDVmYzYwYzRlMmY3MGNjYmFhZDkwYjc5NTU1MmQ4MWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKQEAgLTEyMiw5ICsxMjIsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xv
c2VEYXRhYmFzZUlmSWRsZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKK2NvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0
eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkp
OworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDQzM2M0ODczODNjNDgz
NjM1YWM2ZjMyNDQ2NTUzNThiZWY1NzQ5ODEuLjE2NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3
MzkyY2QxODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50
QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBv
dmVycmlkZTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3Jh
Z2VBcmVhSUQ7CiAgICAgUmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCmluZGV4IGEyNjUwZDFiM2ViZmM3MjhjMjc1ZWUwMTBiZmVhM2EyNjhiMGI4ODYuLjQ3
MTNhYzRiN2UxYzc4ZTEzMjJmNDlmMmI1NWZjODM5MjY1YjgxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAg
LTc0LDE0ICs3NCwxNCBAQCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5h
bWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OkxvY2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAg
ICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFj
ZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
OjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3Jh
Z2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVs
T3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9y
YWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNl
SUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9y
aWdpbikpLCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVM
b2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VO
YW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKIAogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VN
YXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlP
cmlnaW4tPmRhdGEoKSksIDApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsOgpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJl
YUlELCBjCiAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwogICAgIH0KIAotICAgIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygq
cGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJh
bWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1f
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTdG9yYWdlRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJh
bWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3Jv
dXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKaW5kZXggMjFmZDU4NzA4ODAxYzA4ZjZjMTU2ZjA5NTRjODg2M2QwNDZlOTFj
Yy4uMmYxY2QwN2E3YWRkMWU2YTUwZThhMjg5YWI5YWViYjczYTE3NGExMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0
b3JhZ2VOYW1lc3BhY2VJbXBsKCkKIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVz
dHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiB7Ci0gICAgbV9zdG9yYWdl
QXJlYU1hcHMucmVtb3ZlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1h
cC5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4pCkBAIC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY3Jl
bWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9
CiAKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCAxNjQ3NzIyNzg0Y2JhNGNl
M2FkYmYxZTEyMmFhYmYwZTYwMzk1ZWM5Li4zODZkNDhkOTkwMjZiYzFiMTcxZGExYmU2ZDY2NDNm
ZjA0MDZmZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vz
c0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJp
ZGU7CiAKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KIAogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+
IGNvcHkoKTsKICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBkNWU1Zjc0NzdlODMzZDI0Y2ViM2JhMTkyOGYx
ZDFjMTY5MmZlYWJhLi5kZGJkYjIyZWEwZmEwZGM0YjFjYmQ1YTZmYzZmODg2NWI4YWVhMTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAg
LTYzNyw3ICs2MzcsNyBAQCBsb25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9k
YXRhYmFzZU11dGV4KTsKIAotICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihv
cmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQppbmRleCA3NmMyOGY0ZGRiZjc0OWVm
MGRhYjIxOTA0OGNlZDIxMmE5ZDAwYmRlLi4wMDUxZjU4MmRkNTQ2MmZkZmU1ZmY4MzdlMGMxOWEw
NjQwMTA3ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlTWFuYWdlci5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIC0gKE5TQXJyYXkgKilk
YXRhYmFzZXNXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIGlm
ICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVW
ZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAg
VmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
ZGF0YWJhc2VOYW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKICAgICBOU011dGFibGVBcnJh
eSAqbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVW
ZWN0b3Iuc2l6ZSgpXTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lVmVjdG9yKQogICAgICAg
ICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5hbWVdOwpAQCAtMTQyLDEyICsxNDIsMTIg
QEAgLSAodm9pZClkZWxldGVBbGxEYXRhYmFzZXMKIAogLSAoQk9PTClkZWxldGVPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gb3JpZ2luICYm
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVd
LT5kYXRhKCkpOwogfQogCiAtIChCT09MKWRlbGV0ZURhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFi
YXNlSWRlbnRpZmllciB3aXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewot
ICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBf
Y29yZV0pLCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3JlXS0+ZGF0
YSgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiAvLyBGb3IgRHVtcFJlbmRlclRyZWUgc3Vw
cG9ydCBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQppbmRleCA5Yjg0MTg2MDJlNTlhMWNhOWYyY2M5
ZTQ4OGI2OGRlNjY2Y2IyMjIxLi4xMDhjNTI4N2Y5MDdlODFhNjFhMDFhYTcyNDIzYzk2MDc5NTBi
Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KQEAgLTUzLDEyICs1MywxMiBAQCAtIChXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbgogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAg
ICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoW19vcmlnaW4gX2NvcmVdLT5kYXRh
KCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkucXVvdGEoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAv
LyBJZiB0aGUgcXVvdGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1
c2FnZSwgdGhhdCBxdW90YSB3aWxsCkBAIC02Niw3ICs2Niw3IEBAIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogLy8gcHJldmVudCBuZXcgZGF0YSBmcm9tIGJlaW5nIGFkZGVkIHRvIGRhdGFi
YXNlcyBpbiB0aGF0IG9yaWdpbi4KIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFtfb3JpZ2lu
IF9jb3JlXS0+ZGF0YSgpLCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCmluZGV4IDlhNjg5Y2E1
NTk0NzNlZDNiMDE1NGFhOTVjZWM2ZTUxZmE5YTdkNzAuLjZlNTdlY2IzNDg5YjVhMmQ0NzRmYTg1
ZWNhZWU3ZDY3MmI1YzM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQpAQCAtODQsNyArODQsNyBAQCAtICh2b2lkKWRl
bGV0ZUFsbE9yaWdpbnMKIAogLSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCiB7Ci0gICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0
ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBf
Y29yZV0pKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcp
ZGlza1VzYWdlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQppbmRleCA0ZjQyNDgzN2RlYThhOWEyYzRkNTdjYWY2YzgzZGFhZjg0ZTcyYTYx
Li40ZTRjMTNkZmI3M2FiNjRhZWU5N2Q3YTM3Mzk1MTNhZTQ5MjQyOWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQpAQCAtNzEsNyArNzEsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNT
dHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSkpLmRhdGFiYXNlSWRlbnRpZmllcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNjksMTcgKzE2OSwxNyBAQCBAaW1w
bGVtZW50YXRpb24gV2ViU2VjdXJpdHlPcmlnaW4gKERlcHJlY2F0ZWQpCiAKIC0gKHVuc2lnbmVk
IGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVy
cHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1
b3RhCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5xdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZh
dGUpLT5kYXRhKCkpOwogfQogCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcp
cXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0UXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKS0+ZGF0YSgpLCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGZiNTQ0MDgwMjBhMDcyMzVhZjZhZTRl
NDVjYmYyMWEyOTQ4ZTRhNjQuLjJjYzk4OTM4NjVmMzMwNGUxYzQ1NDMzM2JlOGI2Y2JjZDJkMWRj
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cApAQCAtMjU2LDcgKzI1Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFz
ZXNXaXRoT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpCiAgICAgaWYgKCF3
ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gZGF0
YWJhc2VOYW1lcyA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4t
PnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBhdXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCktPmRhdGEoKSk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8VmVjdG9y
PFN0cmluZz4+PiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0
cmluZz4+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBIUkVT
VUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9y
aWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlP
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLmRlbGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0
YSgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzMxLDcgKzMzMSw3IEBAIEhSRVNVTFQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1l
LCBfSW5fb3B0XyBJV2ViCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5n
TGVuKGRhdGFiYXNlTmFtZSkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRl
bGV0ZURhdGFiYXNlKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCks
IFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAg
ICByZXR1cm4gU19PSzsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNl
TWFuYWdlcjo6c2V0UXVvdGEoX0luXyBCU1RSIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1
b3RhKQogICAgIGlmICh0aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRR
dW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tl
cjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
b3JpZ2luKS5kYXRhKCksIHF1b3RhKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDkwNmNiYmE1MWRj
NzU0OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcuLjgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZj
NzZjYzQ5YjBlYTBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2lu
Ojp1c2FnZShfT3V0XyB1bnNpZ25lZCBsb25nIGxvbmcqIHJlc3VsdCkKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tl
cjo6c2luZ2xldG9uKCkudXNhZ2UobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIAogICAgIHJl
dHVybiBTX09LOwogfQpAQCAtMTQwLDEzICsxNDAsMTMgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9y
aWdpbjo6cXVvdGEoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAogSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0
UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSAKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6
OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKCptX3NlY3VyaXR5T3JpZ2luKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBxdW90YSk7CiAKICAg
ICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336475</attachid>
            <date>2018-03-24 10:28:23 -0700</date>
            <delta_ts>2018-03-24 12:14:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180324102822.patch</filename>
            <type>text/plain</type>
            <size>132487</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uM2FlMjhlM2Q3ZmYwOTEyNmY5ODFiZjk5MTFiNGMy
ODdjYjBkNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2lu
RGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNv
bnN0cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHku
CisKKyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5
T3JpZ2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBk
dXBsaWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJz
IGNhbiBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFj
dG9yeTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdp
biBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpm
aW5kU3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3Jp
Z2luRXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1p
bHkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3Zl
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNU
ZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi44MDIyY2Y5
M2I3YWIwZWQ5NDYzODJmMzE3NThjMTQ0NDA3ZmNkYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkw
IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdv
cmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1v
ZGVdIEFkb3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2Mw
Ny4uZWNhYTNkMTI0ZmNlNWU3MDRhNWJjZGRiM2Y5YmMyODI4ZDY0YWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25z
aXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVh
ZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05B
TUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNh
Y2Q5ZDAzMjhkNmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uNGNhYjk3NWMyOGMzZTMwMzM3NGFk
ZmE1MjhhZDJiOGM4NzRmMDZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2
aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNl
c1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmln
aW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRo
T3JpZ2luOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW06CisgICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1
b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4
LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4u
NjAyMDZlYTgwMGE0NGRkN2I2ZWZjNGQ4ZjVjYzRiZWE5OTA3ZWVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3Jl
IGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBp
bnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdl
KToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5
MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApA
QCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owor
ICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9y
aWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1
ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMs
IERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9u
cywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZm
YmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTlj
ZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFj
ZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3
MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3
LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAK
aW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJk
ZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNw
cAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3
YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxp
ZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFt
ZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRl
eHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVu
dGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0
YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9w
ZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURh
dGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAg
ICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0
YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRh
dGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRl
bnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFu
IGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4y
YjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWlu
RnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJh
c2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVP
cmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3Jp
Z2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7
CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNi
M2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
ICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4g
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVl
MTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJj
N2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNl
Q29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJh
c2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFz
ZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXND
b250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdm
NzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDky
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFz
ZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAg
ICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQy
N2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2Zj
OTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBu
YW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjVi
NzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2
MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0
NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYg
ZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
bV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5z
ZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5k
b2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3
NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBT
dG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4u
Z2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDlj
MWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVj
ZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcg
KzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1l
bnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51
bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNo
ZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAg
c3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGlu
dCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgy
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+
ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVt
ZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3Jv
dXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3Jv
dXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1h
bmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3Rh
dGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEp
OwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1
YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4
YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0
LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9y
YWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdl
KCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAg
bV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRk
OGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0
NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVS
TCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygp
IDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7
IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1
cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2Fu
IGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3Vt
ZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBE
T00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAg
ICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkK
KyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAg
ICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcg
QEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5
U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEg
eyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9k
b21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAs
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVk
Q29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQor
ICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2Rv
bWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRo
IHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3Ro
ZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAg
ICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwg
bV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIy
OCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2Yg
YW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywg
c2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJl
bnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAg
IG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1
c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6
WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2Rh
dGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVz
IDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAg
LTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxu
ZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90
b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBv
dGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9N
ICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0
ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAg
aWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90
aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1Nl
dEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBA
IC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAh
RmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3Rl
bVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9j
YWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwg
dXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApA
QCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBp
ZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3Rv
Y29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3Rl
ZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2Rh
dGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdo
aXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0
QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpA
QCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVG
b3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQ
YXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwy
MSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigp
CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwor
ICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1f
ZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxl
UGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9l
bmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmls
ZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5s
ZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJv
dG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBw
ZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
JzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9T
dHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIp
CkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1f
ZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1
Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
dGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0g
b3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2Nv
bCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
bV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmls
ZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgx
YTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFm
ZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAg
ICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJ
bkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hv
c3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4g
VVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBw
cm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVy
IFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
CiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMg
YW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAg
Ym9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8
fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09
ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBB
bHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5
KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7Cisg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAg
U3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0Owog
ICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2Vz
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3
OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4yMWJhYWJlZjgyYzU4M2YxN2VhMmU4ZDZj
MmY5YTE1MDRiMzU5MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC0zNywzMiArMzcsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKLXsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwotCi0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsK
LSAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKLSAg
ICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IHNlY3VyaXR5T3JpZ2luLnBvcnQoKTsKLQotICAg
IHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7Ci19Ci0KIFN0cmluZyBTZWN1cml0eU9yaWdpbkRh
dGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwg
IjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOworICAg
IGlmIChwcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZp
bGU6Ly8iKTsKKworICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICc6JywgU3RyaW5nOjpudW1iZXIoKnBvcnQpKTsKIH0KIAogU2VjdXJpdHlPcmln
aW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7CisgICAg
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogICAgIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFNlY3VyaXR5
T3JpZ2luRGF0YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgfTsKIAot
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKTsKIH0KIAogUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbkRhdGE6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IDVmNTVmOTQyYjgxZmNmZTAwYmZkNDNiYzEwOTk2ZjNjZGMyNDcxNWQuLjc5
OTAyMzljOGRkYWMyMzliYjM5MmJlNDRlYzQyMmMwMzE1MmJjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlVSTC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDggKzQ1LDE1IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGEgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZy
b21GcmFtZShGcmFtZSopOworICAgIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbVVSTChj
b25zdCBVUkwmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEg
eworICAgICAgICAgICAgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDog
dXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLAorICAg
ICAgICAgICAgdXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwucG9ydCgpCisgICAg
ICAgIH07CisgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
aW5kZXggNTM0MWNhNjVlODhmYzcyODM3NjBlZGFhYzViNmU4ZmZhOGQwNDBhMC4uOTczMmI2NmM3
YWY4NTVhZjhlZjNmYTY3Y2MwY2FkOTQ5MGI4NjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWEuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJhc2VJ
ZklkbGUoKSB7IH0KIAotICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA4YzRhZjQyZjhhYTE5NWIzYzZmMmMxNDVjMjg4YzgwZGQyODk0YTk0Li42OWMx
YjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2Nh
bFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVuCiAgICAgZWxzZQogICAgICAgICBzdG9yYWdl
TmFtZXNwYWNlID0gJmxvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwogCi0gICAgcmV0dXJuIHN0b3Jh
Z2VOYW1lc3BhY2UtPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICByZXR1cm4gc3RvcmFnZU5h
bWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwog
fQogCiBTdG9yYWdlTmFtZXNwYWNlJiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWE4
YTUyZWRjOWU3YjdiNWM4YzI3ZGNiYzBjYzY2MmI4ZGFlOThiYy4uNGZjMjMzZjYyYjdhOTcyYWRh
N2NlNzJiNDE0ZDEwMzhkZmYyZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNDMyNCw3ICs0MzI0LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdl
TWVtb3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYKICAgICAgICAg
aWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihDbGllbnRPcmlnaW4geyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihk
b2N1bWVudC0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgfSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUgeworICAgIG1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihDbGllbnRPcmlnaW4geyBkb2N1bWVu
dC0+dG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkg
fSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CiAgICAgICAgIHByb21p
c2UucmVzb2x2ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDI1MDExNGVmMjUw
ZWZmYTRlNDZkOWQxNjE2Mzc0OTVlNWQ5ZTJkNDkuLmFiMDA3YzkyYjQ3ZWQ3N2ZkN2UxODgwMDlh
ZTU1NDdjYWYzZDQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcm
IHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJhZGRSZWdpc3RyYXRpb246IFJlZ2lzdGVyaW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6
ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAg
ICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRl
eHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0
aW9uczsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlCiAKICAg
ICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNs
aWVudENyZWF0aW9uVVJMID0gY29udGV4dC0+dXJsKCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LT50b3BPcmln
aW4oKSk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSBjb250ZXh0LT50b3BPcmlnaW4oKS5kYXRh
KCk7CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXI7
CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwogCkBAIC0yMjEsNyArMjIxLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0
YShtX3N3Q29ubmVjdGlvbi0+c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElk
ZW50aWZpZXIoKSk7CiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQudXJs
KCk7Ci0gICAgam9iRGF0YS50b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VX
b3JrZXJKb2JUeXBlOjpVcGRhdGU7CiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHNjb3BlVVJMOwog
ICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gc2NyaXB0VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuY3BwCmluZGV4IGI4NGM2NmU4ZjVlZTMyZDhiYTc4NWQ0MWY4MjNkNjM4ZjJlODhlMzIuLjFj
M2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKQEAgLTc3LDEzICs3NywxMiBAQCBib29sIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk6Om9yaWdpbklzTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0
bwogICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY2xpZW50VVJMLCBtX3Nj
b3BlKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9P
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKK2Jvb2wgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgaWYgKG1fdG9wT3JpZ2luID09IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikpCisgICAgaWYgKG1f
dG9wT3JpZ2luID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGF1dG8gc2NvcGVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fc2NvcGUpOwotICAg
IHJldHVybiBzY29wZU9yaWdpbi0+aXNTYW1lT3JpZ2luQXMob3JpZ2luKTsKKyAgICByZXR1cm4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fc2NvcGUpID09IHNlY3VyaXR5T3JpZ2luOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaAppbmRleCAyMzlhMzAwYjE3ZmFlNzhlMTE3ZmFjZWVhNDkwZTVhM2E1
MjI5NWZiLi43MTBmNDEyYjQ3MmQ4ZjE3NDJlMGJlZTQ4ZDUwMmJlODlhOWEwMzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFVSTCYgc2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlOyB9CiAgICAgdm9pZCBzZXRTY29w
ZShVUkwmJiBzY29wZSkgeyBtX3Njb3BlID0gV1RGTW92ZShzY29wZSk7IH0KIAotICAgIGJvb2wg
cmVsYXRlc1RvT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBy
ZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0
b3JlLmNwcAppbmRleCA1ZWE0NWI5NTVkZmY1NzQzMjc1ZDVkMDA3MTlmMmVjMmRkODRiODA3Li5m
MDFmYjE2MWNlOGM4NDg1ZDU2MjYyZWI2YWM2NzE0MTRkYzAyYzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAK
QEAgLTMyLDE3ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU1dPcmln
aW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2lu
U3RvcmU6OmFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICArK21f
b3JpZ2luQ291bnRzLmVuc3VyZShvcmlnaW4udG9TdHJpbmcoKSwgWyZdIHsKKyAgICArK21fb3Jp
Z2luQ291bnRzLmVuc3VyZShvcmlnaW4sIFsmXSB7CiAgICAgICAgIGFkZFRvU3RvcmUob3JpZ2lu
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lk
IFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9p
ZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2luLnRvU3Ry
aW5nKCkpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29yaWdpbkNvdW50cy5maW5kKG9yaWdpbik7
CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fb3JpZ2luQ291bnRzLmVuZCgpKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0
LDkgKzU0LDkgQEAgdm9pZCBTV09yaWdpblN0b3JlOjpyZW1vdmUoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICByZW1vdmVGcm9tU3RvcmUob3JpZ2luKTsKIH0KIAotdm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBTV09y
aWdpblN0b3JlOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAg
ICBtX29yaWdpbkNvdW50cy5yZW1vdmUob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIG1fb3JpZ2lu
Q291bnRzLnJlbW92ZShvcmlnaW4pOwogICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmln
aW5TdG9yZS5oCmluZGV4IGUxMWU0NTExZmUxOTgwOGY2OGZkYWZkNDE3MWRjODA5Y2ZiOGVhN2Uu
LmNiMjhiMzk0MTk5MjlmYzJkYWQ0ZWI3YmQ3ZGVjZWUyMDlkOTRjYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBA
IC0yNywzMiArMjcsMjkgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotCiBj
bGFzcyBTV09yaWdpblN0b3JlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TV09yaWdpblN0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBh
ZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwotICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICB2
b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIHJlbW92ZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRDb21wbGV0ZSgpID0gMDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdG9y
ZShjb25zdCBTZWN1cml0eU9yaWdpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJv
bVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRU
b1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJTdG9yZSgpID0gMDsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRf
dD4gbV9vcmlnaW5Db3VudHM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2
NF90PiBtX29yaWdpbkNvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggYmVlZjBlMzFjMjcxYTlhY2E2NWE5ZDEzYjc5NzFhZDI0YzMxNDQ2My4uYTBiN2ZjMmU4MTQx
N2E3ZjNhYzgxMTFkOGE0NzM0YWUwYjRkYjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE1MywxMiArMTUzLDEyIEBA
IHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0CiAgICAgYXV0byBhZGRSZXN1bHQyID0gbV9yZWdpc3Ry
YXRpb25zQnlJRC5hZGQocmVnaXN0cmF0aW9uUHRyLT5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlv
blB0cik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQyLCBhZGRSZXN1bHQyLmlzTmV3RW50
cnkpOwogCi0gICAgbV9vcmlnaW5TdG9yZS0+YWRkKGtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpKTsKIH0KIAog
dm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIGtleSkKIHsKLSAgICBhdXRvIHRvcE9yaWdpbiA9IGtleS50b3BPcmlnaW4o
KS5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigp
OwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLnRha2Uoa2V5KTsKICAg
ICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKICAgICBib29sIHdhc1JlbW92ZWQgPSBtX3JlZ2lzdHJh
dGlvbnNCeUlELnJlbW92ZShyZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKSk7CkBAIC0yMDUsMjkg
KzIwNSwyOSBAQCB2b2lkIFNXU2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS5jbGVhckFs
bChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKSB7Ci0gICAg
ICAgIG1fY2xlYXJDb21wbGV0aW9uQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgb3JpZ2luID0gbWFr
ZVJlZihvcmlnaW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBzZWN1cml0eU9yaWdpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbXBv
cnRDb21wbGV0ZWQpOwotICAgICAgICAgICAgY2xlYXIob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICBjbGVhcihzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fam9iUXVldWVzLnJlbW92ZUlmKFsmXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAg
ICAgICByZXR1cm4ga2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdp
bik7CiAgICAgfSk7CiAKICAgICBWZWN0b3I8U1dTZXJ2ZXJSZWdpc3RyYXRpb24qPiByZWdpc3Ry
YXRpb25zVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBrZXlBbmRWYWx1ZSA6IG1fcmVnaXN0cmF0
aW9ucykgewotICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihvcmln
aW4pKQorICAgICAgICBpZiAoa2V5QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0
eU9yaWdpbikpCiAgICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKGtleUFu
ZFZhbHVlLnZhbHVlLmdldCgpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGNvbnRleHREYXRh
cyA6IG1fcGVuZGluZ0NvbnRleHREYXRhcy52YWx1ZXMoKSkgewogICAgICAgICBjb250ZXh0RGF0
YXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGNvbnRleHREYXRhKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS5yZWxhdGVzVG9PcmlnaW4ob3Jp
Z2luKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJl
bGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
NDk4LDEwICs0OTgsMTAgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24m
LCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBTV1NlcnZl
cjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiB7Ci0gICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0
VVJMKTsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKCFjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1f
cGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShvcmlnaW4pLCBbXSB7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRleHREYXRhcy5lbnN1cmUoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFtd
IHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiB7
IH07CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTUxMiwxMSArNTEyLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogCiB2b2lk
IFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8gcGVuZGluZ0Nv
bnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKCZjb250ZXh0Q29ubmVjdGlv
bi5vcmlnaW4oKSk7CisgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29u
dGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAg
Zm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAgICAgaW5zdGFsbENv
bnRleHREYXRhKGRhdGEpOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBt
X3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy50YWtlKCZjb250ZXh0Q29ubmVjdGlvbi5vcmlnaW4o
KSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBtX3NlcnZpY2VXb3JrZXJS
dW5SZXF1ZXN0cy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAgICAgICBi
b29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCkBAIC02NDEsMTEgKzY0MSwxMSBAQCB2b2lkIFNX
U2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBU
ZXJtaW5hdGlvbk1vZGUgbQogICAgIH07CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3Jr
ZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIFZlY3RvcjxTV1NlcnZl
cldvcmtlcio+IHRlcm1pbmF0ZWRXb3JrZXJzOwogICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9y
dW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKG9yaWdp
bi5pc1NhbWVTY2hlbWVIb3N0UG9ydCh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAg
ICBpZiAod29ya2VyLT5zZWN1cml0eU9yaWdpbigpID09IHNlY3VyaXR5T3JpZ2luKQogICAgICAg
ICAgICAgdGVybWluYXRlZFdvcmtlcnMuYXBwZW5kKHdvcmtlci5wdHIoKSk7CiAgICAgfQogICAg
IGZvciAoYXV0byYgdGVybWluYXRlZFdvcmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJzKQpAQCAtNzc5
LDcgKzc3OSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgICAgICAgICAgICAgICAg
IHRlcm1pbmF0ZVdvcmtlcih3b3JrZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNvbnRhaW5zKGNsaWVudE9yaWdpbi5jbGllbnRP
cmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY2xpZW50T3JpZ2luLmNs
aWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9y
aWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luKSkKICAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi0+Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKTsKICAgICAgICAgICAgIH0K
IApAQCAtODA1LDkgKzgwNSw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGll
bnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7
CiB9CiAKLWJvb2wgU1dTZXJ2ZXI6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9y
aWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTV1NlcnZlcjo6
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50c0J5
U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29u
dGFpbnMoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0
cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IDYwNmRiNDZhZDAyN2NmMWJjNTVhZjc3MWI4ODI3ZjEwMDIzNDUyZmMuLmMxM2Y0ODI0NzMz
NzJlMjZlZmM4NDc2NDc5N2ZlZmE2YWIyMGVlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5o
IgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5I
YXNoLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyQWxsKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmKTsKQEAgLTE0NSw3ICsxNDUs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4g
c2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFz
VGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICAKICAgICBDb25uZWN0
aW9uKiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdp
blN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE3Nyw3
ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0
aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mKT4mJik7CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKICAgICB2b2lkIGRp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1fc2hvdWxkRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSA9IHRydWU7IH0KIApAQCAt
MjI5LDggKzIyOSw4IEBAIHByaXZhdGU6CiAKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4g
bV9vcmlnaW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3Jl
OwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKLSAgICBIYXNoTWFwPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3Rv
cjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7
CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+PiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CisgICAgSGFzaE1hcDxTZWN1cml0eU9y
aWdpbkRhdGEsIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2
aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2ltcG9ydENvbXBsZXRlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDZhYTVhMmE5ZmJkMjM2NjM5YjU3NDQwMjJjYjM4MjYyOWUxYjVkNGUuLjNj
MjYxNzJmMzJmNWIxMDE5MTgxYjc3ZTFlOTY4OGMxOTAwMmY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUg
IlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMjkgKzM5LDI5IEBAIHN0YXRpYyBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bklkCiAgICAgcmV0dXJuIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4mIGFsbENvbm5l
Y3Rpb25zQnlPcmlnaW4oKQorc3RhdGljIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4+IGNvbm5lY3Rpb25zQnlPcmlnaW47CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKICAgICByZXR1cm4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbikK
K1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX2lkZW50
aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAg
ICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4o
KS5hZGQobV9vcmlnaW4uY29weVJlZigpLCB0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsbENv
bm5lY3Rpb25zQnlPcmlnaW4oKS5hZGQobV9zZWN1cml0eU9yaWdpbiwgdGhpcyk7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5yZW1vdmUobV9vcmlnaW4ucHRy
KCkpOworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZSht
X3NlY3VyaXR5T3JpZ2luKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0K
IAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
b25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCiB7Ci0gICAgcmV0dXJuIGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5nZXQoJmNvbnN0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNC
eU9yaWdpbigpLmdldChzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXgg
NmYxMDJiYzUyNWI3MGQwNTM0ZTdmNzEwYTQ0ZjI1OTk4MzZhYTliMS4uMmU2MDRlZjJjYjU0N2Mx
NWQ1MzhjZGQ4N2Y4NWQ4OWVjODJlYjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgpAQCAtNzQsMTggKzc0LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAotICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAg
ICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsK
IAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwor
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA5MGExOWE1ODJkNDBlY2Y5YzI1MjYz
MDUxMDY1OTFkYTQwN2Q3MTllLi4xNTliY2U2NjlmMWNiOWIyZTZiOTRmMzljNmNkMjYxMjcxMmU2
YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnRlcm1pbmF0ZSgpCiBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpv
cmlnaW4oKSBjb25zdAogewogICAgIGlmICghbV9vcmlnaW4pCi0gICAgICAgIG1fb3JpZ2luID0g
Q2xpZW50T3JpZ2luIHsgbV9yZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRh
LnNjcmlwdFVSTCkpIH07CisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChtX2Rh
dGEuc2NyaXB0VVJMKSB9OwogCiAgICAgcmV0dXJuICptX29yaWdpbjsKIH0KIAotUmVmPFNlY3Vy
aXR5T3JpZ2luPiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25z
dAogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0YS5zY3JpcHRVUkwp
OworICAgIHJldHVybiBvcmlnaW4oKS5jbGllbnRPcmlnaW47CiB9CiAKIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCBjYzA3NTljNjE2ZWY4ZTgyNGEyN2VmZmM3NDFhNTkzYzVmZmZiYWQ5Li5kOTNm
NTAwMGFhYjllYjAxYmU0Y2I4YzRkZDBhYjFiNjNmZDg2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250
ZXh0RGF0YSgpIGNvbnN0OwogCiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDBlN2Q4MGNiZjg1ZWIxZGFjZmNkZGY1NTIzYTcxODMwNjQ3YzY3MWQu
LjAxNzJjM2I0MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbikKLSAgICAgICAgZW5jb2RlciA8PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsKKyAgICAgICAgZW5jb2RlciA8PCBzb3VyY2VPcmln
aW4tPmRhdGEoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8
PCBjc3BSZXNwb25zZUhlYWRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggM2M0YjQyNDZlODEyMDg3YjMwZTM2YmFm
YzE2OGVmNDY2M2M3MGE4Yi4uYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVmIHByb3RvY29sLCBXS1N0cmluZ1JlZiBob3MKIAogV0tT
dHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFzZUlkZW50aWZpZXIoV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKHNlY3Vy
aXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV09yaWdpblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAppbmRleCA5ZGNhZDk0YmZmMjI2ZDRhMDll
MDJlMGMxYTUwMjE3YjVhMWEwY2Y4Li4wNGNiZjIxYjNlN2FhYTYzMWI1MjUzYTdkNTk2M2RjNDg3
ZTk5ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwCkBAIC00MSwxMyArNDEsMTMg
QEAgV2ViU1dPcmlnaW5TdG9yZTo6V2ViU1dPcmlnaW5TdG9yZSgpCiB7CiB9CiAKLXZvaWQgV2Vi
U1dPcmlnaW5TdG9yZTo6YWRkVG9TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQor
dm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQogewogICAgIG1fc3RvcmUuc2NoZWR1bGVBZGRpdGlvbihjb21wdXRlU2hhcmVk
U3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5n
Q2hhbmdlcygpOwogfQogCi12b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQordm9pZCBXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgbV9z
dG9yZS5zY2hlZHVsZVJlbW92YWwoY29tcHV0ZVNoYXJlZFN0cmluZ0hhc2gob3JpZ2luLnRvU3Ry
aW5nKCkpKTsKICAgICBtX3N0b3JlLmZsdXNoUGVuZGluZ0NoYW5nZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5oCmluZGV4IDdmOGM5ODcxMWMyNWRhZTg2ZmViZWZjMDg4YzA5YjUyODlmMTdm
ZjkuLjJkMjlmNTYwOTU4NGYxMDIwOWU4MDZjZDEwNmFkNzY4ZDBiNDM5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXT3JpZ2luU3RvcmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NX
T3JpZ2luU3RvcmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKQEAgLTUwLDggKzQ2LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZShXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKIAotICAgIHZvaWQgYWRkVG9TdG9yZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYp
IGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJikgZmluYWw7CisgICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJTdG9yZSgp
IGZpbmFsOwogCiAgICAgLy8gU2hhcmVkU3RyaW5nSGFzaFN0b3JlOjpDbGllbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDUwMGY5NDliYzE3ZmRjNTZmOTA2
MGU1ZDQ3NDMzYTVjZjUzMDM2ZDUuLjM4YzM5OTFlZWZkMWFlZWJlYzU1NzJmOTA4MWFjNGRhMTZk
YTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0yMTIs
NyArMjEyLDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JE
YXRhKQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGpvYkRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKGpvYkRhdGEuc2NyaXB0VVJMKTsKICAgICBpZiAoIVN0b3JhZ2VQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4sIHNlcnZlcigpLnNlc3Np
b25JRCgpKTsKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkCiAK
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
IGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ewotICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmln
aW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGRhdGEudXJsKSkgfTsKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IENsaWVudE9y
aWdpbiB7IFdURk1vdmUodG9wT3JpZ2luKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRh
dGEudXJsKSB9OwogICAgIG1fY2xpZW50T3JpZ2lucy5hZGQoZGF0YS5pZGVudGlmaWVyLCBjbGll
bnRPcmlnaW4pOwogICAgIHNlcnZlcigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXVEZN
b3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoZGF0YSksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAxNDg1MGFjZGY2ZjFmYmU4ODk1ZDkz
MDVkMDUxMzQ2Zjk5ODJkODhkLi4wMGI3ZmM3YzgzOThhM2IzMjhkZjU4ZmIyNjhhMDdhOTJkODE4
YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihXVEZNb3ZlKG9yaWdpbikpCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisg
ICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBt
X2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBiYjEwYmRlZjkyY2Vm
YTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiLi5lOWMzOTg4YzkzNmViOGViZDgyODFkMmI3YzMx
ODJjMzI4ZDk5NTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYpOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKaW5kZXggZGQ0ODhjNmZkZmY4MWM2NjI1YmI5MTBkMjA3ODM1YzIxNjg5ZWE0
ZC4uZjg1NzI0ZWE2ZmU2ZmM1OGU5YmQ0NDJiMTFjMTA2ZmE3M2RlNjc2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTExMywyMyAr
MTEzLDI0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCiB7CisgICAg
YXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5zZWN1cml0
eU9yaWdpbigpOworCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKCZzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZl
ciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtl
cnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2lu
KCkpOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0
ZWQoc2VjdXJpdHlPcmlnaW4pOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKTsKLSAgICBpZiAobmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbikpIHsKKyAgICBpZiAobmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkgewogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQi
KTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VjdXJp
dHlPcmlnaW4sIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogfQogCi1ib29sIFN0b3JhZ2VQcm9jZXNz
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikgY29uc3QKK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygp
LCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOwogICAgIH0pOwogfQogI2VuZGlmCkBAIC0yNTAsNyArMjUxLDcgQEAgdm9pZCBT
dG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHRTdG9yYWdlVGFzaygpCiAgICAgdGFzay5wZXJmb3Jt
VGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Ms
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luKQogewogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBz
b2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
QEAgLTI3NCw5ICsyNzUsOCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2VydmljZVdvcmtlclBybwogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzICYmICFtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gb3JpZ2luRGF0YS5z
ZWN1cml0eU9yaWdpbigpOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUob3JpZ2luLmNvcHlSZWYoKSwgbV9zdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKFdURk1v
dmUob3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgYXV0byBj
b250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRl
KHNlY3VyaXR5T3JpZ2luLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCkt
PmNvbm5lY3Rpb24oKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIGNvbnRleHRDb25uZWN0
aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiAKICAgICAgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogI2VuZGlmCiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbkRhdGFzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja0lEXSgpIHsKICAgICAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTM0OCwx
NCArMzQ4LDE0IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpKSB7CiAgICAgICAgIGF1dG8mIHNlcnZlciA9
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
bkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQotICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9y
aWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlP
cmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCisgICAgICAgICAgICBzZXJ2ZXIuY2xlYXIoc2VjdXJp
dHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgIGlk
YlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhzZWN1
cml0eU9yaWdpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtNDU1LDIxICs0NTUsMjEgQEAgV2ViU1dPcmln
aW5TdG9yZSYgU3RvcmFnZVByb2Nlc3M6OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+
KHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLm9yaWdpblN0b3JlKCkpOwogfQogCi1XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bnMuZ2V0KCZjb25zdF9jYXN0PFNlY3VyaXR5T3JpZ2luJj4ob3JpZ2luKSk7CisgICAgcmV0dXJu
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNlY3VyaXR5T3JpZ2luKTsKIH0KIAot
dm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25z
dCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBz
ZXNzaW9uSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBpZiAobV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7
CiAgICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiksICpzZXNzaW9uSUQpLCAwKTsKKyAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzRm9yRXhwbGljaXRTZXNzaW9uKHNlY3VyaXR5T3JpZ2luLCAqc2Vzc2lvbklEKSwgMCk7CiAg
ICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKSksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3Moc2VjdXJpdHlPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdl
UHJvY2Vzczo6ZGlkRmFpbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKQEAgLTUzNywx
NSArNTM3LDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiAKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKLSAgICBhdXRv
JiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpOwotICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkKKyAgICBhdXRv
JiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmln
aW4oKTsKKyAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVy
bWluYXRpbmcgaXQiKTsKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OwogCiAgICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0g
ICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJm9yaWdpbik7CisgICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aAppbmRleCBkMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZmYTM5YzA2YmM5Li4yMDc4YTEz
MTA3Mzk4NThjYzRiMjdjMmM1YjMxNzNjYzVmNGE5ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCQmFja2luZ1N0b3Jl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vbmlx
dWVJREJEYXRhYmFzZS5oPgpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiBzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogfQogCkBAIC05NCw4ICs5Myw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwotICAgIHZvaWQgY3JlYXRl
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZl
ckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CkBAIC0xNTAsNyArMTQ5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKTsKIAogICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEKTsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0OworICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNl
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpAQCAtMTc3LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogCi0gICAgSGFz
aE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBSZWY8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkg
eyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFi
YXNlUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJh
bWVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3Bw
CmluZGV4IDAzMTllNWFlZDNmZmMwYTM3MDlkNGY3NWY2ZDc5Njg2MmI2NWRhNTguLjk2YjEzZDE3
ODU0NDVjMzk3MzNiMmYwNDhhNjBmMjAyMTUwOGM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxGcmFtZUlu
Zm8+IEZyYW1lSW5mbzo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUs
IGNvbnN0IFdlYkNvCiAgICAgZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFp
bkZyYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0
IG9mIHRoZSBmcmFtZSwgbm90IGp1c3QgdGhlIFVSTC4KICAgICBmcmFtZUluZm9EYXRhLnJlcXVl
c3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5m
b0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0
eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmRhdGEoKTsKICAgICBmcmFtZUluZm9EYXRhLmZyYW1l
SUQgPSBmcmFtZS5mcmFtZUlEKCk7CiAKICAgICByZXR1cm4gY3JlYXRlKGZyYW1lSW5mb0RhdGEs
IGZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhYjYwYWZiNmI0OGI5
M2Q4NWExM2I3YzU5Njc1N2I4NDM5NjAwMDEuLmVlODdhYzE5MTUwNjA2YjRlYjgzYTgzZGQ3YWYz
YjI3YjAyNzc4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlCiAgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1w
bChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHRv
SW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICB3ZWJzaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBmMTBkNjMzMWQ3YjdkNTIyZDc1YTQ0YjNmMzY0NTM4ZmUxODEzZjlmLi40ZTM5ZGFkODJhNTIy
NWI5ZDlkZDI0ZWY4MWZhOGFmNzUzYTM1YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmCiAgICAgaWYgKCFzdG9yYWdlTWFu
YWdlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbih0b0ltcGwo
b3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDIzYWE0ZDEzZDQx
MzNmZGU4OWJlNGRjMGMxNGViOTk4MGY4YTllODIuLjZiMTZjMmEwNWMyNWJkNDBiMTkwODFiOTBk
ZGQ5ZmZiMTFiNTg3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9p
ZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyUmVmIGNhY2hlTWEKIAogICAgIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQg
ZGF0YVJlY29yZDsKLSAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1v
cnlDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJlY29yZC5h
ZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29y
ZCk7CiAgICAgfQogCiAgICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXJBbGwpIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICAg
ICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogCiAg
ICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAppbmRleCA2NjUwYjU4MzVkM2Y3N2Q2MzUwNWIwZDIyMzUzMjZlMzBmMmFkMzVhLi5jYTI5YWFm
YjFiYzliNDI0ODI2ZThhODg3NDJmZjRjZDUyYmEwMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNv
cmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpET01DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkpOwogICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVj
b3JkcyA9IHsgV1RGTW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9N
Q2FjaGU7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRj
aENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKICAgICBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKIAogICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNv
bnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgewotICAgICAgICBhdXRvIG9yaWdp
bkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChv
cmlnaW4pLT5zdHJpbmcoKSkpOworICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5z
dHJpbmcoKSktPmRhdGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJl
Y29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0
YVJlY29yZC5vcmlnaW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGEgPT0gcmVj
b3JkT3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhZWVlYzNiMTI2NDE2MDI1N2M3MDU5Yzg5NzFl
ZGZkNDIzMDk1NzYuLmI2MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5NzU5N2M1NjgxODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKK1JlZjxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBh
ZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBXVEZNb3ZlKG9y
aWdpbiksIHN0b3JlIH0pOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7CiAgICAg
cHJveHktPmNvbm5lY3QoKTsKICAgICByZXR1cm4gcHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBv
b2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3Jl
KQorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShX
ZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCiAgICAgOiBXZWJQcm9jZXNzUHJveHkgeyBw
b29sLCBzdG9yZSB9Ci0gICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3Nl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlE
KGdlbmVyYXRlUGFnZUlEKCkpCiB7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5j
aE9wdGlvbnMmCiAgICAgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9w
dGlvbnMpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
QVNDSUlMaXRlcmFsKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIp
KTsKLSAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxp
dGVyYWwoInNlY3VyaXR5LW9yaWdpbiIpLCBvcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICBsYXVu
Y2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3Vy
aXR5LW9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5oCmluZGV4IDFjNzcwYjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRlNWY3ZDk2MTE4MDUuLjMzNTFi
NzQwOTRiZTQ3ZTgzMGUzOTdjNDA2ODFiYWEwODI5OGI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4
LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBm
aW5hbCA6IHB1YmxpYyBXZWJQcm9jZXNzUHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgUmVmPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGlj
IFJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAg
ICAgflNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1Jl
Z2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3Rv
cnkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4o
KSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9
CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFn
ZUlEOyB9CiAKIHByaXZhdGU6CkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1f
c2VjdXJpdHlPcmlnaW47CiAgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWU3ODhmNDc0NzBlNmU0ZWFiMWZmYTkxMDUzNWJi
MDk3NzNiYTMyMC4uNTRhMDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4NDlmZTRjYWQwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMjIsMTUgKzEyMiwxNSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJv
eHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nl
cwogICAgIH0KIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAg
IFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4od2ViUHJvY2Vzc1Byb3h5KS5vcmlnaW4oKSk7CisgICAgICAgIHNlY3VyaXR5T3JpZ2luID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5zZWN1
cml0eU9yaWdpbigpOwogICAgIH0KICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6U3RvcmFn
ZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIG9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29y
a2VyUHJvY2Vzcywgc2VjdXJpdHlPcmlnaW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzNTFiZjZhYjI2YjZlZWZkODNmYTk2Mjdh
OGU0Yzc2NjIxYTA3ZjY2Li4yZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBkZjFkNThjM2U0NDc1ZTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEs
MTIgKzU5MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQo
U3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcgogfQogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPiBzZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHks
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5
ID09IG1fc3RvcmFnZVByb2Nlc3MpOwogCi0gICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlu
cyhvcmlnaW4ucHRyKCkpKQorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFp
bnMoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKQEAgLTYxNCw4ICs2MTMsOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MoU3RvcmFnZVBybwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0
eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSA9IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywg
b3JpZ2luLmNvcHlSZWYoKSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5hZGQob3JpZ2luLmNvcHlSZWYoKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5wdHIoKSk7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBzZWN1cml0eU9yaWdpbiwgKndlYnNpdGVE
YXRhU3RvcmUpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShzZWN1
cml0eU9yaWdpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCAqd2Vic2l0ZURhdGFTdG9yZSk7CkBAIC05OTAsNyArOTg5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2VzcykpIHsKLSAgICAgICAgYXV0byogcmVt
b3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZSgmZG93bmNhc3Q8U2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eT4oKnByb2Nlc3MpLm9yaWdpbigpKTsKKyAgICAgICAgYXV0
byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykuc2VjdXJpdHlPcmlnaW4oKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09
IHByb2Nlc3MpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KQEAg
LTE4NzgsOSArMTg3Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgp
ICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2Vz
cyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAg
IGF1dG8mIG9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
Y29udGFpbnMoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vu
c0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0
eU9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAg
ICAgICAgICAgIG1fZm9yZWdyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRk
KHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2JhY2tn
cm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xODg4LDkgKzE4ODcsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3
ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2Vydmlj
ZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2lu
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmNvbnRhaW5zKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBtX2Jh
Y2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgICAgICAgICAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJv
Y2Vzcy0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3Vu
ZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoc2VjdXJpdHlPcmlnaW4p
KQorICAgICAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChzZWN1cml0eU9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigp
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggNDU3ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVmMzY4MTBiMTU4MDA1ZC4uODk1
ZmMzMzY5ODBhOGIzZDM4NzI1MDAwNmM0MTZjODhiYzI1ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAg
ICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJv
bVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIGNvbnN0IEhhc2hNYXA8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBz
ZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nl
c3NlczsgfQorICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFs
bG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTUx
Nyw3ICs1MTcsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NX
aXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKQEAgLTY3
Nyw4ICs2NzcsOCBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fZm9yZWdyb3VuZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1h
cDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBQcm9jZXNzVGhyb3R0bGVyOjpGb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclBy
b2Nlc3NlczsKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiBtX2JhY2tncm91bmRUb2tl
bnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbj4g
bV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7CiAjZW5kaWYKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZmQ0ODA0ZGNiYmYzNTRkZmNi
MzllZDBlOWNkZTc5OGZlMTI5MTg2OS4uN2Y3MDJlMThlYjNhNjdkYmU0NzZlNjkzYTBmNDIwZDEz
YjRjZjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxM
b2NhbFN0bwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0
b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
KQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdp
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGll
ZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAg
ICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRleCAyYjFmOGRlYjZhYmQyOWQ0NTNiNTQzODQ5MTcy
MzQwODYzNmI3NmI1Li44NDIzYjk5MzQ1ZjhkOTExNzA3ZTBmOGI1YzVmZTZhZDA0MGUyMzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25T
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAg
dm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYpOworICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIHZvaWQgZGVsZXRlTG9j
YWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IGMyMTQzZmRkZWM1YTYxYTQwZTg2NWE1NmRjOTliMGE5YjIxMTE2ZTguLjBmOWU5YWMwNDQ3Mzlk
OTM1YTUyODI4MWU3NTRhODZkYTI2YTg2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNDcsNyAr
MzQ3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgICAgIFdlYnNpdGVEYXRh
IHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkg
eyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2lu
KSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICBXZWJz
aXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpE
aXNrQ2FjaGUsIDAgfTsKICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBzaXplID0g
ZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
cykgPyBzdG9yYWdlLT5kaXNrVXNhZ2VGb3JPcmlnaW4oKm9yaWdpbikgOiAwOwotICAgICAgICAg
ICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBzaXplIH07CisgICAgICAgICAgICAgICAgV2Vic2l0ZURh
dGE6OkVudHJ5IGVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsKIAogICAgICAgICAgICAgICAgIHdlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDkz
YjkzNmZlNWEyMWM1MDRlYjMzMWFjMTVlN2UzNTRmMGQwNjc0ZjkuLjAxZjEzNTdhODg2MzI3MDI3
YWQxNjVmMWYwM2U4MjIzMGI0OTVkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihH
ZW9sb2NhdGlvbgogCiAgICAgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9u
SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luLmRhdGEoKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24mIGdlb2xv
Y2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA1YjMwZjM4NzM5MzNiMGMx
MDA0NmMyZDZjOWY4Zjg4MzA5MGYxNWNiLi44ZjVkNjFiZjcxYzcyMjI2YTdiMDkxZTNkYjM5NDc4
YmZkM2FmM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjkzLDcgKzY5Myw3
IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNo
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG9yaWdpbnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luIDogb3JpZ2lucykKLSAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5k
KEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgb3Jp
Z2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUob3JpZ2lu
LT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luSWRlbnRpZmllcnMpKS5sZWFrUmVmKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRl
eCBlNGQzN2EyMzZjY2MwMmZiNDU4NGI2ZTM2YjFiYzQ4ZDk1OGU3NDRhLi45Y2NhY2UwNTc3Yzdm
YmM4ZmY1NzA2YmRmYWQ5M2U0MzdjYzZlMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlh
UmVxdWVzdCYgdQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAKICAgICBhdXRvKiB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luID0gdXNlclJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwotICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSwgdXNlclJlcXVlc3QucmVxdWVzdCgpKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25G
b3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHVzZXJSZXF1ZXN0LnVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luKCktPmRhdGEoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0
YSgpLCB1c2VyUmVxdWVzdC5yZXF1ZXN0KCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVz
dCYgcmVxdWVzdCkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0VudW1lcgog
CiAgICAgU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSByZXF1ZXN0LnRv
cExldmVsRG9jdW1lbnRPcmlnaW4oKTsKICAgICBBU1NFUlQodG9wTGV2ZWxEb2N1bWVudE9yaWdp
bik7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRlTWVk
aWFEZXZpY2VzRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVu
dE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExl
dmVsRG9jdW1lbnRPcmlnaW4pKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUocmVxdWVzdElELCB3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCktPmRhdGEoKSwgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0YSgpKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3Jl
OjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAppbmRleCAxZTIyMTJlMDU4ZWFlODE0NDU0ZGJmYmJkOTZlMzU3OWJlYzUxZTg3Li41ODk4
NDAyYzMxNDljY2IzNDkzNzE2MzZiMDcyMWE2MWY5Nzk0Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0Lmg+CkBAIC05NSw3ICs5Niw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgZGF0YSwgY29udHJvbGxpbmdT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRv
cE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgY29udGV4dElkZW50aWZp
ZXIpCkBAIC0xNTMsNyArMTU0LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNo
UmVnaXN0cmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7Cisg
ICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTF0oKSBtdXRhYmxl
IHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRl
bnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2Fs
bGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2kKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVu
dGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRkKGNhbGxiYWNr
SUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBjbGllbnRVUkwpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFk
eShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNr
SUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9u
RGF0YSkKQEAgLTE5MSw3ICsxOTIsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0
UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsK
KyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMXSgpIG11dGFi
bGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJ
ZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNh
bGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ3YjRkYmI4MjNiNWFl
YWExZDdlMzA1ZDgyYTNlYzNhMTc5NzkwNzMuLmQ0ZWVlMzJjOWRiOTE3MmNmYzkwNGIwZWY0ZGI2
NGIzNjYyNGQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03MzEsMTcgKzczMSwxNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgCiAg
ICAgYXV0byYgb3JpZ2luID0gZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAg
ICBhdXRvIG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pOworICAgIGF1dG8mIG9yaWdpbkRhdGEgPSBvcmlnaW4uZGF0YSgpOwogICAgIGF1
dG8mIHRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gY3Vy
cmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJlbnRP
cmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3QgbmV3
UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
b3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJl
ZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRh
YmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRl
dGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRl
dGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlm
ICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwg
Y3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVj
dGVkVXNhZ2UoKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRl
ZERhdGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRR
dW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxz
LmV4cGVjdGVkVXNhZ2UoKSksCiAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBT
ZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVBy
b2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwKIAogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRh
dGFiYXNlSWRlbnRpZmllcigpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAorICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwg
dG90YWxCeXRlc05lZWRlZCksCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBh
Z2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1Q
bGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAKICAgICBjYWNoZVN0b3JhZ2Uuc3RvcmVVcGRh
dGVkUXVvdGFGb3JPcmlnaW4oJm9yaWdpbiwgbmV3UXVvdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggM2ZiYjE3ZDEyNTI1OTJmY2Q5ODNjYWM2NmQ2NzhmZWEyODNhMmZk
ZC4uZWU4Mzk3Y2I1ZWZhNTcyMmVkYzdkZDNkZGJmN2U0MTdlY2Y2OGRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKICAg
ICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9u
LmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKICAg
ICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChzb3Vy
Y2VEb2N1bWVudC51cmwoKSk7Ci0gICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc291cmNlRG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNl
Y3VyaXR5T3JpZ2luID0gc291cmNlRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CiAg
ICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUpCiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YS5mcmFtZUlEID0gb3JpZ2luYXRpbmdGcmFtZS0+ZnJhbWVJRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjZmZGYwYTdiY2RlYzQzM2E2ZDgwMzc0NjUz
ZjdhNDVhMWNlN2FkNy4uNmM3ZmM5ODNhNjVhOTU5MGI1ZWQ4NDI3ODc0ODg1NzEzNDU5MGY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXQKIHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKSkgewogICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hl
KHNlc3Npb25JRCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJz
aXRlRGF0YTo6RW50cnkgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
b3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKKyAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbi0+
ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOwogICAgIH0KIAogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBjMzBkZmVkMzhhZjU0Mjc1NDQ1MjQ3YzFmMjYyNDc2
NTdkYTFkOWM1Li41ZDVjMmJjMDVmYzYwYzRlMmY3MGNjYmFhZDkwYjc5NTU1MmQ4MWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKQEAgLTEyMiw5ICsxMjIsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xv
c2VEYXRhYmFzZUlmSWRsZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKK2NvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0
eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkp
OworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDQzM2M0ODczODNjNDgz
NjM1YWM2ZjMyNDQ2NTUzNThiZWY1NzQ5ODEuLjE2NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3
MzkyY2QxODM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50
QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBv
dmVycmlkZTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3Jh
Z2VBcmVhSUQ7CiAgICAgUmVmPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCmluZGV4IGEyNjUwZDFiM2ViZmM3MjhjMjc1ZWUwMTBiZmVhM2EyNjhiMGI4ODYuLjQ3
MTNhYzRiN2UxYzc4ZTEzMjJmNDlmMmI1NWZjODM5MjY1YjgxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAg
LTc0LDE0ICs3NCwxNCBAQCBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5h
bWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDbwogICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OkxvY2FsOgogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAg
ICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFj
ZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
OjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3Jh
Z2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVs
T3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9y
YWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNl
SUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9y
aWdpbikpLCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVM
b2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VO
YW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCAwKTsKIAogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VN
YXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlP
cmlnaW4tPmRhdGEoKSksIDApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsOgpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJl
YUlELCBjCiAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwogICAgIH0KIAotICAgIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygq
cGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJh
bWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1f
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTdG9yYWdlRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJh
bWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3Jv
dXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKaW5kZXggMjFmZDU4NzA4ODAxYzA4ZjZjMTU2ZjA5NTRjODg2M2QwNDZlOTFj
Yy4uMmYxY2QwN2E3YWRkMWU2YTUwZThhMjg5YWI5YWViYjczYTE3NGExMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0
b3JhZ2VOYW1lc3BhY2VJbXBsKCkKIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVz
dHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiB7Ci0gICAgbV9zdG9yYWdl
QXJlYU1hcHMucmVtb3ZlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1h
cC5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4pCkBAIC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY3Jl
bWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9
CiAKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAorICAgIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCAxNjQ3NzIyNzg0Y2JhNGNl
M2FkYmYxZTEyMmFhYmYwZTYwMzk1ZWM5Li4zODZkNDhkOTkwMjZiYzFiMTcxZGExYmU2ZDY2NDNm
ZjA0MDZmZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vz
c0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJp
ZGU7CiAKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KIAogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+
IGNvcHkoKTsKICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBkNWU1Zjc0NzdlODMzZDI0Y2ViM2JhMTkyOGYx
ZDFjMTY5MmZlYWJhLi5kZGJkYjIyZWEwZmEwZGM0YjFjYmQ1YTZmYzZmODg2NWI4YWVhMTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAg
LTYzNyw3ICs2MzcsNyBAQCBsb25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9k
YXRhYmFzZU11dGV4KTsKIAotICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihv
cmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQppbmRleCA3NmMyOGY0ZGRiZjc0OWVm
MGRhYjIxOTA0OGNlZDIxMmE5ZDAwYmRlLi4wMDUxZjU4MmRkNTQ2MmZkZmU1ZmY4MzdlMGMxOWEw
NjQwMTA3ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlTWFuYWdlci5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIC0gKE5TQXJyYXkgKilk
YXRhYmFzZXNXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIGlm
ICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVW
ZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSk7CisgICAg
VmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
ZGF0YWJhc2VOYW1lcyhbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKICAgICBOU011dGFibGVBcnJh
eSAqbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVW
ZWN0b3Iuc2l6ZSgpXTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lVmVjdG9yKQogICAgICAg
ICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5hbWVdOwpAQCAtMTQyLDEyICsxNDIsMTIg
QEAgLSAodm9pZClkZWxldGVBbGxEYXRhYmFzZXMKIAogLSAoQk9PTClkZWxldGVPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gb3JpZ2luICYm
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVd
LT5kYXRhKCkpOwogfQogCiAtIChCT09MKWRlbGV0ZURhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFi
YXNlSWRlbnRpZmllciB3aXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewot
ICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBf
Y29yZV0pLCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3JlXS0+ZGF0
YSgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiAvLyBGb3IgRHVtcFJlbmRlclRyZWUgc3Vw
cG9ydCBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQppbmRleCA5Yjg0MTg2MDJlNTlhMWNhOWYyY2M5
ZTQ4OGI2OGRlNjY2Y2IyMjIxLi4xMDhjNTI4N2Y5MDdlODFhNjFhMDFhYTcyNDIzYzk2MDc5NTBi
Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KQEAgLTUzLDEyICs1MywxMiBAQCAtIChXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbgogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKLSAg
ICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoW19vcmlnaW4gX2NvcmVdLT5kYXRh
KCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkucXVvdGEoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAv
LyBJZiB0aGUgcXVvdGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1
c2FnZSwgdGhhdCBxdW90YSB3aWxsCkBAIC02Niw3ICs2Niw3IEBAIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogLy8gcHJldmVudCBuZXcgZGF0YSBmcm9tIGJlaW5nIGFkZGVkIHRvIGRhdGFi
YXNlcyBpbiB0aGF0IG9yaWdpbi4KIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFtfb3JpZ2lu
IF9jb3JlXS0+ZGF0YSgpLCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCmluZGV4IDlhNjg5Y2E1
NTk0NzNlZDNiMDE1NGFhOTVjZWM2ZTUxZmE5YTdkNzAuLjZlNTdlY2IzNDg5YjVhMmQ0NzRmYTg1
ZWNhZWU3ZDY3MmI1YzM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQpAQCAtODQsNyArODQsNyBAQCAtICh2b2lkKWRl
bGV0ZUFsbE9yaWdpbnMKIAogLSAodm9pZClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCiB7Ci0gICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0
ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBf
Y29yZV0pKTsKKyAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcp
ZGlza1VzYWdlRm9yT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQppbmRleCA0ZjQyNDgzN2RlYThhOWEyYzRkNTdjYWY2YzgzZGFhZjg0ZTcyYTYx
Li40ZTRjMTNkZmI3M2FiNjRhZWU5N2Q3YTM3Mzk1MTNhZTQ5MjQyOWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQpAQCAtNzEsNyArNzEsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNT
dHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSkpLmRhdGFiYXNlSWRlbnRpZmllcigpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlm
aWVyKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNjksMTcgKzE2OSwxNyBAQCBAaW1w
bGVtZW50YXRpb24gV2ViU2VjdXJpdHlPcmlnaW4gKERlcHJlY2F0ZWQpCiAKIC0gKHVuc2lnbmVk
IGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVy
cHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKSk7CisgICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1
b3RhCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5xdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZh
dGUpLT5kYXRhKCkpOwogfQogCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcp
cXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0UXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKS0+ZGF0YSgpLCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGZiNTQ0MDgwMjBhMDcyMzVhZjZhZTRl
NDVjYmYyMWEyOTQ4ZTRhNjQuLjM2MDU2MjM1ODQ5MWI1MmQ0NTRmNWYzYzYxZjEzMzYxYmU4ODM0
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cApAQCAtMjU2LDcgKzI1Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFz
ZXNXaXRoT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpCiAgICAgaWYgKCF3
ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gZGF0
YWJhc2VOYW1lcyA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4t
PnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBhdXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNlTmFtZXMod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3Vy
aXR5T3JpZ2luKCktPmRhdGEoKSk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8VmVjdG9y
PFN0cmluZz4+PiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0
cmluZz4+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBIUkVT
VUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9y
aWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlP
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRv
bigpLmRlbGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0
YSgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzMxLDcgKzMzMSw3IEBAIEhSRVNVTFQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1l
LCBfSW5fb3B0XyBJV2ViCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5n
TGVuKGRhdGFiYXNlTmFtZSkpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRl
bGV0ZURhdGFiYXNlKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCks
IFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAg
ICByZXR1cm4gU19PSzsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNl
TWFuYWdlcjo6c2V0UXVvdGEoX0luXyBCU1RSIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1
b3RhKQogICAgIGlmICh0aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRR
dW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tl
cjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
b3JpZ2luKS0+ZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5MDZjYmJhNTFk
Yzc1NDliYjczZWRmMjU3M2YyYWZhZTAyM2RjMzA3Li44MWIyNjlmYzQyMGM1OWNjNmVmNWQ5OTJm
Yzc2Y2M0OWIwZWEwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJp
dHlPcmlnaW4uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdp
bjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnVzYWdlKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAKICAgICBy
ZXR1cm4gU19PSzsKIH0KQEAgLTE0MCwxMyArMTQwLDEzIEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlP
cmlnaW46OnF1b3RhKF9PdXRfIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KQogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKm1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgICAgICAKIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnNl
dFF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7Ci0gICAgRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqbV9zZWN1cml0eU9yaWdpbiksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNp
bmdsZXRvbigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgcXVvdGEpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336480</attachid>
            <date>2018-03-24 12:14:33 -0700</date>
            <delta_ts>2018-03-24 12:17:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180324121432.patch</filename>
            <type>text/plain</type>
            <size>132627</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uZjA2N2NkYzY5YWVjNzlhNDVkMGM5YWZjZDcyMTVk
N2FlOTY1NDFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0
YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNvbnN0
cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHkuCisK
KyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5T3Jp
Z2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBkdXBs
aWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlPcmln
aW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJzIGNh
biBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0
b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNl
c3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9y
eTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1cml0
eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdpbiBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5k
U3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2lu
RXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2Fu
RGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1pbHkg
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVn
aXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJt
aW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi5hZjc2NjhlMmZl
ZDU4ZmU0MzNkZmI0NzlhOTZlZGI3ZGQzMTE2NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBA
CisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtl
ciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ug
U2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29ya2VyIGNv
ZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9iamVjdHMg
dW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFz
ZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3RvcmU6OmFk
ZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1vdmVGcm9t
U3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmln
aW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICog
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwOgor
ICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICog
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDb3B5
T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJNZWRpYVJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2Vj
dXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3Rv
cmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9j
YWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1vZGVdIEFk
b3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2MwNy4uMTE3
YTNiMzYyNDQ4NmI4ZTUzZGI2OGZiNGE5NGVkYzdlOWRiNmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50
bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZiBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpk
aXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2Vi
S2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNhY2Q5ZDAzMjhk
NmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uMDZmMDhmZDUxMmViNjRiN2FmNmMyZjNiM2FhZmMz
ZDgzOGU1YzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtl
ciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ug
U2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46
XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmlnaW46XSk6CisgICAg
ICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRoT3JpZ2luOl0pOgor
ICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
IHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06Cisg
ICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3Jp
Z2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1b3RhXSk6CisgICAg
ICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4LTAzLTIzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BM
QVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4uZDRlZDU4YjJiMjgx
ZjM4NGY0N2I0Mzc4MTBiNzA1ODM2MzZkZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRs
eSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBXZWJEYXRh
YmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNX
aXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKToK
KyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdlKToKKyAgICAgICAgKFdl
YlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6c2V0
UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIy
Mjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5MmE1ZWY5YmU1Mi4uMjdl
OGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDksNyArNDksNyBA
QCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBj
b25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9OworICAgIHJldHVybiBDbGll
bnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9yaWdpbigpLmRhdGEoKSwg
b3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1ZW50aWFsTWF0Y2goc2l6
ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMsIERPTUNhY2hlOjpSZXF1
ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NQ2FjaGU6Ok1h
dGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZmYmY4NzAzYzhlODM3MzVi
MWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTljZmNhYTExZDJmM2I2ZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBA
IC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAg
ICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJl
Y3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFjZWRhZTM2MzViNzg3MWU3
ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3MGJmMWNmYWNjZjZhODQy
ZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3LDcgQEAgU3RyaW5nIE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggN2VmYjc5ZDU1
M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJkZDhmZDExZDViZTZhYjhj
MmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA1YTJiNmVj
ZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3YzA1OGYwOGQzNDg1YzUx
NGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
T3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRl
cmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250
ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElE
QkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkp
KTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIGlm
ICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0
aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVk
IGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAgICBBU1NFUlQoY29udGV4
dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJ
ZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRv
cE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
SURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJp
dHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5
ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4yYjBmZGM1MjRiNDViNjA2
ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRB
bGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPCiAKICAgICBt
X2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVPcmlnaW4pLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3JpZ2luKSwgY2FsbGJhY2tJ
RCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtYWluRnJhbWVPcmlnaW4u
ZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBkZDc1YTNkNGQ1
YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNiM2Q5N2E3ODk4MjNkNTNj
OTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFi
YXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlP
cmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1
cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsKICAgICBpZiAoZGF0YWJh
c2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX2RhdGFiYXNlVGhy
ZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVh
ZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVlMTQ1NTRlYWY2NzQzNjcy
OGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJjN2JkYTRmOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJh
c2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzCiAgICAg
QVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
IH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6c2VjdXJpdHlPcmlnaW4o
KSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFzZUNvbnRleHQ6OnNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXNDb250ZXh0VGhyZWFkKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdmNzVhMGMxMTAzZDNhZmM5
ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDkyM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFzZUV4Y2VlZGVkUXVvdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAgICAgdXNpbmcgQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNlY3VyaXR5T3JpZ2luRGF0
YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQyN2FkZmE1MWZiNzI4MWNi
ZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2ZjOTUzYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBh
dGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBuYW1lLCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVs
bFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKQEAg
LTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
b3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjViNzUxYjI2NGFkZjkzNC4u
N2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2MTEsNyBAQCBTdHJpbmcg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNldE1l
ZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0NDlkNjUyLi43ZDYzMmRh
M2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYgZXJyb3IKICAgICB9CiAK
ICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBh
Z2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgp
LT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVudCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBkODg1MGZmYWE1MDUw
YjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3NDFkMzBhMDhhMzZlZWY1
MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgU3RvcmFn
ZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdG9yYWdlVHlwZTo6TG9j
YWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBmaW5hbCB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9
OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9y
YWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDljMWNjMzgwYTExYWM2ZDM4
MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVjZWY3NTAzYzBlODU3ZmFk
MmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwog
CiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51bGwgdGhlIGRlZmF1bHQu
CkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3Vs
YXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWcKICAgICBpZiAoc3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJp
bmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpbnQg
cmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JP
VykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNh
bGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShjb25zCiAgICAgaWYg
KHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlm
IChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAgc3RhdGVtZW50LmJpbmRJ
bnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kSW50NjQo
MSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgyLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVtZW50KHVwZGF0ZVN0YXRl
bWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3JvdXBTdG9yYWdlSUQKIAog
ICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJM
KCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1hbmlmZXN0VVJMKCkpOwot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0
ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVtZW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0
KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGluc2VydE9yaWdpblN0
YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEpOwogICAgIGlmICghZXhl
Y3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1YzRjNjIyNmRhZTdjNzE5
ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4YjM0YTc5Y2QwYjhjZmU3
NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0LDcgKzg3NCw3IEBAIEV4
Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdG9yYWdl
QXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7Cisg
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAgbV9zZXNzaW9uU3RvcmFn
ZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSk7CiAgICAg
cmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRkOGYzMmQ4M2U0MzkzZGQ5
ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0NSwxMyBAQCBib29sIHNo
b3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCi0gICAgOiBtX3By
b3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdXJsLnBy
b3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1f
aG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdXJsLmhvc3QoKS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7IHVybC5wb3J0KCkgfQor
ICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1cmwpKQogewotICAgIC8v
IGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUg
RE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFy
dHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCisgICAgbV9kb21h
aW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gc3Rk
OjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkKKyAgICAgICAgbV9kYXRh
LnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNl
Y3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcgQEAgU2VjdXJpdHlPcmln
aW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5U3RyaW5nKCkgfQotICAg
ICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9kb21haW4geyBlbXB0eVN0
cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAsIG1faXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXMgfQpAQCAtMTc1LDEx
ICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQogfQogCiBTZWN1cml0
eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQotICAg
IDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVkQ29weSgpIH0KLSAgICAs
IG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQorICAgIDogbV9kYXRhIHsg
b3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2RvbWFpbiB7IG90aGVyLT5t
X2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRoIHsgb3RoZXItPm1fZmls
ZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3RoZXItPm1fcG9ydCB9CiAg
ICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAgICwgbV91bml2ZXJzYWxB
Y2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJ
bkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIyOCw3ICsyMjMsNyBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSBjb25zdAogICAg
IC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2YgYW4gc3RkOjpvcHRpb25h
bCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywgc2V2ZXJhbCB0aHJlYWQg
d2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJlbnRseSBhbmQgdGhleSds
bCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpIGFuZCBnZXQg
dGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSA9PSBJ
c1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAgIG1faXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkobV9wcm90
b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRp
YWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkg
PSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2RhdGEucHJvdG9jb2wsIG1f
ZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkg
PT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAgLTI3Nyw5ICsyNzIsOSBA
QCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG90
aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogCiAg
ICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90b2NvbCA9PSBvdGhlci5t
X3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBvdGhlci5tX2RhdGEucHJv
dG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9NICYmICFvdGhlci5tX2Rv
bWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLm1faG9z
dCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAgaWYgKG1fZGF0YS5ob3N0
ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90aGVyLm1fZGF0YS5wb3J0
KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAo
bV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7CiAgICAg
ICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBAIC0zNjMsNyArMzU4LDcg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3By
b3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAhRmlsZVN5c3RlbTo6Zmls
ZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCisgICAg
aWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYgIUZp
bGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0ZW1Q
YXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAtMzc2LDcgKzM3MSw3
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3RvY29sLCBwcm90b2NvbCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHBy
b3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMs
IHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgp
ICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wp
KQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xp
Y3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpAQCAtNDYxLDcgKzQ1Niw3
IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25z
dAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIAotICAg
IGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUobV9w
cm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZv
clVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwyMSBAQCB2b2lkIFNlY3Vy
aXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigpCiAKIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOworICAgIHJldHVybiBTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fZGF0YS5wcm90b2NvbCk7
CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
IChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsIik7Ci0gICAg
aWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24p
CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9lbmZvcmNlc0ZpbGVQYXRo
U2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibnVsbCIpOwogICAgIHJl
dHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3Ry
aW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9z
dC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJvdG9jb2wpOwotICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBwZW5kKG1faG9zdCk7Ci0K
LSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9TdHJpbmcoKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIpCkBAIC01NTIsNyArNTMz
LDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUo
VVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwogICAgIGlmIChwb3J0
ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3RvY29sKSkKLSAgICAgICAg
b3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9y
dDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1Niw3IEBAIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QKIAog
Ym9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0gb3RoZXIubV9ob3N0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2NvbCAhPSBvdGhlci5tX3By
b3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wb3J0ICE9IG90aGVy
Lm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmlsZUNoZWNrKG90aGVyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgxYTM4ODJjMWRlZDFkYTkx
ZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFmZmRlZTNkZmZhNDBlZmJk
ZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAgICBib29sIGRvbWFpbldh
c1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJbkRPTTsgfQogCi0gICAg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnByb3RvY29sOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhvc3Q7IH0KICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9Ci0gICAg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
cG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gVVJMIGlzIHNlY3VyZSwg
YmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBwcm90b2NvbCwgb3IsIHdo
ZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVyIFVSTCIKQEAgLTIwNSw2
ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xvY2FsSG9zdE9yTG9vcGJh
Y2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCiBwcml2YXRlOgogICAg
IFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgVVJM
Jik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhpcyBtZXRob2Qg
Y2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMgYW4gSFRUUC1mYW1pbHkK
ICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAgYm9vbCBpc0hUVFBGYW1p
bHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8fCBtX3Byb3RvY29sID09
ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09ICJodHRwcyI7IH0KICAg
ICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBBbHdheXNBbGxvd0Zyb21U
aGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBTaG91bGRBbGxv
d0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdDsKIAotICAg
IFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7CisgICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgU3RyaW5nIG1fZmlsZVBh
dGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OwogICAgIGJvb2wgbV9pc1Vu
aXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3OGZkNTU2ZmY1Njg3ZDMw
ZTlmMmY3NjBiMzk2NGJhLi40NjE3Y2VhYzBlMDJhZTU1NWYzMDM3ZDcyZWU1OTkwMmQ0Zjk0ODIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zMiwz
NyArMzIsMzIgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlY3VyaXR5T3JpZ2luRGF0
YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCi17Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YTsKLQotICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IHNlY3VyaXR5
T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QgPSBzZWN1cml0
eU9yaWdpbi5ob3N0KCk7Ci0gICAgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQgPSBzZWN1cml0eU9y
aWdpbi5wb3J0KCk7Ci0KLSAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwotfQotCiBTdHJp
bmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1h
a2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQu
dmFsdWVfb3IoMCkpKTsKKyAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUiKQorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIik7CisKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCk7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigq
cG9ydCkpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7
IH07CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50
KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7CisgICAgICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQogCiBSZWY8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0YTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggNWY1NWY5NDJiODFmY2ZlMDBi
ZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZC4uNzk5MDIzOWM4ZGRhYzIzOWJiMzkyYmU0NGVjNDIyYzAz
MTUyYmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
OCArNDUsMTUgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgewogICAgIH0KICAg
ICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZyb21TZWN1
cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbUZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIFNl
Y3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7CisgICAgICAgICAgICB1cmwucHJvdG9jb2woKS5p
c051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwuaG9zdCgpLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwKKyAg
ICAgICAgICAgIHVybC5wb3J0KCkKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA1MzQxY2E2NWU4OGZjNzI4Mzc2MGVkYWFj
NWI2ZThmZmE4ZDA0MGEwLi45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5NDkwYjg2NDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQogCi0gICAgdmlydHVhbCBTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDhjNGFmNDJmOGFhMTk1YjNjNmYy
YzE0NWMyODhjODBkZDI4OTRhOTQuLjY5YzFiMzM1MzA4YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1
OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW4K
ICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNw
YWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYThhNTJlZGM5ZTdiN2I1YzhjMjdkY2JjMGNjNjYyYjhk
YWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3MmI0MTRkMTAzOGRmZjJmZGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MzI0LDcgKzQzMjQsNyBAQCB2b2lkIElu
dGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKaW5kZXggMjUwMTE0ZWYyNTBlZmZhNGU0NmQ5ZDE2MTYzNzQ5NWU1ZDllMmQ0OS4u
YWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0N2NhZjNkNDJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFJlZ2lzdHJhdGlvbjogUmVnaXN0ZXJp
bmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIo
KS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlv
blVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpvYkRhdGEudG9wT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC0+dG9wT3JpZ2luKCkpOworICAg
IGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpv
YkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsKICAgICBqb2JEYXRh
LnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBz
Y29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEo
bV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVu
dGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwo
KTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNl
V29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVV
Ukw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBT
ZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNsaWVu
dENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkp
OworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAg
ICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKICAgICBqb2JE
YXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3JpcHRVUkwgPSBzY3JpcHRV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggYjg0YzY2ZThmNWVlMzJkOGJh
Nzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0NmIyM2RiOTNlMzU2ZjIyZTYzMTIwYjFjZDRm
NGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtNzcsMTMgKzc3LDEy
IEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3JpZ2luSXNNYXRjaGluZyhj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29sIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9P
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsK
LSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BPcmlnaW4gPT0gc2VjdXJpdHlPcmlnaW4pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBzY29wZU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlT3JpZ2luLT5pc1NhbWVPcmln
aW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwobV9z
Y29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRv
ckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDIzOWEzMDBi
MTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1ZmIuLjcxMGY0MTJiNDcyZDhmMTc0MmUwYmVl
NDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7IG1fc2NvcGUgPSBXVEZN
b3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDVlYTQ1Yjk1NWRmZjU3NDMy
NzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZiMTYxY2U4Yzg0ODVkNTYyNjJlYjZhYzY3MTQx
NGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbi50b1N0
cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbiwgWyZdIHsK
ICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6cmVtb3ZlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vcmln
aW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9vcmln
aW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29yaWdpbkNvdW50cy5lbmQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFNXT3JpZ2luU3RvcmU6
OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIHJlbW92ZUZyb21TdG9y
ZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1fb3JpZ2luQ291bnRzLnJlbW92ZShvcmlnaW4u
dG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3VudHMucmVtb3ZlKG9yaWdpbik7CiAgICAgcmVt
b3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXggZTExZTQ1MTFmZTE5ODA4
ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uY2IyOGIzOTQxOTkyOWZjMmRhZDRlYjdiZDdkZWNl
ZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3LDMyICsyNywyOSBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNzIFNXT3JpZ2luU3RvcmUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNXT3JpZ2luU3RvcmUo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbiYpOwotICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjbGVhcihjb25z
dCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgYWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZv
aWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAgdm9pZCBjbGVhckFsbCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENvbXBsZXRlKCkgPSAwOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0b3JlKCkgPSAwOwogCi0g
ICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50czsKKyAgICBIYXNoTWFw
PFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG1fb3JpZ2luQ291bnRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZWVmMGUzMWMyNzFhOWFjYTY1YTlkMTNiNzk3
MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdmM2FjODExMWQ4YTQ3MzRhZTBiNGRiOGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBh
dXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHIt
PmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7CiAKLSAgICBtX29yaWdpblN0b3JlLT5hZGQo
a2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1fb3JpZ2luU3RvcmUtPmFk
ZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGF1dG8g
dG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0
b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Jl
Z2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIGJv
b2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5SUQucmVtb3ZlKHJlZ2lzdHJhdGlvbi0+
aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1LDI5IEBAIHZvaWQgU1dTZXJ2ZXI6OmNsZWFy
QWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBt
X3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTV1Nl
cnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVmKG9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBtX2Ns
ZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHNlY3VyaXR5T3JpZ2luLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENvbXBsZXRlZCk7Ci0gICAgICAgICAgICBjbGVh
cihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIGNsZWFy
KHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9qb2JRdWV1ZXMucmVtb3ZlSWYoWyZd
KGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVs
YXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVs
YXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9KTsKIAogICAgIFZlY3RvcjxTV1Nl
cnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8m
IGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlmIChrZXlBbmRWYWx1
ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCisgICAgICAgIGlmIChrZXlBbmRWYWx1ZS5r
ZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAgIHJlZ2lzdHJh
dGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDogbV9wZW5kaW5nQ29udGV4dERhdGFzLnZhbHVl
cygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYg
Y29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRp
b24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCB2b2lkIFNXU2VydmVy
Ojp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsKLSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsK
KyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRh
dGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAo
IWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZN
b3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDExICs1MTIs
MTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rp
b24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERh
dGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHBlbmRpbmdD
b250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0RGF0YXMudGFrZShjb250ZXh0Q29ubmVjdGlv
bi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4
dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CiAKLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2Uo
JmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5S
ZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rp
b24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtl
clJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIo
aXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKQEAg
LTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFs
KFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9y
T3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWluYXRlZFdvcmtlcnM7CiAg
ICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1
ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhvc3RQb3J0KHdvcmtlci0+
c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlmICh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkg
PT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVkV29ya2Vycy5hcHBlbmQo
d29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJtaW5hdGVkV29ya2VyIDog
dGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKHdvcmtlcik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29u
dGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKQor
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4p
KQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uTWF5Tm9Mb25nZXJC
ZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MDUsOSArODA1LDkgQEAgdm9pZCBTV1Nl
cnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBj
bGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVt
b3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9j
bGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVn
aXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNjA2ZGI0NmFkMDI3Y2YxYmM1NWFmNzcxYjg4
MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUyNmVmYzg0NzY0Nzk3ZmVmYTZhYjIwZWU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIK
LSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5o
IgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2
ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwoV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlv
biogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsK
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3Ry
YXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5
SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rl
cm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChp
ZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4g
bV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNv
bnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjksOCArMjI5LDggQEAgcHJpdmF0ZToKIAogICAg
IFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwogICAgIFJlZ2lzdHJhdGlv
blN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0gICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV9wZW5kaW5nQ29udGV4
dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBt
X3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0
YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRh
czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VX
b3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBi
b29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNmFhNWEyYTlmYmQyMzY2Mzli
NTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3MmYzMmY1YjEwMTkxODFiNzdlMWU5Njg4YzE5
MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTV1NlcnZl
cldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwyOSArMzks
MjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXJUeXBlPigpOwog
fQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCitzdGF0aWMgSGFzaE1h
cDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxD
b25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
ZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+PiBjb25uZWN0
aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3JpZ2luOwogfQogCi1TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisg
ICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewotICAgIGF1dG8gcmVzdWx0
ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX29yaWdpbi5jb3B5UmVmKCksIHRoaXMp
OworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX3NlY3Vy
aXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9y
aWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25u
ZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlv
bnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxTZWN1cml0eU9yaWdpbiY+KG9yaWdpbikpOwor
ICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNlY3VyaXR5T3JpZ2luKTsK
IH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEwMmJjNTI1YjcwZDA1MzRlN2Y3MTBhNDRmMjU5
OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUzOGNkZDg3Zjg1ZDg5ZWM4MmViNTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC03NCwxOCArNzQsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAg
c3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvck9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAK
LSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0K
KyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25N
YXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdp
bj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiBwcml2YXRlOgogICAgIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJp
dHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmlu
ZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEwNjU5MWRhNDA3ZDcxOWUuLjE1OWJjZTY2OWYx
Y2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04NSwx
NCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkKIGNvbnN0IENsaWVu
dE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29y
aWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktl
eS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSkgfTsKKyAgICAgICAgbV9vcmln
aW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5zY3JpcHRVUkwpIH07CiAKICAgICByZXR1cm4g
Km1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNXU2VydmVyV29ya2VyOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIFNXU2VydmVyV29y
a2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7CisgICAgcmV0dXJuIG9yaWdpbigpLmNsaWVudE9y
aWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlcldvcmtlcjo6
Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGNjMDc1OWM2MTZlZjhlODI0YTI3
ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAwYWFiOWViMDFiZTRjYjhjNGRkMGFiMWI2M2Zk
ODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7CiAKICAgICBjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0
aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMGU3ZDgwY2JmODVlYjFk
YWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcxZC4uMDE3MmMzYjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZm
M2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291
cmNlT3JpZ2luKTsKICAgICBpZiAoc291cmNlT3JpZ2luKQotICAgICAgICBlbmNvZGVyIDw8IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3VyY2VPcmlnaW4pOworICAg
ICAgICBlbmNvZGVyIDw8IHNvdXJjZU9yaWdpbi0+ZGF0YSgpOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVhZGVyczsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRl
eCAzYzRiNDI0NmU4MTIwODdiMzBlMzZiYWZjMTY4ZWY0NjYzYzcwYThiLi5iY2Y5NTVhNjZjYjc2
ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNkMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9j
b2wsIFdLU3RyaW5nUmVmIGhvcwogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURh
dGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbih0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1
cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlUb1N0cmluZyhXS1NlY3Vy
aXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3Bw
CmluZGV4IDlkY2FkOTRiZmYyMjZkNGEwOWUwMmUwYzFhNTAyMTdiNWExYTBjZjguLjA0Y2JmMjFi
M2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0ODdlOTlkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5T
dG9yZS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXZWJTV09yaWdpblN0b3JlOjpXZWJTV09yaWdp
blN0b3JlKCkKIHsKIH0KIAotdm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OmFkZFRvU3Rv
cmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hl
ZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKG9yaWdpbi50b1N0cmluZygpKSk7
CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiB9CiAKLXZvaWQgV2ViU1dPcmln
aW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbikKIHsKICAgICBtX3N0b3JlLnNjaGVkdWxlUmVtb3ZhbChjb21wdXRlU2hh
cmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5k
aW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmgKaW5kZXggN2Y4Yzk4NzExYzI1
ZGFlODZmZWJlZmMwODhjMDliNTI4OWYxN2ZmOS4uMmQyOWY1NjA5NTg0ZjEwMjA5ZTgwNmNkMTA2
YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5oCkBAIC0zMSwxMCArMzEs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dPcmlnaW5TdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpA
QCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFN0b3JlSGFu
ZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVGcm9tU3Rv
cmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBmaW5hbDsKKyAgICB2b2lkIGFkZFRv
U3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmlu
YWw7CiAgICAgdm9pZCBjbGVhclN0b3JlKCkgZmluYWw7CiAKICAgICAvLyBTaGFyZWRTdHJpbmdI
YXNoU3RvcmU6OkNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5MDYwZTVkNDc0MzNhNWNmNTMwMzZkNS4uMzhjMzk5MWVl
ZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGExNmRhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZAogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihT
ZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3Jp
cHRVUkwpOwogICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICBTdG9yYWdl
UHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1
cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVn
aXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGll
bnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS51cmwpKSB9OworICAgIGF1
dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51cmwpIH07CiAgICAgbV9jbGllbnRPcmlnaW5z
LmFkZChkYXRhLmlkZW50aWZpZXIsIGNsaWVudE9yaWdpbik7CiAgICAgc2VydmVyKCkucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShkYXRh
KSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQwNTEzNDZmOTk4MmQ4OGQuLjAwYjdmYzdjODM5
OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4MThhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zNyw4ICszNyw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUob3JpZ2luKSkKK1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihzZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGJiMTBiZGVmOTJjZWZhNTYyYTc4ZDhmOTUyMWRjMzhlNzFkYmM2N2IuLmU5
YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdjMzE4MmMzMjhkOTk1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCBkZDQ4OGM2ZmRmZjgx
YzY2MjViYjkxMGQyMDc4MzVjMjE2ODllYTRkLi5mODU3MjRlYTZmZTZmYzU4ZTliZDQ0MmIxMWMx
MDZmYTczZGU2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcApAQCAtMTEzLDIzICsxMTMsMjQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNz
V2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsK
KyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7
CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAg
ICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgICAgIHN3U2VydmVyLT5tYXJrQWxs
V29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZWN1cml0eU9yaWdpbik7CiAKLSAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdp
bigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3Jp
Z2luKSkgeworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJD
b25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3Rp
bGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc3RkOjpudWxsb3B0KTsKICAgICB9
CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTdG9yYWdlUHJv
Y2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6
YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikgewotICAgICAg
ICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdp
bihvcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSk7CiB9CiAjZW5kaWYK
QEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwZXJmb3JtTmV4dFN0b3Jh
Z2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nl
c3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKK3Zv
aWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
c2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBD
OjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtMjc0LDkgKzI3NSw4IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2
aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MgJiYgIW1fc3RvcmFn
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKICAgICAgICAgQVNTRVJU
KG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAg
YXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8g
Y29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0
ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0
KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShvcmlnaW4pLCBjb250ZXh0Q29ubmVjdGlvbi5j
b3B5UmVmKCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4sIG1fc3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgICAgICBtX3dh
aXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwpAQCAtMzM5
LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAjZW5kaWYKIH0KIAotdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2luRGF0YXMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNhbGxi
YWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
Y2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0ICszNDgsMTQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykp
IHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7
Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IHNlY3VyaXR5T3JpZ2luRGF0YXMpCi0g
ICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKKyAgICAg
ICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoIXdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQotICAgICAgICBpZGJT
ZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoc2VjdXJp
dHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dy
ZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICNlbmRpZgogfQogCkBAIC00
NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdpblN0b3JlJiBTdG9yYWdlUHJvY2Vzczo6c3dPcmln
aW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCku
b3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3Rv
cmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4g
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJmNvbnN0X2Nhc3Q8U2VjdXJpdHlPcmln
aW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5n
ZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIHN0ZDo6
b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklE
KQogewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JF
eHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKSwgKnNlc3Npb25JRCksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oc2VjdXJpdHlP
cmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKSwgMCk7CisgICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhzZWN1cml0eU9yaWdp
biksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1ICs1MzcsMTUgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
czo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNv
bm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47
CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2Vz
cyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwogICAgIHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CiAKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92
ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQxMmZlMzE2ZTlmMjYxNzlmNzQ1NGE3
MWM3OWM5ZmZhMzljMDZiYzkuLjIwNzhhMTMxMDczOTg1OGNjNGIyN2MyYzViMzE3M2NjNWY0YTll
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlLmg+CkBAIC00NSw3ICs0NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKLXN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4p
OworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwogCiAgICAg
V2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAg
ICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYg
c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwotICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBA
IC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+PiBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
LCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggMDMxOWU1YWVkM2ZmYzBhMzcwOWQ0Zjc1
ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNkMTc4NTQ0NWMzOTczM2IyZjA0OGE2MGYyMDIxNTA4Yzhj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KICAgICBmcmFtZUluZm9EYXRh
LmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJM
LgogICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChm
cmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
KyAgICBmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uZGF0YSgp
OwogICAgIGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IGZyYW1lLmZyYW1lSUQoKTsKIAogICAgIHJl
dHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0YSwgZnJhbWUucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4YjkzZDg1YTEzYjdjNTk2NzU3Yjg0Mzk2MDAwMS4uZWU4
N2FjMTkxNTA2MDZiNGViODNhODNkZDdhZjNiMjdiMDI3NzgzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVs
ZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmUKICAgICBhdXRv
JiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0
YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
CiAKICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpKTsKIAogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5
cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxMGQ2MzMxZDdiN2Q1MjJkNzVhNDRiM2YzNjQ1
MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1MjI1YjlkOWRkMjRlZjgxZmE4YWY3NTNhMzViMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEo
KSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFu
YWdlci5jcHAKaW5kZXggMjNhYTRkMTNkNDEzM2ZkZTg5YmU0ZGMwYzE0ZWI5OTgwZjhhOWU4Mi4u
NmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5MGRkZDlmZmIxMWI1ODdmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5j
cHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNh
Y2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYQogCiAgICAgewog
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3Jk
LmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KSkpOworICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hl
LCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogCiAgICAgICAgIGRh
dGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CiAKICAgICBpZiAoY2FjaGVzVG9D
bGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5
cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJl
Y29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFS
ZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDY2NTBiNTgzNWQzZjc3ZDYzNTA1YjBk
MjIzNTMyNmUzMGYyYWQzNWEuLmNhMjlhYWZiMWJjOWI0MjQ4MjZlOGE4ODc0MmZmNGNkNTJiYTAw
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJl
bW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3Jk
IGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJl
Y29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJLaXQ6OnRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07
CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6
Q29tcHV0ZVNpemVzOwogCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUs
IGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNv
cmRzKSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKSk7CisgICAgICAgIGF1
dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiByZWNvcmRPcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKICAgICAgICAgICAg
ICAgICBpZiAob3JpZ2luRGF0YSA9PSByZWNvcmRPcmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2Fl
ZWVjM2IxMjY0MTYwMjU3YzcwNTljODk3MWVkZmQ0MjMwOTU3Ni4uYjYxOTA0YzA4OTlhMzgxZDQx
YzMyZDM2NDMyYzk3NTk3YzU2ODE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUo
V2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHN0b3JlKQorUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3Rv
cmUpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSB7IHBvb2wsIFdURk1vdmUob3JpZ2luKSwgc3RvcmUgfSk7CisgICAgYXV0byBwcm94
eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2wsIHNlY3Vy
aXR5T3JpZ2luLCBzdG9yZSB9KTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBw
cm94eTsKIH0KIAotU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdp
biwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkK
ICAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2wsIHN0b3JlIH0KLSAgICAsIG1fb3JpZ2luKFdU
Rk1vdmUob3JpZ2luKSkKKyAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAg
ICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQoZ2VuZXJhdGVQYWdlSUQoKSkKIHsKIH0KQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBXZWJQcm9jZXNzUHJveHk6
OmdldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7CiAKICAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlcnZpY2Utd29ya2VyLXBy
b2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIxIikpOwotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIG9yaWdp
bigpLnRvU3RyaW5nKCkpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIHNlY3VyaXR5T3JpZ2luKCku
dG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWM3NzBiMWFkOTM1ZjQ2OTRlOGNj
MDZiM2MyZGU1ZjdkOTYxMTgwNS4uMzM1MWI3NDA5NGJlNDdlODMwZTM5N2M0MDY4MWJhYTA4Mjk4
YjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7
CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+
IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICB+U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgp
OwogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0
cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCi0gICAgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9Cisg
ICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIHsg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKQEAgLTU2LDkgKzU2
LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHko
V2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29s
JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OwogCi0gICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKICAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5ZTc4
OGY0NzQ3MGU2ZTRlYWIxZmZhOTEwNTM1YmIwOTc3M2JhMzIwLi41NGEwNzkyOWJlYjg1YTc2YzZj
Mjk2Zjg0YmQ4Njg0OWZlNGNhZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTEyMiwxNSArMTIyLDE1
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAgICAgfQogCiAgICAgYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAg
ICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW47CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNz
UHJveHkpKSB7CiAgICAgICAgIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAg
ICBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLm9yaWdpbigpKTsK
KyAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgb3JpZ2luKSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBzZWN1cml0eU9yaWdpbiksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDM1MWJmNmFiMjZiNmVlZmQ4M2ZhOTYyN2E4ZTRjNzY2MjFhMDdmNjYuLjJkZTdkYmEyOGJjODJl
MDJjMTI2MDJmMGRmMWQ1OGMzZTQ0NzVlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5MSwxMiArNTkxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJv
Y2Vzc1ByCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3Rv
cmFnZVByb2Nlc3NQcm94eSYgcHJveHksIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEs
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhT
dG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94eSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9zdG9yYWdlUHJvY2Vzcyk7CiAKLSAgICBh
dXRvIG9yaWdpbiA9IG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKG9yaWdpbi5wdHIoKSkpCisgICAgaWYgKG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5jbGVhcigpOwpA
QCAtNjE0LDggKzYxMyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvCiAgICAgaWYgKG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyB7IH0p
OwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4uY29weVJlZigpLCAqd2Vic2l0ZURhdGFT
dG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChvcmlnaW4uY29weVJlZigp
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMs
IHNlY3VyaXR5T3JpZ2luLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGlu
aXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksICp3ZWJzaXRl
RGF0YVN0b3JlKTsKQEAgLTk5MCw3ICs5ODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNj
b25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9j
ZXNzKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy50YWtlKCZkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vz
cykub3JpZ2luKCkpOworICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy50YWtlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpw
cm9jZXNzKS5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVk
UHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7CiAgICAgICAgIHVwZGF0ZVByb2Nl
c3NBc3NlcnRpb25zKCk7CiAgICAgfQpAQCAtMTg3OCw5ICsxODc3LDkgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50
ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhh
biB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3Ig
KGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgb3JpZ2luID0gc2VydmljZVdvcmtlclBy
b2Nlc3MtPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucygmb3JpZ2luKSkKLSAgICAgICAgICAg
ICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQo
Jm9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2Vy
dmljZVdvcmtlclByb2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNl
Y3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4ODgsOSArMTg4Nyw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdl
YlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
ZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAg
ICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fYmFj
a2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdpbikp
Ci0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAgICAg
ICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nl
cy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIG1fYmFja2dy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0NTdmNGM0YjE0MzgwZjZlZDNj
YjYyZjFjNWYzNjgxMGIxNTgwMDVkLi44OTVmYzMzNjk4MGE4YjNkMzg3MjUwMDA2YzQxNmM4OGJj
MjVlYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMz
NSw3ICszMzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZv
aWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3Jh
Z2VQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRp
b25hbDxQQUw6OlNlc3Npb25JRD4pOwogICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7
Ci0gICAgY29uc3QgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2Vy
dmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
ciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNl
V29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXI7IH0KICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtNTE3LDcgKzUxNyw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclBy
b2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29s
IG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXkgeyBmYWxzZSB9OwpAQCAtNjc3LDggKzY3Nyw4IEBAIHByaXZhdGU6CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91
bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotICAgIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6
OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cAppbmRleCBmZDQ4MDRkY2JiZjM1NGRmY2IzOWVkMGU5Y2RlNzk4ZmUxMjkxODY5Li43ZjcwMmUx
OGViM2E2N2RiZTQ3NmU2OTNhMGY0MjBkMTNiNGNmNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAyLDcg
KzYwMiw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFp
bHMoRnVuY3Rpb248dm9pZCAoVmVjdG9yPExvY2FsU3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVM
b2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4pCiB7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDJi
MWY4ZGViNmFiZDI5ZDQ1M2I1NDM4NDkxNzIzNDA4NjM2Yjc2YjUuLjg0MjNiOTkzNDVmOGQ5MTE3
MDdlMGY4YjVjNWZlNmFkMDQwZTIzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVu
Y3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgdm9pZCBkZWxldGVMb2Nh
bFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYpOwogCiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShX
YWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYzIxNDNmZGRlYzVhNjFhNDBlODY1YTU2ZGM5OWIw
YTliMjExMTZlOC4uMGY5ZTlhYzA0NDczOWQ5MzVhNTI4MjgxZTc1NGE4NmRhMjZhODYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
TwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAgICAgICAgICAg
IFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwg
MCB9OworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbi0+
ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OwogICAgICAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBPCiAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURh
dGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSA/IHN0b3JhZ2UtPmRpc2tVc2FnZUZvck9yaWdp
bigqb3JpZ2luKSA6IDA7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5
IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdp
biksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsK
KyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEo
KSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9Owog
CiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOTNiOTM2ZmU1YTIxYzUwNGViMzMxYWMxNWU3ZTM1NGYw
ZDA2NzRmOS4uMDFmMTM1N2E4ODYzMjcwMjdhZDE2NWYxZjAzZTgyMjMwYjQ5NWQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uCiAKICAgICBTZWN1cml0eU9yaWdp
biYgb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCBvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9s
b2NhdGlvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDViMzBmMzg3MzkzM2IwYzEwMDQ2YzJkNmM5ZjhmODgzMDkwZjE1Y2IuLjhmNWQ2
MWJmNzFjNzIyMjZhN2IwOTFlM2RiMzk0NzhiZmQzYWYzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5
T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIG9y
aWdpbklkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBvcmlnaW5J
ZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSkpOworICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQo
QVBJOjpTdHJpbmc6OmNyZWF0ZShvcmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkp
OwogCiAgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW5J
ZGVudGlmaWVycykpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGU0ZDM3YTIzNmNjYzAyZmI0NTg0YjZlMzZiMWJj
NDhkOTU4ZTc0NGEuLjljY2FjZTA1NzdjN2ZiYzhmZjU3MDZiZGZhZDkzZTQzN2NjNmUxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZW5k
VXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiB1CiAgICAgQVNTRVJUKHdlYkZyYW1l
KTsKIAogICAgIGF1dG8qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSB1c2VyUmVxdWVzdC50b3BM
ZXZlbERvY3VtZW50T3JpZ2luKCk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZy
YW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp1
c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCB1c2VyUmVxdWVz
dC5yZXF1ZXN0KCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZy
YW1lSUQoKSwgdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkpOwog
fQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjplbnVtZXJhdGVNZWRpYURl
dmljZXMoTWVkaWFEZXZpY2VzRW51bWVyCiAKICAgICBTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxE
b2N1bWVudE9yaWdpbiA9IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwogICAgIEFT
U0VSVCh0b3BMZXZlbERvY3VtZW50T3JpZ2luKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZShyZXF1ZXN0SUQsIHdl
YkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpyZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JG
cmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCkpKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbE1lZGlh
RGV2aWNlc0VudW1lcmF0aW9uKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDFlMjIxMmUwNThlYWU4MTQ0NTRk
YmZiYmQ5NmUzNTc5YmVjNTFlODcuLjU4OTg0MDJjMzE0OWNjYjM0OTM3MTYzNmIwNzIxYTYxZjk3
OTRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaD4KQEAgLTk1LDcgKzk2LDcg
QEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BP
cmlnaW4pLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50
SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JEZWxh
eVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiks
IGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKKyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmRh
dGEoKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdNYXRj
aFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3Ry
YXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKQEAgLTE3Miw3ICsxNzMs
NyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0cmF0
aW9uUmVhZHlUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5
KGNhbGxiYWNrSUQsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9y
aWdpbiksIGNsaWVudFVSTCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbi5kYXRhKCks
IGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0
aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMTkxLDcgKzE5Miw3IEBAIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBydW5PckRl
bGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9w
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2lu
KSwgY2xpZW50VVJMXSgpIG11dGFibGUgeworICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4u
ZGF0YSgpLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2luZ0dl
dFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFJlZ2lzdHJh
dGlvbnMoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggNDdiNGRiYjgyM2I1YWVhYTFkN2UzMDVkODJhM2VjM2ExNzk3OTA3My4uZDRl
ZWUzMmM5ZGI5MTcyY2ZjOTA0YjBlZjRkYjY0YjM2NjI0ZDAxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTczMSwxNyArNzMxLDE3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAg
QVNTRVJUKHdlYkZyYW1lKTsKICAgICAKICAgICBhdXRvJiBvcmlnaW4gPSBmcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGF1dG8gb3JpZ2luRGF0YSA9IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbik7CisgICAgYXV0byYgb3JpZ2luRGF0
YSA9IG9yaWdpbi5kYXRhKCk7CiAgICAgYXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCk7CiAgICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdp
bkRhdGEpOwogICAgIGF1dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmln
aW5EYXRhKTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigp
KS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5k
bGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmln
aW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVv
dGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5l
eHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YSh3
ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlz
cGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3Vy
cmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSwKKyAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YSh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCBvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFp
bHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFp
bHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSwKICAgICAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6UmVwbHkobmV3
UXVvdGEpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5
bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKQEAg
LTc2Niw3ICs3NjYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90
YSwgdG90YWxCeXRlc05lZWRlZCksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEob3JpZ2luLmRhdGEoKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkKSwKICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6
UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQ
Qzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKIAog
ICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbigmb3JpZ2luLCBuZXdR
dW90YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzZmJiMTdkMTI1MjU5
MmZjZDk4M2NhYzY2ZDY3OGZlYTI4M2EyZmRkLi5lZTgzOTdjYjVlZmE1NzIyZWRjN2RkM2RkYmY3
ZTQxN2VjZjY4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTg0NSw3
ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIEZyYW1lSW5mb0RhdGEgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhOwogICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5pc01h
aW5GcmFtZSA9IG5hdmlnYXRpb25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0
aWF0ZWRCeU1haW5GcmFtZTo6WWVzOwogICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5yZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHNvdXJjZURvY3VtZW50LnVybCgpKTsKLSAgICBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihzb3VyY2VEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBzb3VyY2VEb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKICAgICBpZiAob3JpZ2luYXRpbmdGcmFtZSkKICAgICAg
ICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSBvcmlnaW5hdGluZ0ZyYW1lLT5m
cmFtZUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBi
NmZkZjBhN2JjZGVjNDMzYTZkODAzNzQ2NTNmN2E0NWExY2U3YWQ3Li42YzdmYzk4M2E2NWE5NTkw
YjVlZDg0Mjc4NzQ4ODU3MTM0NTkwZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdAog
ewogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVt
b3J5Q2FjaGUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLm9yaWdpbnNXaXRoQ2FjaGUoc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIHdlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlLCAwIH0pOworICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vi
c2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5
Q2FjaGUsIDAgfSk7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGMzMGRm
ZWQzOGFmNTQyNzU0NDUyNDdjMWYyNjI0NzY1N2RhMWQ5YzUuLjVkNWMyYmMwNWZjNjBjNGUyZjcw
Y2NiYWFkOTBiNzk1NTUyZDgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBA
IHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIFN0b3JhZ2VB
cmVhSW1wbDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zdG9yYWdl
QXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAt
PnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmgKaW5kZXggNDMzYzQ4NzM4M2M0ODM2MzVhYzZmMzI0NDY1NTM1OGJlZjU3NDk4MS4uMTY1
YWY0NGQ5MDE4YjliOWQxM2Y3M2ZjZTg0NDczOTJjZDE4MzQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHVpbnQ2NF90IG1fc3RvcmFnZUFyZWFJRDsKICAgICBSZWY8U3RvcmFnZUFyZWFN
YXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggYTI2NTBkMWIzZWJmYzcyOGMy
NzVlZTAxMGJmZWEzYTI2OGIwYjg4Ni4uNDcxM2FjNGI3ZTFjNzhlMTMyMmY0OWYyYjU1ZmM4Mzky
NjViODEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNzQsMTQgKzc0LDE0IEBAIFN0b3JhZ2VBcmVhTWFw
OjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwg
UmVmPFdlYkNvCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6CiAgICAgY2FzZSBTdG9yYWdl
VHlwZTo6VHJhbnNpZW50TG9jYWw6CiAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2
ZWxPcmlnaW4gPSBzdG9yYWdlTmFtZXNwYWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1h
cChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BMZXZlbE9yaWdpbiks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4p
KSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9y
YWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4t
PmRhdGEoKSksIDApOwogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6
U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25T
dG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNw
YWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0
eU9yaWdpbikpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
TmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWw6CkBAIC0zNTIsNyAr
MzUyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMKICAgICAgICAgZnJhbWVzLmFwcGVuZChm
cmFtZSk7CiAgICAgfQogCi0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5l
d1ZhbHVlLCB1cmxTdHJpbmcsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KG1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAog
dm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkBA
IC0zODMsNyArMzgzLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3Jh
Z2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KICAgICAgICAgfQogICAg
IH0KIAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzVG9GcmFtZXMocGFnZUdyb3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1
cmxTdHJpbmcsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJp
dHlPcmlnaW4pKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCAyMWZkNTg3MDg4MDFj
MDhmNmMxNTZmMDk1NGM4ODYzZDA0NmU5MWNjLi4yZjFjZDA3YTdhZGQxZTZhNTBlOGEyODlhYjlh
ZWJiNzNhMTc0YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogCiB2b2lkIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFN
YXAmIG1hcCkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obWFwLnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBtX3N0
b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAog
UmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2b2lk
IGNsb3NlRGF0YWJhc2VJZklkbGUoKSB7IH0KIAotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zZWN1cml0eU9yaWdpbkRh
dGE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCmluZGV4IDE2NDc3MjI3ODRjYmE0Y2UzYWRiZjFlMTIyYWFiZjBlNjAzOTVlYzkuLjM4NmQ0
OGQ5OTAyNmJjMWIxNzFkYTFiZTZkNjY0M2ZmMDQwNmZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
b3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VjdXJp
dHlPcmlnaW47IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQog
CiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgIHZvaWQgY2xvc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGQ1
ZTVmNzQ3N2U4MzNkMjRjZWIzYmExOTI4ZjFkMWMxNjkyZmVhYmEuLmRkYmRiMjJlYTBmYTBkYzRi
MWNiZDVhNmZjNmY4ODY1YjhhZWExMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtNjM3LDcgKzYzNyw3IEBAIGxvbmcgbG9uZyBTdG9y
YWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCi0gICAgU3RyaW5nIHBh
dGggPSBkYXRhYmFzZVBhdGhGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIFN0cmluZyBwYXRo
ID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tCmluZGV4IDc2YzI4ZjRkZGJmNzQ5ZWYwZGFiMjE5MDQ4Y2VkMjEyYTlkMDBiZGUuLjAwNTFm
NTgyZGQ1NDYyZmRmZTVmZjgzN2UwYzE5YTA2NDAxMDdkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0xMDYs
NyArMTA2LDcgQEAgLSAoTlNBcnJheSAqKWRhdGFiYXNlc1dpdGhPcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luCiB7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuZGF0YWJhc2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bigqW29yaWdpbiBfY29yZV0pKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5k
YXRhKCkpOwogICAgIE5TTXV0YWJsZUFycmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFtZVZlY3Rvci5zaXplKCldOwogICAgIGZvciAoYXV0byYg
bmFtZSA6IG5hbWVWZWN0b3IpCiAgICAgICAgIFtuYW1lcyBhZGRPYmplY3Q6KE5TU3RyaW5nICop
bmFtZV07CkBAIC0xNDIsMTIgKzE0MiwxMiBAQCAtICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwog
CiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAg
ICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3Jl
XSkpOworICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5k
ZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC0gKEJPT0wpZGVsZXRl
RGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSksIGRhdGFiYXNlSWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURh
dGFiYXNlKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAK
IC8vIEZvciBEdW1wUmVuZGVyVHJlZSBzdXBwb3J0IG9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCmlu
ZGV4IDliODQxODYwMmU1OWExY2E5ZjJjYzllNDg4YjY4ZGU2NjZjYjIyMjEuLjEwOGM1Mjg3Zjkw
N2U4MWE2MWEwMWFhNzI0MjNjOTYwNzk1MGJjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQpAQCAt
NTMsMTIgKzUzLDEyIEBAIC0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAKIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29y
aWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51
c2FnZShbX29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3Rh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29yZV0p
KTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShbX29yaWdp
biBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1
ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKQEAgLTY2LDcg
KzY2LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAvLyBwcmV2ZW50IG5ldyBkYXRh
IGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luLgogLSAodm9pZClz
ZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqW19vcmlnaW4gX2NvcmVdKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0UXVvdGEoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCksIHF1b3RhKTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFn
ZU1hbmFnZXIubW0KaW5kZXggOWE2ODljYTU1OTQ3M2VkM2IwMTU0YWE5NWNlYzZlNTFmYTlhN2Q3
MC4uNmU1N2VjYjM0ODliNWEyZDQ3NGZhODVlY2FlZTdkNjcyYjVjMzhkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBA
IC04NCw3ICs4NCw3IEBAIC0gKHZvaWQpZGVsZXRlQWxsT3JpZ2lucwogCiAtICh2b2lkKWRlbGV0
ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICBXZWJLaXQ6OlN0b3Jh
Z2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSkpOworICAgIFdlYktpdDo6U3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9
CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRmNDI0ODM3ZGVhOGE5
YTJjNGQ1N2NhZjZjODNkYWFmODRlNzJhNjEuLjRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUx
M2FlNDkyNDI5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC03MSw3ICs3MSw3IEBAIC0g
KE5TU3RyaW5nICopaG9zdAogCiAtIChOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewot
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkuZGF0YWJhc2VJZGVudGlmaWVy
KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSktPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTE2OSwxNyArMTY5LDE3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJTZWN1cml0eU9yaWdpbiAo
RGVwcmVjYXRlZCkKIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7Ci0gICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShy
ZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkpOwogfQog
CiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKHJlaW50ZXJwcmV0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHZvaWQpc2V0
UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpLCBxdW90YSk7
CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShyZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCksIHF1b3RhKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5k
ZXggZmI1NDQwODAyMGEwNzIzNWFmNmFlNGU0NWNiZjIxYTI5NDhlNGE2NC4uMzYwNTYyMzU4NDkx
YjUyZDQ1NGY1ZjNjNjFmMTMzNjFiZTg4MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgSFJFU1VMVCBX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4oX0luX29wdF8gSVdlYlNlY3Vy
aXR5T3JpZ2luKiBvcmkKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgYXV0byBkYXRhYmFzZU5hbWVzID0gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGF1dG8g
ZGF0YWJhc2VOYW1lcyA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1l
cyh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKIAogICAgIENP
TVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPj4+IGVudW1WYXJpYW50KEFkb3B0Q09N
LCBDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPj46OmFkb3B0KGRhdGFiYXNlTmFtZXMpKTsK
IApAQCAtMzExLDcgKzMxMSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVP
cmlnaW4oX0luX29wdF8gSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgaWYgKCF3ZWJT
ZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAg
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3Jp
Z2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBA
IC0zMzEsNyArMzMxLDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFi
YXNlKF9Jbl8gQlNUUiBkYXRhYmFzZU5hbWUsIF9Jbl9vcHRfIElXZWIKICAgICBpZiAoIXdlYlNl
Y3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpLCBTdHJp
bmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkpOworICAgIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4t
PnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5n
TGVuKGRhdGFiYXNlTmFtZSkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzk2LDcgKzM5
Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YShfSW5fIEJTVFIgb3Jp
Z2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRX
ZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikpLCBx
dW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLT5kYXRhKCksIHF1b3RhKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDkwNmNiYmE1MWRjNzU0OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcu
LjgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZShfT3V0XyB1bnNpZ25lZCBsb25nIGxv
bmcqIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
IAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSk7Cisg
ICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UobV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTQwLDEzICsxNDAs
MTMgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cXVvdGEoX091dF8gdW5zaWduZWQgbG9u
ZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikp
OworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAogSFJF
U1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3Rh
KSAKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSwgcXVvdGEp
OworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEobV9zZWN1cml0eU9y
aWdpbi0+ZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336481</attachid>
            <date>2018-03-24 12:17:03 -0700</date>
            <delta_ts>2018-03-26 10:26:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180324121702.patch</filename>
            <type>text/plain</type>
            <size>132627</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5NjgzZjE5ZjZlZWVl
NTYzMjEzMjc5YWQ0NzI3NjU3ODFlZDBlMy4uZjA2N2NkYzY5YWVjNzlhNDVkMGM5YWZjZDcyMTVk
N2FlOTY1NDFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0
YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNvbnN0
cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHkuCisK
KyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5T3Jp
Z2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBkdXBs
aWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlPcmln
aW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJzIGNh
biBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0
b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNl
c3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9y
eTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1cml0
eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdpbiBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5k
U3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2lu
RXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2Fu
RGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1pbHkg
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVn
aXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJt
aW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKSBpcyBpbmVmZmljaWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhYzA2ZWM3MTczMDRkZTgyODlmNzliZjFjNDU5YzM5YjZlYzE3YjVkLi5hZjc2NjhlMmZl
ZDU4ZmU0MzNkZmI0NzlhOTZlZGI3ZGQzMTE2NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBA
CisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtl
ciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ug
U2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29ya2VyIGNv
ZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9iamVjdHMg
dW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFz
ZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3RvcmU6OmFk
ZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1vdmVGcm9t
U3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmln
aW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICog
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwOgor
ICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICog
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDb3B5
T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJNZWRpYVJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6c2Vj
dXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFN
YXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3Rv
cmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9j
YWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTIzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtFeHRyYSB6b29tIG1vZGVdIEFk
b3B0IGxpc3QgdmlldyBjb250cm9sbGVyIFVJIGZvciBzZWxlY3QgbWVudXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKaW5kZXggMTkzYTFlMWRkZmQwMzk5MzQ5ZWNkMThjZTFlOTE2NWYzMTczN2MwNy4uMTE3
YTNiMzYyNDQ4NmI4ZTUzZGI2OGZiNGE5NGVkYzdlOWRiNmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50
bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZiBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpk
aXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BMQVRGT1JNX05BTUUgaW4gV2Vi
S2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjYyZTNhY2Q5ZDAzMjhk
NmUyMjlmMjUyYjU4OWRmYTI3YzNjNjE4OC4uMDZmMDhmZDUxMmViNjRiN2FmNmMyZjNiM2FhZmMz
ZDgzOGU1YzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtl
ciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ug
U2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46
XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmlnaW46XSk6CisgICAg
ICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRoT3JpZ2luOl0pOgor
ICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06CisgICAgICAgICgt
W1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
IHNldFF1b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW06Cisg
ICAgICAgICgtW1dlYlN0b3JhZ2VNYW5hZ2VyIGRlbGV0ZU9yaWdpbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gZGF0YWJhc2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3Jp
Z2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHF1b3RhXSk6CisgICAg
ICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0pOgorCiAyMDE4LTAzLTIzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFdLX1BM
QVRGT1JNX05BTUUgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggYjY0ZmZjYzZiMzdkZWY4OTgwMzA5YTRkMmMyNThhZTc3YTEyZTdkMS4uZDRlZDU4YjJiMjgx
ZjM4NGY0N2I0Mzc4MTBiNzA1ODM2MzZkZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRs
eSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW46OmRhdGEoKSBpbnN0ZWFkIG9mIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCkuCisKKyAgICAgICAgKiBXZWJEYXRh
YmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNX
aXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKToK
KyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdlKToKKyAgICAgICAgKFdl
YlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6c2V0
UXVvdGEpOgorCiAyMDE4LTAzLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIy
Mjk5MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5OTEzODhlMDA0ZTc0OWIwNGQ5MmE1ZWY5YmU1Mi4uMjdl
OGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNkYjY2NmVmOTFiNzhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDksNyArNDksNyBA
QCBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBj
b25zdAogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9OworICAgIHJldHVybiBDbGll
bnRPcmlnaW4geyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnRvcE9yaWdpbigpLmRhdGEoKSwg
b3JpZ2luLT5kYXRhKCkgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1ZW50aWFsTWF0Y2goc2l6
ZV90IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMsIERPTUNhY2hlOjpSZXF1
ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NQ2FjaGU6Ok1h
dGNoQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBjYmY0M2I0MmZmYmY4NzAzYzhlODM3MzVi
MWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRjYzYyYmFmOTJkMWRkMDExOTljZmNhYTExZDJmM2I2ZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBA
IC02NTIsNyArNjUyLDcgQEAgU3RyaW5nIENETTo6c3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAg
ICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJl
Y3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkNWFjZWRhZTM2MzViNzg3MWU3
ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43N2MzNzcxOTgxMTgxOWUyMGM3MGJmMWNmYWNjZjZhODQy
ZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC02OTcsNyArNjk3LDcgQEAgU3RyaW5nIE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rvcnks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggN2VmYjc5ZDU1
M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1NS4uNzNmMmQyNjJkZDhmZDExZDViZTZhYjhj
MmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Np
b24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA1YTJiNmVj
ZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNlYWY4ZTc3NGZmLi5kN2U0NzI3YzA1OGYwOGQzNDg1YzUx
NGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtOTEsNyArOTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
T3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRl
cmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250
ZXh0IikgfTsKIAogICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElE
QkRhdGFiYXNlSWRlbnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkp
KTsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIGlm
ICghZGF0YWJhc2VJZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0
aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiIpIH07CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVk
IGluIGFuIGludmFsaWQgc2VjdXJpdHkgY29udGV4dCIpIH07CiAKICAgICBBU1NFUlQoY29udGV4
dC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJ
ZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihjb250ZXh0LnRvcE9yaWdpbigpKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IGRhdGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRv
cE9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
SURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJp
dHkgb3JpZ2luIikgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5
ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3ZDQyYTNlMjE5ODUyMGY3Li4yYjBmZGM1MjRiNDViNjA2
ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRB
bGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPCiAKICAgICBt
X2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwogCi0gICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVPcmlnaW4pLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3JpZ2luKSwgY2FsbGJhY2tJ
RCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtYWluRnJhbWVPcmlnaW4u
ZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRhdGEoKSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgSURC
Q29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBkZDc1YTNkNGQ1
YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRjNzcwZjAwLi40NjFlMDFhOTNiM2Q5N2E3ODk4MjNkNTNj
OTIzZTFlOTBkNTNhZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3LDkgKzc2Nyw5IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFi
YXNlOjp0YWJsZU5hbWVzKCkKIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlP
cmlnaW4oKQogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1
cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsKICAgICBpZiAoZGF0YWJh
c2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX2RhdGFiYXNlVGhy
ZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVh
ZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGQyYTY1ZTJlZjQ2ZjFjOTVlMTQ1NTRlYWY2NzQzNjcy
OGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4OGMyODA2MTIzNjRkZTRlOTJjN2JkYTRmOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJh
c2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzCiAgICAg
QVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
IH0KIAotU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlQ29udGV4dDo6c2VjdXJpdHlPcmlnaW4o
KSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBEYXRhYmFzZUNvbnRleHQ6OnNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YSgpOwogfQogCiBib29sIERhdGFiYXNlQ29udGV4dDo6aXNDb250ZXh0VGhyZWFkKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5oCmluZGV4IDRjM2M0NjM2MzVlNGZjM2UxMTE3NDdmNzVhMGMxMTAzZDNhZmM5
ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThkZThkMTIzNTM5ZTQ3MjkxMDkyM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFzZUV4Y2VlZGVkUXVvdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZURldGFpbHMpOwogCiAgICAgdXNpbmcgQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFNlY3VyaXR5T3JpZ2luRGF0
YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBiNGFkYzY2MjgwN2MwZDUyZTQyN2FkZmE1MWZiNzI4MWNi
ZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUyM2EzYjk5ZWYxZDhhOTQwN2ZjOTUzYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBh
dGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLCBuYW1lLCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVs
bFBhdGhGb3JEYXRhYmFzZShvcmlnaW4uZGF0YSgpLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCk7CiB9CiAKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKQEAg
LTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4obmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
b3JpZ2luKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpsb2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYWQzNjI1ODIzODM1MTBmNjNiZTRhZTRmNjViNzUxYjI2NGFkZjkzNC4u
N2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3YTNkMWNkMmVkYTEwMTM4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjExLDcgKzI2MTEsNyBAQCBTdHJpbmcg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNldE1l
ZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMqIG1lZGlhS2V5cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIxNDA4MTc2Mjg4N2FkZDIyMTg0NDlkNjUyLi43ZDYzMmRh
M2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5Y2M1ZGNhMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYgZXJyb3IKICAgICB9CiAK
ICAgICBpZiAoIWlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBh
Z2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbih0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpOworICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgp
LT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkpOwogICAgIHJldHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpLmxvY2FsU3RvcmFnZUFyZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVudCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBkODg1MGZmYWE1MDUw
YjBkY2VkMjI3YmFiMDUwNGYwZjYxODNlMmI2Li4xZWQzY2IxNDFhYjM3NDFkMzBhMDhhMzZlZWY1
MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgU3RvcmFn
ZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdG9yYWdlVHlwZTo6TG9j
YWw7IH0KICAgICAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBmaW5hbCB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9
OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9y
YWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDljMWNjMzgwYTExYWM2ZDM4
MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcuLmZmMjkzODk5NzA2ZGU4OTVjZWY3NTAzYzBlODU3ZmFk
MmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwog
CiAgICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51bGwgdGhlIGRlZmF1bHQu
CkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3Vs
YXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWcKICAgICBpZiAoc3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJp
bmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpbnQg
cmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JP
VykgewpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNh
bGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShjb25zCiAgICAgaWYg
KHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlm
IChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKICAgICAgICAgc3RhdGVtZW50LmJpbmRJ
bnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOwogICAgIGludCByZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcgKzUzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kSW50NjQo
MSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kVGV4dCgyLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBleGVjdXRlU3RhdGVtZW50KHVwZGF0ZVN0YXRl
bWVudCk7CiB9CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3JvdXBTdG9yYWdlSUQKIAog
ICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgdXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJM
KCkpKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgZ3JvdXAtPm1hbmlmZXN0VVJMKCkpOwot
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgzLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihncm91cC0+b3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0
ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAtPm9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoc3RhdGVtZW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5zZXJ0T3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0
KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGluc2VydE9yaWdpblN0
YXRlbWVudC5iaW5kSW50NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEpOwogICAgIGlmICghZXhl
Y3V0ZVN0YXRlbWVudChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMzFmYjk1YzRjNjIyNmRhZTdjNzE5
ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0MjNjZjRmZDM2NTIyMDk1YTQ4YjM0YTc5Y2QwYjhjZmU3
NDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtODc0LDcgKzg3NCw3IEBAIEV4
Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdG9yYWdl
QXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7Cisg
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVh
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAgbV9zZXNzaW9uU3RvcmFn
ZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSk7CiAgICAg
cmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCmluZGV4IDZkMjMwYjljMzgwMjc2NjlkNThmOTRkOGYzMmQ4M2U0MzkzZGQ5
ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5YjczNjczODRhYmUwZjIyYTg4ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xNDUsMTUgKzE0NSwxMyBAQCBib29sIHNo
b3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFVSTCYgdXJsKQogfQogCiBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCi0gICAgOiBtX3By
b3RvY29sIHsgdXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdXJsLnBy
b3RvY29sKCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1f
aG9zdCB7IHVybC5ob3N0KCkuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdXJsLmhvc3QoKS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1fcG9ydCB7IHVybC5wb3J0KCkgfQor
ICAgIDogbV9kYXRhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCh1cmwpKQogewotICAgIC8v
IGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUg
RE9NLgotICAgIG1fZG9tYWluID0gbV9ob3N0OworICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFy
dHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCisgICAgbV9kb21h
aW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX3BvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKG1fcG9ydC52YWx1ZSgpLCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gc3Rk
OjpudWxsb3B0OworICAgIGlmIChtX2RhdGEucG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkKKyAgICAgICAgbV9kYXRh
LnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNl
Y3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7CkBAIC0xNjYsOCArMTY0LDcgQEAgU2VjdXJpdHlPcmln
aW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oKQotICAgIDogbV9wcm90b2NvbCB7IGVtcHR5U3RyaW5nKCkgfQotICAg
ICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CisgICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9kb21haW4geyBlbXB0eVN0
cmluZygpIH0KICAgICAsIG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAsIG1faXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5IHsgSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXMgfQpAQCAtMTc1LDEx
ICsxNzIsOSBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQogfQogCiBTZWN1cml0
eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQotICAg
IDogbV9wcm90b2NvbCB7IG90aGVyLT5tX3Byb3RvY29sLmlzb2xhdGVkQ29weSgpIH0KLSAgICAs
IG1faG9zdCB7IG90aGVyLT5tX2hvc3QuaXNvbGF0ZWRDb3B5KCkgfQorICAgIDogbV9kYXRhIHsg
b3RoZXItPm1fZGF0YS5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2RvbWFpbiB7IG90aGVyLT5t
X2RvbWFpbi5pc29sYXRlZENvcHkoKSB9CiAgICAgLCBtX2ZpbGVQYXRoIHsgb3RoZXItPm1fZmls
ZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQotICAgICwgbV9wb3J0IHsgb3RoZXItPm1fcG9ydCB9CiAg
ICAgLCBtX2lzVW5pcXVlIHsgb3RoZXItPm1faXNVbmlxdWUgfQogICAgICwgbV91bml2ZXJzYWxB
Y2Nlc3MgeyBvdGhlci0+bV91bml2ZXJzYWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJ
bkRPTSB7IG90aGVyLT5tX2RvbWFpbldhc1NldEluRE9NIH0KQEAgLTIyOCw3ICsyMjMsNyBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSBjb25zdAogICAg
IC8vIFRoaXMgY29kZSBpcyB1c2luZyBhbiBlbnVtIGluc3RlYWQgb2YgYW4gc3RkOjpvcHRpb25h
bCBmb3IgdGhyZWFkLXNhZmV0eS4gV29yc3QgY2FzZSBzY2VuYXJpbywgc2V2ZXJhbCB0aHJlYWQg
d2lsbCByZWFkCiAgICAgLy8gJ1Vua25vd24nIHZhbHVlIGNvbmN1cnJlbnRseSBhbmQgdGhleSds
bCBhbGwgY2FsbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpIGFuZCBnZXQg
dGhlIHNhbWUgcmVzdWx0LgogICAgIGlmIChtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSA9PSBJ
c1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlVua25vd24pCi0gICAgICAgIG1faXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5ID0gc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkobV9wcm90
b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRp
YWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkg
PSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShtX2RhdGEucHJvdG9jb2wsIG1f
ZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5OjpObzsKICAgICByZXR1cm4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkg
PT0gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZZXM7CiB9CiAKQEAgLTI3Nyw5ICsyNzIsOSBA
QCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG90
aGVyKSBjb25zdAogICAgIC8vIHRoaXMgaXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogCiAg
ICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxzZTsKLSAgICBpZiAobV9wcm90b2NvbCA9PSBvdGhlci5t
X3Byb3RvY29sKSB7CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSBvdGhlci5tX2RhdGEucHJv
dG9jb2wpIHsKICAgICAgICAgaWYgKCFtX2RvbWFpbldhc1NldEluRE9NICYmICFvdGhlci5tX2Rv
bWFpbldhc1NldEluRE9NKSB7Ci0gICAgICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLm1faG9z
dCAmJiBtX3BvcnQgPT0gb3RoZXIubV9wb3J0KQorICAgICAgICAgICAgaWYgKG1fZGF0YS5ob3N0
ID09IG90aGVyLm1fZGF0YS5ob3N0ICYmIG1fZGF0YS5wb3J0ID09IG90aGVyLm1fZGF0YS5wb3J0
KQogICAgICAgICAgICAgICAgIGNhbkFjY2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAo
bV9kb21haW5XYXNTZXRJbkRPTSAmJiBvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7CiAgICAg
ICAgICAgICBpZiAobV9kb21haW4gPT0gb3RoZXIubV9kb21haW4pCkBAIC0zNjMsNyArMzU4LDcg
QEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3By
b3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAhRmlsZVN5c3RlbTo6Zmls
ZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCisgICAg
aWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYgIUZp
bGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0ZW1Q
YXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAtMzc2LDcgKzM3MSw3
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAgICAgICAgIHJldHVybiBjYW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX3Byb3RvY29sLCBwcm90b2NvbCkg
fHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHBy
b3RvY29sKSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMs
IHVybCk7CiAKICAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgp
ICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wp
KQogICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xp
Y3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwpAQCAtNDYxLDcgKzQ1Niw3
IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25z
dAogICAgIGlmIChpc0hUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIAotICAg
IGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUobV9w
cm90b2NvbCkpCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZv
clVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCiAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00NzUsMzUgKzQ3MCwyMSBAQCB2b2lkIFNlY3Vy
aXR5T3JpZ2luOjpzZXRFbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbigpCiAKIGJvb2wgU2VjdXJp
dHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogewotICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOworICAgIHJldHVybiBTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fZGF0YS5wcm90b2NvbCk7
CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
IChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsIik7Ci0gICAg
aWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24p
CisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9lbmZvcmNlc0ZpbGVQYXRo
U2VwYXJhdGlvbikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibnVsbCIpOwogICAgIHJl
dHVybiB0b1Jhd1N0cmluZygpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3Ry
aW5nKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9z
dC5sZW5ndGgoKSArIDEwKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fcHJvdG9jb2wpOwotICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8iKTsKLSAgICByZXN1bHQuYXBwZW5kKG1faG9zdCk7Ci0K
LSAgICBpZiAobV9wb3J0KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBtX2RhdGEudG9TdHJpbmcoKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIGFyZU9yaWdpbnNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbjIpCkBAIC01NTIsNyArNTMz
LDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUo
VVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwogICAgIGlmIChwb3J0
ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3RvY29sKSkKLSAgICAgICAg
b3JpZ2luLT5tX3BvcnQgPSBwb3J0OworICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9y
dDsKICAgICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC01NzUsMTMgKzU1Niw3IEBAIGJvb2wgU2Vj
dXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QKIAog
Ym9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX2hvc3QgIT0gb3RoZXIubV9ob3N0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wcm90b2NvbCAhPSBvdGhlci5tX3By
b3RvY29sKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9wb3J0ICE9IG90aGVy
Lm1fcG9ydCkKKyAgICBpZiAobV9kYXRhICE9IG90aGVyLm1fZGF0YSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKGlzTG9jYWwoKSAmJiAhcGFzc2VzRmlsZUNoZWNrKG90aGVyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA2NDgxYTM4ODJjMWRlZDFkYTkx
ZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42ZTc5MDkwMDZjOGIyMmMxNjFmZmRlZTNkZmZhNDBlZmJk
ZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEwICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b21haW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKTsKICAgICBib29sIGRvbWFpbldh
c1NldEluRE9NKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW5XYXNTZXRJbkRPTTsgfQogCi0gICAg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KLSAg
ICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnByb3RvY29sOyB9Cisg
ICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhvc3Q7IH0KICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9Ci0gICAg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
cG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gVVJMIGlzIHNlY3VyZSwg
YmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBwcm90b2NvbCwgb3IsIHdo
ZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVyIFVSTCIKQEAgLTIwNSw2
ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0xvY2FsSG9zdE9yTG9vcGJh
Y2tJUEFkZHJlc3MoY29uc3QgU3RyaW5nJiBob3N0KTsKIAorICAgIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCiBwcml2YXRlOgogICAg
IFNlY3VyaXR5T3JpZ2luKCk7CiAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgVVJM
Jik7CkBAIC0yMTUsMTYgKzIxOCwxNCBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhpcyBtZXRob2Qg
Y2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBmb3IgdGhpcyBvcmlnaW4gaXMgYW4gSFRUUC1mYW1pbHkK
ICAgICAvLyBzY2hlbWUsIGUuZy4gSFRUUCBhbmQgSFRUUFMuCi0gICAgYm9vbCBpc0hUVFBGYW1p
bHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sID09ICJodHRwIiB8fCBtX3Byb3RvY29sID09
ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09ICJodHRwcyI7IH0KICAg
ICAKICAgICBlbnVtIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgeyBBbHdheXNBbGxvd0Zyb21U
aGlyZFBhcnR5LCBNYXliZUFsbG93RnJvbVRoaXJkUGFydHkgfTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNhbkFjY2Vzc1N0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBTaG91bGRBbGxv
d0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVBbGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdDsKIAotICAg
IFN0cmluZyBtX3Byb3RvY29sOwotICAgIFN0cmluZyBtX2hvc3Q7CisgICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgU3RyaW5nIG1fZmlsZVBh
dGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OwogICAgIGJvb2wgbV9pc1Vu
aXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBlOTBhYjgyMWY3OGZkNTU2ZmY1Njg3ZDMw
ZTlmMmY3NjBiMzk2NGJhLi4yYWFjOGVlOGQzYmRiMGI1YWRkODYzMTUwNTQ1MDI2NGMxYzI3NTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zMiwz
NyArMzIsMzIgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlY3VyaXR5T3JpZ2luRGF0
YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCi17Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5
T3JpZ2luRGF0YTsKLQotICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IHNlY3VyaXR5
T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QgPSBzZWN1cml0
eU9yaWdpbi5ob3N0KCk7Ci0gICAgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQgPSBzZWN1cml0eU9y
aWdpbi5wb3J0KCk7Ci0KLSAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwotfQotCiBTdHJp
bmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1h
a2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQu
dmFsdWVfb3IoMCkpKTsKKyAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUiKQorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIik7CisKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCk7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAnOicsIHN0YXRpY19jYXN0PHVpbnQzMl90Pigq
cG9ydCkpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7
IH07CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50
KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhKCk7CisgICAgICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEgeyB9OwogCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQogCiBSZWY8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0YTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggNWY1NWY5NDJiODFmY2ZlMDBi
ZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZC4uNzk5MDIzOWM4ZGRhYzIzOWJiMzkyYmU0NGVjNDIyYzAz
MTUyYmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
OCArNDUsMTUgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgewogICAgIH0KICAg
ICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZyb21TZWN1
cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbUZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIFNl
Y3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7CisgICAgICAgICAgICB1cmwucHJvdG9jb2woKS5p
c051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCksCisgICAgICAgICAgICB1cmwuaG9zdCgpLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwKKyAg
ICAgICAgICAgIHVybC5wb3J0KCkKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA1MzQxY2E2NWU4OGZjNzI4Mzc2MGVkYWFj
NWI2ZThmZmE4ZDA0MGEwLi45NzMyYjY2YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5NDkwYjg2NDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQogCi0gICAgdmlydHVhbCBTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDhjNGFmNDJmOGFhMTk1YjNjNmYy
YzE0NWMyODhjODBkZDI4OTRhOTQuLjY5YzFiMzM1MzA4YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1
OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW4K
ICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNw
YWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYThhNTJlZGM5ZTdiN2I1YzhjMjdkY2JjMGNjNjYyYjhk
YWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3MmI0MTRkMTAzOGRmZjJmZGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MzI0LDcgKzQzMjQsNyBAQCB2b2lkIElu
dGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKaW5kZXggMjUwMTE0ZWYyNTBlZmZhNGU0NmQ5ZDE2MTYzNzQ5NWU1ZDllMmQ0OS4u
YWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0N2NhZjNkNDJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFJlZ2lzdHJhdGlvbjogUmVnaXN0ZXJp
bmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIo
KS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlv
blVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpvYkRhdGEudG9wT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC0+dG9wT3JpZ2luKCkpOworICAg
IGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpv
YkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsKICAgICBqb2JEYXRh
LnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBz
Y29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEo
bV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVu
dGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwo
KTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNl
V29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVV
Ukw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBT
ZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNsaWVu
dENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkp
OworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAg
ICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKICAgICBqb2JE
YXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3JpcHRVUkwgPSBzY3JpcHRV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggYjg0YzY2ZThmNWVlMzJkOGJh
Nzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4uMWMzZDc0NmIyM2RiOTNlMzU2ZjIyZTYzMTIwYjFjZDRm
NGNkYjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtNzcsMTMgKzc3LDEy
IEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3JpZ2luSXNNYXRjaGluZyhj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29sIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9P
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsK
LSAgICBpZiAobV90b3BPcmlnaW4gPT0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKSkKKyAgICBpZiAobV90b3BPcmlnaW4gPT0gc2VjdXJpdHlPcmlnaW4pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBzY29wZU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobV9zY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlT3JpZ2luLT5pc1NhbWVPcmln
aW5BcyhvcmlnaW4pOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwobV9z
Y29wZSkgPT0gc2VjdXJpdHlPcmlnaW47CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRv
ckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDIzOWEzMDBi
MTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEzYTUyMjk1ZmIuLjcxMGY0MTJiNDcyZDhmMTc0MmUwYmVl
NDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7IG1fc2NvcGUgPSBXVEZN
b3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mKSBjb25zdDsKKyAgICBib29sIHJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDVlYTQ1Yjk1NWRmZjU3NDMy
NzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcuLmYwMWZiMTYxY2U4Yzg0ODVkNTYyNjJlYjZhYzY3MTQx
NGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbi50b1N0
cmluZygpLCBbJl0geworICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbiwgWyZdIHsK
ICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6cmVtb3ZlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vcmln
aW5Db3VudHMuZmluZChvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
b3JpZ2luQ291bnRzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9vcmln
aW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29yaWdpbkNvdW50cy5lbmQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFNXT3JpZ2luU3RvcmU6
OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIHJlbW92ZUZyb21TdG9y
ZShvcmlnaW4pOwogfQogCi12b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIG1fb3JpZ2luQ291bnRzLnJlbW92ZShvcmlnaW4u
dG9TdHJpbmcoKSk7CisgICAgbV9vcmlnaW5Db3VudHMucmVtb3ZlKG9yaWdpbik7CiAgICAgcmVt
b3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKaW5kZXggZTExZTQ1MTFmZTE5ODA4
ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3ZS4uY2IyOGIzOTQxOTkyOWZjMmRhZDRlYjdiZDdkZWNl
ZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV09yaWdpblN0b3JlLmgKQEAgLTI3LDMyICsyNywyOSBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KIGNsYXNzIFNXT3JpZ2luU3RvcmUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNXT3JpZ2luU3RvcmUo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGFkZChjb25zdCBTZWN1cml0eU9yaWdpbiYpOwotICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjbGVhcihjb25z
dCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgYWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZv
aWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAgdm9pZCBjbGVhckFsbCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGltcG9ydENvbXBsZXRlKCkgPSAwOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0b3JlKCkgPSAwOwogCi0g
ICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50czsKKyAgICBIYXNoTWFw
PFNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG1fb3JpZ2luQ291bnRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiZWVmMGUzMWMyNzFhOWFjYTY1YTlkMTNiNzk3
MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgxNDE3YTdmM2FjODExMWQ4YTQ3MzRhZTBiNGRiOGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcApAQCAtMTUzLDEyICsxNTMsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBh
dXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHIt
PmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7CiAKLSAgICBtX29yaWdpblN0b3JlLT5hZGQo
a2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG1fb3JpZ2luU3RvcmUtPmFk
ZChrZXkudG9wT3JpZ2luKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGF1dG8g
dG9wT3JpZ2luID0ga2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0
b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7CiAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Jl
Z2lzdHJhdGlvbnMudGFrZShrZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIGJv
b2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5SUQucmVtb3ZlKHJlZ2lzdHJhdGlvbi0+
aWRlbnRpZmllcigpKTsKQEAgLTIwNSwyOSArMjA1LDI5IEBAIHZvaWQgU1dTZXJ2ZXI6OmNsZWFy
QWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBt
X3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFyQWxsKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTV1Nl
cnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAgICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBtYWtlUmVmKG9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBtX2Ns
ZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIHNlY3VyaXR5T3JpZ2luLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIEFTU0VSVChtX2ltcG9ydENvbXBsZXRlZCk7Ci0gICAgICAgICAgICBjbGVh
cihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIGNsZWFy
KHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9qb2JRdWV1ZXMucmVtb3ZlSWYoWyZd
KGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVs
YXRlc1RvT3JpZ2luKG9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVs
YXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9KTsKIAogICAgIFZlY3RvcjxTV1Nl
cnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8m
IGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlmIChrZXlBbmRWYWx1
ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCisgICAgICAgIGlmIChrZXlBbmRWYWx1ZS5r
ZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAgIHJlZ2lzdHJh
dGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgY29udGV4dERhdGFzIDogbV9wZW5kaW5nQ29udGV4dERhdGFzLnZhbHVl
cygpKSB7CiAgICAgICAgIGNvbnRleHREYXRhcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYg
Y29udGV4dERhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRp
b24ua2V5LnJlbGF0ZXNUb09yaWdpbihvcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCB2b2lkIFNXU2VydmVy
Ojp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKIHsKLSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpOwotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsK
KyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRh
dGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAo
IWNvbm5lY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZN
b3ZlKG9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDExICs1MTIs
MTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rp
b24pCiB7Ci0gICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERh
dGFzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHBlbmRpbmdD
b250ZXh0RGF0YXMgPSBtX3BlbmRpbmdDb250ZXh0RGF0YXMudGFrZShjb250ZXh0Q29ubmVjdGlv
bi5zZWN1cml0eU9yaWdpbigpKTsKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4
dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CiAKLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2Uo
JmNvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5S
ZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rp
b24uc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtl
clJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIo
aXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKQEAg
LTY0MSwxMSArNjQxLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFs
KFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9y
T3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCiB7CiAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gdGVybWluYXRlZFdvcmtlcnM7CiAg
ICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1
ZXMoKSkgewotICAgICAgICBpZiAob3JpZ2luLmlzU2FtZVNjaGVtZUhvc3RQb3J0KHdvcmtlci0+
c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgIGlmICh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkg
PT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgICAgICB0ZXJtaW5hdGVkV29ya2Vycy5hcHBlbmQo
d29ya2VyLnB0cigpKTsKICAgICB9CiAgICAgZm9yIChhdXRvJiB0ZXJtaW5hdGVkV29ya2VyIDog
dGVybWluYXRlZFdvcmtlcnMpCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2VyKHdvcmtlcik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29u
dGFpbnMoY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bkZvck9yaWdpbihjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKQor
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4p
KQogICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uTWF5Tm9Mb25nZXJC
ZU5lZWRlZCgpOwogICAgICAgICAgICAgfQogCkBAIC04MDUsOSArODA1LDkgQEAgdm9pZCBTV1Nl
cnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBj
bGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVt
b3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4pIGNvbnN0Citib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9j
bGllbnRzQnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVn
aXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNjA2ZGI0NmFkMDI3Y2YxYmM1NWFmNzcxYjg4
MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3MzM3MmUyNmVmYzg0NzY0Nzk3ZmVmYTZhYjIwZWU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3JlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIK
LSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5o
IgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2
ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwoV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlv
biogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsK
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3Ry
YXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5
SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rl
cm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChp
ZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4g
bV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNv
bnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBAIC0yMjksOCArMjI5LDggQEAgcHJpdmF0ZToKIAogICAg
IFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiBtX29yaWdpblN0b3JlOwogICAgIFJlZ2lzdHJhdGlv
blN0b3JlIG1fcmVnaXN0cmF0aW9uU3RvcmU7Ci0gICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV9wZW5kaW5nQ29udGV4
dERhdGFzOwotICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgSGFzaE1hcDxTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBt
X3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0
YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRh
czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VX
b3JrZXJSdW5SZXF1ZXN0czsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBi
b29sIG1faW1wb3J0Q29tcGxldGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNmFhNWEyYTlmYmQyMzY2Mzli
NTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4uM2MyNjE3MmYzMmY1YjEwMTkxODFiNzdlMWU5Njg4YzE5
MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTV1NlcnZl
cldvcmtlci5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwyOSArMzks
MjkgQEAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWQKICAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXJUeXBlPigpOwog
fQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCitzdGF0aWMgSGFzaE1h
cDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxD
b25uZWN0aW9uc0J5T3JpZ2luKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
ZWN1cml0eU9yaWdpbkRhdGEsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+PiBjb25uZWN0
aW9uc0J5T3JpZ2luOwogICAgIHJldHVybiBjb25uZWN0aW9uc0J5T3JpZ2luOwogfQogCi1TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbikKICAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisg
ICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewotICAgIGF1dG8gcmVzdWx0
ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX29yaWdpbi5jb3B5UmVmKCksIHRoaXMp
OworICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX3NlY3Vy
aXR5T3JpZ2luLCB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9y
aWdpbigpLnJlbW92ZShtX29yaWdpbi5wdHIoKSk7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25u
ZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlv
bnNCeU9yaWdpbigpLmdldCgmY29uc3RfY2FzdDxTZWN1cml0eU9yaWdpbiY+KG9yaWdpbikpOwor
ICAgIHJldHVybiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KHNlY3VyaXR5T3JpZ2luKTsK
IH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2ZjEwMmJjNTI1YjcwZDA1MzRlN2Y3MTBhNDRmMjU5
OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3YzE1ZDUzOGNkZDg3Zjg1ZDg5ZWM4MmViNTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC03NCwxOCArNzQsMTggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAg
c3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvck9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAK
LSAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0K
KyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25N
YXlOb0xvbmdlckJlTmVlZGVkKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdp
bj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiBwcml2YXRlOgogICAgIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxT
ZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJp
dHlPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmlu
ZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUyNjMwNTEwNjU5MWRhNDA3ZDcxOWUuLjE1OWJjZTY2OWYx
Y2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEyZTZjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04NSwx
NCArODUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkKIGNvbnN0IENsaWVu
dE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29y
aWdpbikKLSAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktl
eS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSkgfTsKKyAgICAgICAgbV9vcmln
aW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fZGF0YS5zY3JpcHRVUkwpIH07CiAKICAgICByZXR1cm4g
Km1fb3JpZ2luOwogfQogCi1SZWY8U2VjdXJpdHlPcmlnaW4+IFNXU2VydmVyV29ya2VyOjpzZWN1
cml0eU9yaWdpbigpIGNvbnN0Citjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIFNXU2VydmVyV29y
a2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCk7CisgICAgcmV0dXJuIG9yaWdpbigpLmNsaWVudE9y
aWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlcldvcmtlcjo6
Y29udGV4dENvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGNjMDc1OWM2MTZlZjhlODI0YTI3
ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5M2Y1MDAwYWFiOWViMDFiZTRjYjhjNGRkMGFiMWI2M2Zk
ODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7CiAKICAgICBjb25zdCBD
bGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0
aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMGU3ZDgwY2JmODVlYjFk
YWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcxZC4uMDE3MmMzYjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZm
M2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291
cmNlT3JpZ2luKTsKICAgICBpZiAoc291cmNlT3JpZ2luKQotICAgICAgICBlbmNvZGVyIDw8IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3VyY2VPcmlnaW4pOworICAg
ICAgICBlbmNvZGVyIDw8IHNvdXJjZU9yaWdpbi0+ZGF0YSgpOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVhZGVyczsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRl
eCAzYzRiNDI0NmU4MTIwODdiMzBlMzZiYWZjMTY4ZWY0NjYzYzcwYThiLi5iY2Y5NTVhNjZjYjc2
ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNkMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9j
b2wsIFdLU3RyaW5nUmVmIGhvcwogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURh
dGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbih0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1
cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlUb1N0cmluZyhXS1NlY3Vy
aXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3Bw
CmluZGV4IDlkY2FkOTRiZmYyMjZkNGEwOWUwMmUwYzFhNTAyMTdiNWExYTBjZjguLjA0Y2JmMjFi
M2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0ODdlOTlkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5T
dG9yZS5jcHAKQEAgLTQxLDEzICs0MSwxMyBAQCBXZWJTV09yaWdpblN0b3JlOjpXZWJTV09yaWdp
blN0b3JlKCkKIHsKIH0KIAotdm9pZCBXZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OmFkZFRvU3Rv
cmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hl
ZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoKG9yaWdpbi50b1N0cmluZygpKSk7
CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRpbmdDaGFuZ2VzKCk7CiB9CiAKLXZvaWQgV2ViU1dPcmln
aW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbikKIHsKICAgICBtX3N0b3JlLnNjaGVkdWxlUmVtb3ZhbChjb21wdXRlU2hh
cmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5k
aW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmgKaW5kZXggN2Y4Yzk4NzExYzI1
ZGFlODZmZWJlZmMwODhjMDliNTI4OWYxN2ZmOS4uMmQyOWY1NjA5NTg0ZjEwMjA5ZTgwNmNkMTA2
YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5oCkBAIC0zMSwxMCArMzEs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dPcmlnaW5TdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpA
QCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFN0b3JlSGFu
ZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVGcm9tU3Rv
cmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBmaW5hbDsKKyAgICB2b2lkIGFkZFRv
U3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmlu
YWw7CiAgICAgdm9pZCBjbGVhclN0b3JlKCkgZmluYWw7CiAKICAgICAvLyBTaGFyZWRTdHJpbmdI
YXNoU3RvcmU6OkNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5MDYwZTVkNDc0MzNhNWNmNTMwMzZkNS4uMzhjMzk5MWVl
ZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGExNmRhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZAogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihT
ZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3Jp
cHRVUkwpOwogICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLnNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICBTdG9yYWdl
UHJvY2Vzczo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1
cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVn
aXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQKIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGll
bnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS51cmwpKSB9OworICAgIGF1
dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoZGF0YS51cmwpIH07CiAgICAgbV9jbGllbnRPcmlnaW5z
LmFkZChkYXRhLmlkZW50aWZpZXIsIGNsaWVudE9yaWdpbik7CiAgICAgc2VydmVyKCkucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShkYXRh
KSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVkOTMwNWQwNTEzNDZmOTk4MmQ4OGQuLjAwYjdmYzdjODM5
OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4MThhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zNyw4ICszNyw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQotICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUob3JpZ2luKSkKK1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihzZWN1cml0eU9yaWdpbikKICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGJiMTBiZGVmOTJjZWZhNTYyYTc4ZDhmOTUyMWRjMzhlNzFkYmM2N2IuLmU5
YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdjMzE4MmMzMjhkOTk1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCBkZDQ4OGM2ZmRmZjgx
YzY2MjViYjkxMGQyMDc4MzVjMjE2ODllYTRkLi5mODU3MjRlYTZmZTZmYzU4ZTliZDQ0MmIxMWMx
MDZmYTczZGU2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcApAQCAtMTEzLDIzICsxMTMsMjQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNz
V2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5T3JpZ2luKCk7CisKICAgICBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsK
KyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7
CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAg
ICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4oKSk7CisgICAgICAgIHN3U2VydmVyLT5tYXJrQWxs
V29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChzZWN1cml0eU9yaWdpbik7CiAKLSAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdp
bigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3Jp
Z2luKSkgeworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJD
b25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3Rp
bGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc3RkOjpudWxsb3B0KTsKICAgICB9
CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTdG9yYWdlUHJv
Y2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6
YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikgewotICAgICAg
ICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdp
bihvcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSk7CiB9CiAjZW5kaWYK
QEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwZXJmb3JtTmV4dFN0b3Jh
Z2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nl
c3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29y
a2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKK3Zv
aWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
c2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBD
OjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtMjc0LDkgKzI3NSw4IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2
aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MgJiYgIW1fc3RvcmFn
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKICAgICAgICAgQVNTRVJU
KG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAg
YXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8g
Y29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0
ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0
KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShvcmlnaW4pLCBjb250ZXh0Q29ubmVjdGlvbi5j
b3B5UmVmKCkpOworICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4sIG1fc3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgICAgICBtX3dh
aXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwpAQCAtMzM5
LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAjZW5kaWYKIH0KIAotdm9pZCBT
dG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
Y29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2luRGF0YXMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNhbGxi
YWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
Y2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0ICszNDgsMTQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykp
IHsKICAgICAgICAgYXV0byYgc2VydmVyID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7
Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IHNlY3VyaXR5T3JpZ2luRGF0YXMpCi0g
ICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAg
ICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKKyAgICAg
ICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAoIXdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQotICAgICAgICBpZGJT
ZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoc2VjdXJp
dHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dy
ZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICNlbmRpZgogfQogCkBAIC00
NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdpblN0b3JlJiBTdG9yYWdlUHJvY2Vzczo6c3dPcmln
aW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCku
b3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3Rv
cmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4g
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJmNvbnN0X2Nhc3Q8U2VjdXJpdHlPcmln
aW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5n
ZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIHN0ZDo6
b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklE
KQogewogICAgIGlmIChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKICAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JF
eHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3Jp
Z2luKSwgKnNlc3Npb25JRCksIDApOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oc2VjdXJpdHlP
cmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKSwgMCk7CisgICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhzZWN1cml0eU9yaWdp
biksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1ICs1MzcsMTUgQEAgdm9pZCBTdG9yYWdlUHJvY2Vz
czo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNv
bm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKQogewotICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
ck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47
CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2Vz
cyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwogICAgIHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7CiAKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92
ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQxMmZlMzE2ZTlmMjYxNzlmNzQ1NGE3
MWM3OWM5ZmZhMzljMDZiYzkuLjIwNzhhMTMxMDczOTg1OGNjNGIyN2MyYzViMzE3M2NjNWY0YTll
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlLmg+CkBAIC00NSw3ICs0NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKLXN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4p
OworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwogCiAgICAg
V2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAg
ICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYg
c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwotICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBA
IC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+PiBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
LCBSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uczsKICAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3ND
b25uZWN0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggMDMxOWU1YWVkM2ZmYzBhMzcwOWQ0Zjc1
ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNkMTc4NTQ0NWMzOTczM2IyZjA0OGE2MGYyMDIxNTA4Yzhj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KICAgICBmcmFtZUluZm9EYXRh
LmlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJM
LgogICAgIGZyYW1lSW5mb0RhdGEucmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChm
cmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
KyAgICBmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uZGF0YSgp
OwogICAgIGZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IGZyYW1lLmZyYW1lSUQoKTsKIAogICAgIHJl
dHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0YSwgZnJhbWUucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4YjkzZDg1YTEzYjdjNTk2NzU3Yjg0Mzk2MDAwMS4uZWU4
N2FjMTkxNTA2MDZiNGViODNhODNkZDdhZjNiMjdiMDI3NzgzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVs
ZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmUKICAgICBhdXRv
JiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0
YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
CiAKICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpKTsKIAogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5
cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGYxMGQ2MzMxZDdiN2Q1MjJkNzVhNDRiM2YzNjQ1
MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1MjI1YjlkOWRkMjRlZjgxZmE4YWY3NTNhMzViMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEo
KSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFu
YWdlci5jcHAKaW5kZXggMjNhYTRkMTNkNDEzM2ZkZTg5YmU0ZGMwYzE0ZWI5OTgwZjhhOWU4Mi4u
NmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5MGRkZDlmZmIxMWI1ODdmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5j
cHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNh
Y2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYQogCiAgICAgewog
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3Jk
LmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KSkpOworICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hl
LCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogCiAgICAgICAgIGRh
dGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKICAgICB9CiAKICAgICBpZiAoY2FjaGVzVG9D
bGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewogICAgICAgICBXZWJzaXRlRGF0
YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5
cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJl
Y29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKSk7CiAKICAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFS
ZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDY2NTBiNTgzNWQzZjc3ZDYzNTA1YjBk
MjIzNTMyNmUzMGYyYWQzNWEuLmNhMjlhYWZiMWJjOWI0MjQ4MjZlOGE4ODc0MmZmNGNkNTJiYTAw
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJl
bW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3Jk
IGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJl
Y29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJLaXQ6OnRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07
CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6
Q29tcHV0ZVNpemVzOwogCiAgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUs
IGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNv
cmRzKSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKSk7CisgICAgICAgIGF1
dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3Ig
KGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiByZWNvcmRPcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKICAgICAgICAgICAg
ICAgICBpZiAob3JpZ2luRGF0YSA9PSByZWNvcmRPcmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2Fl
ZWVjM2IxMjY0MTYwMjU3YzcwNTljODk3MWVkZmQ0MjMwOTU3Ni4uYjYxOTA0YzA4OTlhMzgxZDQx
YzMyZDM2NDMyYzk3NTk3YzU2ODE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUo
V2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHN0b3JlKQorUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3Rv
cmUpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSB7IHBvb2wsIFdURk1vdmUob3JpZ2luKSwgc3RvcmUgfSk7CisgICAgYXV0byBwcm94
eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2wsIHNlY3Vy
aXR5T3JpZ2luLCBzdG9yZSB9KTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBw
cm94eTsKIH0KIAotU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdp
biwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkK
ICAgICA6IFdlYlByb2Nlc3NQcm94eSB7IHBvb2wsIHN0b3JlIH0KLSAgICAsIG1fb3JpZ2luKFdU
Rk1vdmUob3JpZ2luKSkKKyAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAg
ICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQoZ2VuZXJhdGVQYWdlSUQoKSkKIHsKIH0KQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBXZWJQcm9jZXNzUHJveHk6
OmdldExhdW5jaE9wdGlvbnMobGF1bmNoT3B0aW9ucyk7CiAKICAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlcnZpY2Utd29ya2VyLXBy
b2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIxIikpOwotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIG9yaWdp
bigpLnRvU3RyaW5nKCkpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIHNlY3VyaXR5T3JpZ2luKCku
dG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWM3NzBiMWFkOTM1ZjQ2OTRlOGNj
MDZiM2MyZGU1ZjdkOTYxMTgwNS4uMzM1MWI3NDA5NGJlNDdlODMwZTM5N2M0MDY4MWJhYTA4Mjk4
YjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7
CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+
IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICB+U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgp
OwogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0
cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCi0gICAgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9Cisg
ICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIHsg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKQEAgLTU2LDkgKzU2
LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHko
V2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29s
JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OwogCi0gICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKICAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5ZTc4
OGY0NzQ3MGU2ZTRlYWIxZmZhOTEwNTM1YmIwOTc3M2JhMzIwLi41NGEwNzkyOWJlYjg1YTc2YzZj
Mjk2Zjg0YmQ4Njg0OWZlNGNhZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTEyMiwxNSArMTIyLDE1
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAgICAgfQogCiAgICAgYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAg
ICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW47CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNz
UHJveHkpKSB7CiAgICAgICAgIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAg
ICBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLm9yaWdpbigpKTsK
KyAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywgb3JpZ2luKSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBzZWN1cml0eU9yaWdpbiksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDM1MWJmNmFiMjZiNmVlZmQ4M2ZhOTYyN2E4ZTRjNzY2MjFhMDdmNjYuLjJkZTdkYmEyOGJjODJl
MDJjMTI2MDJmMGRmMWQ1OGMzZTQ0NzVlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5MSwxMiArNTkxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJv
Y2Vzc1ByCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3Rv
cmFnZVByb2Nlc3NQcm94eSYgcHJveHksIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEs
IHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhT
dG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94eSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9zdG9yYWdlUHJvY2Vzcyk7CiAKLSAgICBh
dXRvIG9yaWdpbiA9IG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKG9yaWdpbi5wdHIoKSkpCisgICAgaWYgKG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5jbGVhcigpOwpA
QCAtNjE0LDggKzYxMyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvCiAgICAgaWYgKG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyB7IH0p
OwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBvcmlnaW4uY29weVJlZigpLCAqd2Vic2l0ZURhdGFT
dG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChvcmlnaW4uY29weVJlZigp
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMs
IHNlY3VyaXR5T3JpZ2luLCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5wdHIoKSk7CiAKICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGlu
aXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksICp3ZWJzaXRl
RGF0YVN0b3JlKTsKQEAgLTk5MCw3ICs5ODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNj
b25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9j
ZXNzKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy50YWtlKCZkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vz
cykub3JpZ2luKCkpOworICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy50YWtlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpw
cm9jZXNzKS5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVk
UHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7CiAgICAgICAgIHVwZGF0ZVByb2Nl
c3NBc3NlcnRpb25zKCk7CiAgICAgfQpAQCAtMTg3OCw5ICsxODc3LDkgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50
ZXIudmFsdWUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhh
biB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3Ig
KGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgb3JpZ2luID0gc2VydmljZVdvcmtlclBy
b2Nlc3MtPm9yaWdpbigpOwotICAgICAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucygmb3JpZ2luKSkKLSAgICAgICAgICAg
ICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQo
Jm9yaWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2Vy
dmljZVdvcmtlclByb2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNl
Y3VyaXR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4ODgsOSArMTg4Nyw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdl
YlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
ZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAg
ICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT5vcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fYmFj
a2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdpbikp
Ci0gICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAgICAg
ICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nl
cy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCisgICAgICAgICAgICAgICAgICAgIG1fYmFja2dy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0NTdmNGM0YjE0MzgwZjZlZDNj
YjYyZjFjNWYzNjgxMGIxNTgwMDVkLi44OTVmYzMzNjk4MGE4YjNkMzg3MjUwMDA2YzQxNmM4OGJj
MjVlYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMz
NSw3ICszMzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZv
aWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3Jh
Z2VQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRp
b25hbDxQQUw6OlNlc3Npb25JRD4pOwogICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7
Ci0gICAgY29uc3QgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2Vy
dmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
ciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNl
V29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXI7IH0KICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAtNTE3LDcgKzUxNyw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclBy
b2Nlc3NlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29s
IG1fd2FpdGluZ0ZvcldvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXkgeyBmYWxzZSB9OwpAQCAtNjc3LDggKzY3Nyw4IEBAIHByaXZhdGU6CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5G
b3JOZXR3b3JrUHJvY2VzczsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbiBtX2JhY2tncm91bmRUb2tlbkZvck5ldHdvcmtQcm9jZXNzOwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4sIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91
bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotICAgIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6
OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cAppbmRleCBmZDQ4MDRkY2JiZjM1NGRmY2IzOWVkMGU5Y2RlNzk4ZmUxMjkxODY5Li43ZjcwMmUx
OGViM2E2N2RiZTQ3NmU2OTNhMGY0MjBkMTNiNGNmNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAyLDcg
KzYwMiw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFp
bHMoRnVuY3Rpb248dm9pZCAoVmVjdG9yPExvY2FsU3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVM
b2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2Vj
dXJpdHlPcmlnaW4pCiB7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29waWVkT3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDJi
MWY4ZGViNmFiZDI5ZDQ1M2I1NDM4NDkxNzIzNDA4NjM2Yjc2YjUuLjg0MjNiOTkzNDVmOGQ5MTE3
MDdlMGY4YjVjNWZlNmFkMDQwZTIzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVu
Y3Rpb248dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJik7CisgICAgdm9pZCBkZWxldGVMb2Nh
bFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYpOwogCiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShX
YWxsVGltZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYzIxNDNmZGRlYzVhNjFhNDBlODY1YTU2ZGM5OWIw
YTliMjExMTZlOC4uMGY5ZTlhYzA0NDczOWQ5MzVhNTI4MjgxZTc1NGE4NmRhMjZhODYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
TwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewotICAgICAgICAgICAgICAg
IFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwg
MCB9OworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbi0+
ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OwogICAgICAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBPCiAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAg
ICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURh
dGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSA/IHN0b3JhZ2UtPmRpc2tVc2FnZUZvck9yaWdp
bigqb3JpZ2luKSA6IDA7Ci0gICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5
IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdp
biksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsK
KyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEo
KSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9Owog
CiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggOTNiOTM2ZmU1YTIxYzUwNGViMzMxYWMxNWU3ZTM1NGYw
ZDA2NzRmOS4uMDFmMTM1N2E4ODYzMjcwMjdhZDE2NWYxZjAzZTgyMjMwYjQ5NWQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uCiAKICAgICBTZWN1cml0eU9yaWdp
biYgb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCBvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9s
b2NhdGlvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDViMzBmMzg3MzkzM2IwYzEwMDQ2YzJkNmM5ZjhmODgzMDkwZjE1Y2IuLjhmNWQ2
MWJmNzFjNzIyMjZhN2IwOTFlM2RiMzk0NzhiZmQzYWYzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5
T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIG9y
aWdpbklkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBvcmlnaW5J
ZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSkpOworICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQo
QVBJOjpTdHJpbmc6OmNyZWF0ZShvcmlnaW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkp
OwogCiAgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW5J
ZGVudGlmaWVycykpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGU0ZDM3YTIzNmNjYzAyZmI0NTg0YjZlMzZiMWJj
NDhkOTU4ZTc0NGEuLjljY2FjZTA1NzdjN2ZiYzhmZjU3MDZiZGZhZDkzZTQzN2NjNmUxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZW5k
VXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiB1CiAgICAgQVNTRVJUKHdlYkZyYW1l
KTsKIAogICAgIGF1dG8qIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSB1c2VyUmVxdWVzdC50b3BM
ZXZlbERvY3VtZW50T3JpZ2luKCk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZy
YW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp1
c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCB1c2VyUmVxdWVz
dC5yZXF1ZXN0KCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZy
YW1lSUQoKSwgdXNlclJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkpOwog
fQogCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNlck1l
ZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjplbnVtZXJhdGVNZWRpYURl
dmljZXMoTWVkaWFEZXZpY2VzRW51bWVyCiAKICAgICBTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxE
b2N1bWVudE9yaWdpbiA9IHJlcXVlc3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwogICAgIEFT
U0VSVCh0b3BMZXZlbERvY3VtZW50T3JpZ2luKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZShyZXF1ZXN0SUQsIHdl
YkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpyZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbigqdG9wTGV2ZWxEb2N1bWVudE9yaWdpbikpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JG
cmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlhRG9j
dW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCkpKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbE1lZGlh
RGV2aWNlc0VudW1lcmF0aW9uKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDFlMjIxMmUwNThlYWU4MTQ0NTRk
YmZiYmQ5NmUzNTc5YmVjNTFlODcuLjU4OTg0MDJjMzE0OWNjYjM0OTM3MTYzNmIwNzIxYTYxZjk3
OTRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaD4KQEAgLTk1LDcgKzk2LDcg
QEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQgeyBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BP
cmlnaW4pLCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50
SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JEZWxh
eVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiks
IGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKKyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmRh
dGEoKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdNYXRj
aFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3Ry
YXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKQEAgLTE3Miw3ICsxNzMs
NyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0cmF0
aW9uUmVhZHlUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5
KGNhbGxiYWNrSUQsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9y
aWdpbiksIGNsaWVudFVSTCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbi5kYXRhKCks
IGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0
aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMTkxLDcgKzE5Miw3IEBAIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBydW5PckRl
bGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9w
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2lu
KSwgY2xpZW50VVJMXSgpIG11dGFibGUgeworICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4u
ZGF0YSgpLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2luZ0dl
dFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFJlZ2lzdHJh
dGlvbnMoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggNDdiNGRiYjgyM2I1YWVhYTFkN2UzMDVkODJhM2VjM2ExNzk3OTA3My4uZDRl
ZWUzMmM5ZGI5MTcyY2ZjOTA0YjBlZjRkYjY0YjM2NjI0ZDAxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTczMSwxNyArNzMxLDE3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAg
QVNTRVJUKHdlYkZyYW1lKTsKICAgICAKICAgICBhdXRvJiBvcmlnaW4gPSBmcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGF1dG8gb3JpZ2luRGF0YSA9IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbik7CisgICAgYXV0byYgb3JpZ2luRGF0
YSA9IG9yaWdpbi5kYXRhKCk7CiAgICAgYXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCk7CiAgICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdp
bkRhdGEpOwogICAgIGF1dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmln
aW5EYXRhKTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3Vy
aXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigp
KS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5k
bGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmln
aW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVv
dGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5l
eHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YSh3
ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlz
cGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3Vy
cmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSwKKyAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YSh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCBvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFp
bHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFp
bHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKSwKICAgICAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6UmVwbHkobmV3
UXVvdGEpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5
bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKQEAg
LTc2Niw3ICs3NjYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90
YSwgdG90YWxCeXRlc05lZWRlZCksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEob3JpZ2luLmRhdGEoKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkKSwKICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6
UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2UucGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQ
Qzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKIAog
ICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbigmb3JpZ2luLCBuZXdR
dW90YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzZmJiMTdkMTI1MjU5
MmZjZDk4M2NhYzY2ZDY3OGZlYTI4M2EyZmRkLi5lZTgzOTdjYjVlZmE1NzIyZWRjN2RkM2RkYmY3
ZTQxN2VjZjY4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTg0NSw3
ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIEZyYW1lSW5mb0RhdGEgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhOwogICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5pc01h
aW5GcmFtZSA9IG5hdmlnYXRpb25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0
aWF0ZWRCeU1haW5GcmFtZTo6WWVzOwogICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5yZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHNvdXJjZURvY3VtZW50LnVybCgpKTsKLSAgICBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihzb3VyY2VEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBzb3VyY2VEb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKICAgICBpZiAob3JpZ2luYXRpbmdGcmFtZSkKICAgICAg
ICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSBvcmlnaW5hdGluZ0ZyYW1lLT5m
cmFtZUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBi
NmZkZjBhN2JjZGVjNDMzYTZkODAzNzQ2NTNmN2E0NWExY2U3YWQ3Li42YzdmYzk4M2E2NWE5NTkw
YjVlZDg0Mjc4NzQ4ODU3MTM0NTkwZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdAog
ewogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVt
b3J5Q2FjaGUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLm9yaWdpbnNXaXRoQ2FjaGUoc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIHdlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlLCAwIH0pOworICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vi
c2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5
Q2FjaGUsIDAgfSk7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGMzMGRm
ZWQzOGFmNTQyNzU0NDUyNDdjMWYyNjI0NzY1N2RhMWQ5YzUuLjVkNWMyYmMwNWZjNjBjNGUyZjcw
Y2NiYWFkOTBiNzk1NTUyZDgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBA
IHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIFN0b3JhZ2VB
cmVhSW1wbDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBTdG9yYWdlQXJlYUltcGw6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zdG9yYWdl
QXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAt
PnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmgKaW5kZXggNDMzYzQ4NzM4M2M0ODM2MzVhYzZmMzI0NDY1NTM1OGJlZjU3NDk4MS4uMTY1
YWY0NGQ5MDE4YjliOWQxM2Y3M2ZjZTg0NDczOTJjZDE4MzQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHVpbnQ2NF90IG1fc3RvcmFnZUFyZWFJRDsKICAgICBSZWY8U3RvcmFnZUFyZWFN
YXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggYTI2NTBkMWIzZWJmYzcyOGMy
NzVlZTAxMGJmZWEzYTI2OGIwYjg4Ni4uNDcxM2FjNGI3ZTFjNzhlMTMyMmY0OWYyYjU1ZmM4Mzky
NjViODEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNzQsMTQgKzc0LDE0IEBAIFN0b3JhZ2VBcmVhTWFw
OjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwg
UmVmPFdlYkNvCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6CiAgICAgY2FzZSBTdG9yYWdl
VHlwZTo6VHJhbnNpZW50TG9jYWw6CiAgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2
ZWxPcmlnaW4gPSBzdG9yYWdlTmFtZXNwYWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1h
cChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp0b3BMZXZlbE9yaWdpbiks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4p
KSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9y
YWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VO
YW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwg
c3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4t
PmRhdGEoKSksIDApOwogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6
U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25T
dG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNw
YWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0
eU9yaWdpbikpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
TmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWw6CkBAIC0zNTIsNyAr
MzUyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMKICAgICAgICAgZnJhbWVzLmFwcGVuZChm
cmFtZSk7CiAgICAgfQogCi0gICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5l
d1ZhbHVlLCB1cmxTdHJpbmcsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KG1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAog
dm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBz
b3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkBA
IC0zODMsNyArMzgzLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3Jh
Z2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KICAgICAgICAgfQogICAg
IH0KIAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzVG9GcmFtZXMocGFnZUdyb3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1
cmxTdHJpbmcsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJp
dHlPcmlnaW4pKTsKKyAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCAyMWZkNTg3MDg4MDFj
MDhmNmMxNTZmMDk1NGM4ODYzZDA0NmU5MWNjLi4yZjFjZDA3YTdhZGQxZTZhNTBlOGEyODlhYjlh
ZWJiNzNhMTc0YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogCiB2b2lkIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFN
YXAmIG1hcCkKIHsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obWFwLnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBtX3N0
b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAog
UmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2b2lk
IGNsb3NlRGF0YWJhc2VJZklkbGUoKSB7IH0KIAotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbigpIGNvbnN0CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zZWN1cml0eU9yaWdpbkRh
dGE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCmluZGV4IDE2NDc3MjI3ODRjYmE0Y2UzYWRiZjFlMTIyYWFiZjBlNjAzOTVlYzkuLjM4NmQ0
OGQ5OTAyNmJjMWIxNzFkYTFiZTZkNjY0M2ZmMDQwNmZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
b3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VjdXJp
dHlPcmlnaW47IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQog
CiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY29weSgpOwogICAgIHZvaWQgY2xvc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGQ1
ZTVmNzQ3N2U4MzNkMjRjZWIzYmExOTI4ZjFkMWMxNjkyZmVhYmEuLmRkYmRiMjJlYTBmYTBkYzRi
MWNiZDVhNmZjNmY4ODY1YjhhZWExMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtNjM3LDcgKzYzNyw3IEBAIGxvbmcgbG9uZyBTdG9y
YWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCi0gICAgU3RyaW5nIHBh
dGggPSBkYXRhYmFzZVBhdGhGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIFN0cmluZyBwYXRo
ID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tCmluZGV4IDc2YzI4ZjRkZGJmNzQ5ZWYwZGFiMjE5MDQ4Y2VkMjEyYTlkMDBiZGUuLjAwNTFm
NTgyZGQ1NDYyZmRmZTVmZjgzN2UwYzE5YTA2NDAxMDdkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0xMDYs
NyArMTA2LDcgQEAgLSAoTlNBcnJheSAqKWRhdGFiYXNlc1dpdGhPcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luCiB7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuZGF0YWJhc2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bigqW29yaWdpbiBfY29yZV0pKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5k
YXRhKCkpOwogICAgIE5TTXV0YWJsZUFycmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFtZVZlY3Rvci5zaXplKCldOwogICAgIGZvciAoYXV0byYg
bmFtZSA6IG5hbWVWZWN0b3IpCiAgICAgICAgIFtuYW1lcyBhZGRPYmplY3Q6KE5TU3RyaW5nICop
bmFtZV07CkBAIC0xNDIsMTIgKzE0MiwxMiBAQCAtICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwog
CiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAg
ICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3Jl
XSkpOworICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5k
ZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC0gKEJPT0wpZGVsZXRl
RGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSksIGRhdGFiYXNlSWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURh
dGFiYXNlKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAK
IC8vIEZvciBEdW1wUmVuZGVyVHJlZSBzdXBwb3J0IG9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCmlu
ZGV4IDliODQxODYwMmU1OWExY2E5ZjJjYzllNDg4YjY4ZGU2NjZjYjIyMjEuLjEwOGM1Mjg3Zjkw
N2U4MWE2MWEwMWFhNzI0MjNjOTYwNzk1MGJjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQpAQCAt
NTMsMTIgKzUzLDEyIEBAIC0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAKIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29y
aWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51
c2FnZShbX29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3Rh
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29yZV0p
KTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShbX29yaWdp
biBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1
ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKQEAgLTY2LDcg
KzY2LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAvLyBwcmV2ZW50IG5ldyBkYXRh
IGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luLgogLSAodm9pZClz
ZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2Vy
OjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqW19vcmlnaW4gX2NvcmVdKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0UXVvdGEoW19vcmlnaW4gX2NvcmVdLT5kYXRhKCksIHF1b3RhKTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFn
ZU1hbmFnZXIubW0KaW5kZXggOWE2ODljYTU1OTQ3M2VkM2IwMTU0YWE5NWNlYzZlNTFmYTlhN2Q3
MC4uNmU1N2VjYjM0ODliNWEyZDQ3NGZhODVlY2FlZTdkNjcyYjVjMzhkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBA
IC04NCw3ICs4NCw3IEBAIC0gKHZvaWQpZGVsZXRlQWxsT3JpZ2lucwogCiAtICh2b2lkKWRlbGV0
ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICBXZWJLaXQ6OlN0b3Jh
Z2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSkpOworICAgIFdlYktpdDo6U3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9
CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5
T3JpZ2luICopb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRmNDI0ODM3ZGVhOGE5
YTJjNGQ1N2NhZjZjODNkYWFmODRlNzJhNjEuLjRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUx
M2FlNDkyNDI5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC03MSw3ICs3MSw3IEBAIC0g
KE5TU3RyaW5nICopaG9zdAogCiAtIChOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewot
ICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkuZGF0YWJhc2VJZGVudGlmaWVy
KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSktPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTE2OSwxNyArMTY5LDE3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJTZWN1cml0eU9yaWdpbiAo
RGVwcmVjYXRlZCkKIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7Ci0gICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShy
ZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkpOwogfQog
CiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKHJlaW50ZXJwcmV0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHZvaWQpc2V0
UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpLCBxdW90YSk7
CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShyZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCksIHF1b3RhKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5k
ZXggZmI1NDQwODAyMGEwNzIzNWFmNmFlNGU0NWNiZjIxYTI5NDhlNGE2NC4uMzYwNTYyMzU4NDkx
YjUyZDQ1NGY1ZjNjNjFmMTMzNjFiZTg4MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgSFJFU1VMVCBX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4oX0luX29wdF8gSVdlYlNlY3Vy
aXR5T3JpZ2luKiBvcmkKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgYXV0byBkYXRhYmFzZU5hbWVzID0gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5kYXRhYmFzZU5hbWVzKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGF1dG8g
ZGF0YWJhc2VOYW1lcyA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1l
cyh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKIAogICAgIENP
TVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPj4+IGVudW1WYXJpYW50KEFkb3B0Q09N
LCBDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPj46OmFkb3B0KGRhdGFiYXNlTmFtZXMpKTsK
IApAQCAtMzExLDcgKzMxMSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVP
cmlnaW4oX0luX29wdF8gSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgaWYgKCF3ZWJT
ZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAg
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3Jp
Z2luLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBA
IC0zMzEsNyArMzMxLDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFi
YXNlKF9Jbl8gQlNUUiBkYXRhYmFzZU5hbWUsIF9Jbl9vcHRfIElXZWIKICAgICBpZiAoIXdlYlNl
Y3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpLCBTdHJp
bmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkpOworICAgIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4t
PnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5n
TGVuKGRhdGFiYXNlTmFtZSkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzk2LDcgKzM5
Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YShfSW5fIEJTVFIgb3Jp
Z2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRX
ZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikpLCBx
dW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLT5kYXRhKCksIHF1b3RhKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDkwNmNiYmE1MWRjNzU0OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcu
LjgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZShfT3V0XyB1bnNpZ25lZCBsb25nIGxv
bmcqIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
IAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSk7Cisg
ICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNhZ2UobV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTQwLDEzICsxNDAs
MTMgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cXVvdGEoX091dF8gdW5zaWduZWQgbG9u
ZyBsb25nKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikp
OworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAogSFJF
U1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3Rh
KSAKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSwgcXVvdGEp
OworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEobV9zZWN1cml0eU9y
aWdpbi0+ZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336524</attachid>
            <date>2018-03-26 10:26:18 -0700</date>
            <delta_ts>2018-03-26 11:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183969-20180326102617.patch</filename>
            <type>text/plain</type>
            <size>133002</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM4NDI1ODlkMTJlYTY0
OGQyZWRmODdhNWY3ZTExZDUwZDA5NTU5Ni4uNDhkMWVjYTc1NjY5MGQyMGEyYzc0YTdkMzY4MDQ4
YWUwODk2ZTVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxOC0wMy0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdp
bkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0
YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlciBjb2RlIHRvIGF2b2lkIGNvbnN0
cnVjdGluZworICAgICAgICBTZWN1cml0eU9yaWdpbiBvYmplY3RzIHVubmVjZXNzYXJpbHkuCisK
KyAgICAgICAgSSBhbHNvIHVwZGF0ZWQgU2VjdXJpdHlPcmlnaW4gdG8gdXNlIFNlY3VyaXR5T3Jp
Z2luRGF0YSBhcyBhIGRhdGEgbWVtYmVyLiBUaGlzIHJlZHVjZXMKKyAgICAgICAgY29kZSBkdXBs
aWNhdGlvbiBhIGJpdC4gVGhpcyBhbHNvIGF2b2lkcyBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlPcmln
aW5EYXRhIHVubmVjZXNzYXJpbHkKKyAgICAgICAgaW4gc29tZSBjYXNlcyBhcyBjYWxsZXJzIGNh
biBub3cgdXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZgorICAgICAgICBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0
b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNl
c3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9y
eTo6b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZWN1cml0
eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZWN1cml0eU9yaWdpbiBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5k
U3RvcmFnZUFyZWEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2lu
RXhjbHVkaW5nQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1BvdGVudGlh
bGx5VHJ1c3R3b3J0aHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNhbkFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2Fu
RGlzcGxheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmlzTG9jYWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9ydCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OnByb3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpob3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpwb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc0hUVFBGYW1pbHkg
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVn
aXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleTo6cmVsYXRlc1RvT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V09yaWdpblN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U1dPcmlnaW5TdG9yZTo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXT3JpZ2luU3RvcmU6OmNsZWFyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJt
aW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0yNiAgTWln
dWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gVXBs
b2FkIGNvcnJlY3QgYnVmZmVyIGluIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2YjIyNGQ1NTMzOGZiZmNjMGY3Mjk5YTgzYWE2M2QwNmE2NDAyOTFhLi4yY2M1
NjkxZmU2NTc3ZWE0Yzk0NTQ5YjcxMzdiNmNhZjE0MGZhNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDkwIEBACisyMDE4LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNl
IFdvcmtlciBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODM5NjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyIGNvZGUgdG8gYXZvaWQgY29uc3RydWN0aW5nCisgICAgICAgIFNlY3VyaXR5T3JpZ2luIG9i
amVjdHMgdW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNvcHlE
YXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXT3JpZ2luU3Rv
cmU6OmFkZFRvU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV09yaWdpblN0b3JlOjpyZW1v
dmVGcm9tU3RvcmUpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dPcmlnaW5TdG9yZS5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6
OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6c3dDb250ZXh0
Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwOgorICAgICAgICAoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c2VuZFVzZXJN
ZWRpYVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI6OmVudW1lcmF0ZU1lZGlhRGV2aWNlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bDo6c2VjdXJpdHlPcmlnaW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFn
ZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXApOgorCiAyMDE4LTAzLTI1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEFkZCBBUEkgdG8gY29udmVydCBiZXR3ZWVuIERPTSBhbmQgSlNDVmFsdWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKaW5kZXggNTI1NjY0OWY3MjA2MjMzNWY0ZjFiNmM5NWJiMWQwZjg5ZWY5MjMzMy4uNWU5
M2EwYTE4NWE1Nzg5YzZmM2IxZjUxMWUzYTFjNjIxYmFlNDU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50
bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZiBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigpLgorCisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpk
aXNrVXNhZ2VGb3JPcmlnaW4pOgorCiAyMDE4LTAzLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI5
OTU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDI2NjYxMzgzMmIyMDMxZGVkMzE5
NmFjNmY5Zjk2Y2FmNjU0MTFlMGEuLmJlM2ZkZTQ1OGI0ZWY4ZGE2MTdiMWIxM2I5NmZmOWRkOWFj
ZTFkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
OC0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBT
ZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFNlY3Vy
aXR5T3JpZ2luOjpkYXRhKCkgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW06
CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkYXRhYmFzZXNXaXRoT3JpZ2luOl0pOgor
ICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlT3JpZ2luOl0pOgorICAgICAgICAo
LVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJE
YXRhYmFzZVF1b3RhTWFuYWdlciB1c2FnZV0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZVF1b3Rh
TWFuYWdlciBxdW90YV0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciBzZXRR
dW90YTpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tOgorICAgICAg
ICAoLVtXZWJTdG9yYWdlTWFuYWdlciBkZWxldGVPcmlnaW46XSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3Jp
Z2luIGRhdGFiYXNlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiB1
c2FnZV0pOgorICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBxdW90YV0pOgorICAgICAgICAo
LVtXZWJTZWN1cml0eU9yaWdpbiBzZXRRdW90YTpdKToKKwogMjAxOC0wMy0yNSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIyOTk1NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhN2I5MjIw
YTI3OWU3NjA2MmRiMzhjM2E1NGY4NGZjYWFmZmY0YmJhLi42YTA2MjlhYWFhZjA0YjI5MzliMzkz
NjkwODNiOWU4NGZlMmJjNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTgtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZp
Y2UgV29ya2VyIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mzk2OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFVzZSBTZWN1cml0eU9yaWdpbjo6ZGF0YSgpIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKS4KKworICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4p
OgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6Cisg
ICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6dXNhZ2UpOgorICAgICAgICAoV2ViU2VjdXJpdHlP
cmlnaW46OnF1b3RhKToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpzZXRRdW90YSk6CisK
IDIwMTgtMDMtMjUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjk5NTQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggM2Y1ZmI5M2IzOWM5
OTEzODhlMDA0ZTc0OWIwNGQ5MmE1ZWY5YmU1Mi4uMjdlOGYwMjkzYzA4M2Y3NDg3MjFmNTJlNWNk
YjY2NmVmOTFiNzhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6Om9wdGlvbmFsPENsaWVudE9y
aWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogICAgIGlmICghb3JpZ2luKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIENsaWVudE9yaWdpbiB7
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqb3JpZ2luKSB9OworICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnRvcE9yaWdpbigpLmRhdGEoKSwgb3JpZ2luLT5kYXRhKCkgfTsKIH0KIAog
c3RhdGljIHZvaWQgZG9TZXF1ZW50aWFsTWF0Y2goc2l6ZV90IGluZGV4LCBWZWN0b3I8UmVmPERP
TUNhY2hlPj4mJiBjYWNoZXMsIERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVl
cnlPcHRpb25zJiYgb3B0aW9ucywgRE9NQ2FjaGU6Ok1hdGNoQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cAppbmRleCBjYmY0M2I0MmZmYmY4NzAzYzhlODM3MzViMWI3NWQyYTg0ODM5ZjgwLi5hMmJkNDRj
YzYyYmFmOTJkMWRkMDExOTljZmNhYTExZDJmM2I2ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC02NTIsNyArNjUyLDcgQEAgU3RyaW5n
IENETTo6c3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcAppbmRleCBkNWFjZWRhZTM2MzViNzg3MWU3ZTE0YzEyMjkwOTNhYjA4OGVjZjIxLi43
N2MzNzcxOTgxMTgxOWUyMGM3MGJmMWNmYWNjZjZhODQyZTMyMTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCkBAIC02OTcsNyArNjk3LDcgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTZXNz
aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUy
M2JkNTQ1NS4uNzNmMmQyNjJkZDhmZDExZDViZTZhYjhjMmZjOTY2ZmQ5ZDFjMDU2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA1YTJiNmVjZGE5ZDczODcyNzQxNTFkM2IwNDgzYzNl
YWY4ZTc3NGZmLi5kN2U0NzI3YzA1OGYwOGQzNDg1YzUxNGZiYjVmN2JmODc3MzRiMDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAt
OTEsNyArOTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBj
YWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAogICAgIEFTU0VSVChj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBkYXRh
YmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkpKTsKKyAgICBJREJEYXRhYmFzZUlkZW50
aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpIH0sIFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRl
eHQudG9wT3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIGlmICghZGF0YWJhc2VJZGVudGlmaWVyLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHNlY3VyaXR5IG9y
aWdpbiIpIH07CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbgog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJJ
REJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIGluIGFuIGludmFsaWQgc2VjdXJpdHkg
Y29udGV4dCIpIH07CiAKICAgICBBU1NFUlQoY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKLSAg
ICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkp
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9yaWdp
bigpKSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihuYW1l
LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSB9
LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsKICAg
ICBpZiAoIWRhdGFiYXNlSWRlbnRpZmllci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5kZWxldGVEYXRhYmFz
ZSgpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5ZTVlZWEyOWVhNWI3Y2JmYzFkMjVmODQ3
ZDQyYTNlMjE5ODUyMGY3Li4yYjBmZGM1MjRiNDViNjA2ZmQ0YjU5ZGZiMjE5YTQ1MzIxMTY4MjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPCiAKICAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxs
YmFja3MuYWRkKCsrY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9kZWxl
Z2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihtYWluRnJhbWVPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihvcGVuaW5nT3JpZ2luKSwgY2FsbGJhY2tJRCk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0
QWxsRGF0YWJhc2VOYW1lcyhtYWluRnJhbWVPcmlnaW4uZGF0YSgpLCBvcGVuaW5nT3JpZ2luLmRh
dGEoKSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkYXRhYmFzZU5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAppbmRleCBkZDc1YTNkNGQ1YTkwNzQ0MDA2OTEyNjA0NmY3NDZmMWRj
NzcwZjAwLi40NjFlMDFhOTNiM2Q5N2E3ODk4MjNkNTNjOTIzZTFlOTBkNTNhZGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNzY3
LDkgKzc2Nyw5IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKIFNlY3Vy
aXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmIChtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQotICAgICAgICByZXR1cm4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2Vj
dXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0VGhyZWFkU2VjdXJp
dHlPcmlnaW4tPmRhdGEoKTsKICAgICBpZiAoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OworICAgICAgICByZXR1cm4gbV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLT5kYXRhKCk7
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4
IGQyYTY1ZTJlZjQ2ZjFjOTVlMTQ1NTRlYWY2NzQzNjcyOGY1YTRlZTEuLjQ5NzEzMWMyNzBiNDk4
OGMyODA2MTIzNjRkZTRlOTJjN2JkYTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIwOSw5ICsyMDks
OSBAQCB2b2lkIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0
cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKIH0KIAotU2VjdXJpdHlPcmlnaW5EYXRh
IERhdGFiYXNlQ29udGV4dDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBEYXRhYmFzZUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpOwogfQogCiBib29sIERh
dGFiYXNlQ29udGV4dDo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCmluZGV4IDRjM2M0
NjM2MzVlNGZjM2UxMTE3NDdmNzVhMGMxMTAzZDNhZmM5ZmQuLmQxODY0NDg4OGZmYWVlMDg5YThk
ZThkMTIzNTM5ZTQ3MjkxMDkyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRh
YmFzZURldGFpbHMpOwogCiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0
OworICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsK
IAogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBi
NGFkYzY2MjgwN2MwZDUyZTQyN2FkZmE1MWZiNzI4MWNiZGE3M2FiLi5iYmY0NDkzYjdlOWEzYzUy
M2EzYjk5ZWYxZDhhOTQwN2ZjOTUzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0yNDgsNyArMjQ4LDcg
QEAgU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihvcmlnaW4pLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4u
ZGF0YSgpLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKIERhdGFiYXNlRGV0YWls
cyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYg
bmFtZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKQEAgLTI2Myw3ICsyNjMsNyBAQCBEYXRhYmFz
ZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBT
dHJpbmcmIG5hbWUsIFNlYwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGFiYXNl
VHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSk7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwg
b3JpZ2luLmRhdGEoKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpsb2dFcnJvck1lc3Nh
Z2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYWQzNjI1ODIz
ODM1MTBmNjNiZTRhZTRmNjViNzUxYjI2NGFkZjkzNC4uN2Y5ZmViMTRlN2NkZjQ3YTdlM2U5ZjM3
YTNkMWNkMmVkYTEwMTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0yNjExLDcgKzI2MTEsNyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0
b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNldE1lZGlhS2V5cyhXZWJLaXRNZWRpYUtleXMq
IG1lZGlhS2V5cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAwZDI1ZGEwMDMzYTY0ZTIx
NDA4MTc2Mjg4N2FkZDIyMTg0NDlkNjUyLi43ZDYzMmRhM2VjM2E1NGVkZjU0MGY0OTQwMDRiNmI5
Y2M1ZGNhMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
UmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdl
QXJlYShFcnJvclN0cmluZyYgZXJyb3IKICAgICB9CiAKICAgICBpZiAoIWlzTG9jYWxTdG9yYWdl
KQotICAgICAgICByZXR1cm4gbV9wYWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5z
dG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0YXJnZXRG
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICByZXR1cm4gbV9w
YWdlQWdlbnQtPnBhZ2UoKS5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogICAgIHJldHVybiBtX3Bh
Z2VBZ2VudC0+cGFnZSgpLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFy
ZWEoKnRhcmdldEZyYW1lLT5kb2N1bWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAppbmRleCBkODg1MGZmYWE1MDUwYjBkY2VkMjI3YmFiMDUwNGYwZjYxODNl
MmI2Li4xZWQzY2IxNDFhYjM3NDFkMzBhMDhhMzZlZWY1MjRlNWQwYWVmMGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIGNsYXNzIEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciB7CiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBTdG9yYWdlVHlwZTo6TG9jYWw7IH0KICAgICAgICAgc2l6ZV90IG1l
bW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsg
fQorICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29u
c3QgZmluYWwgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmln
aW47IHJldHVybiBvcmlnaW4uZ2V0KCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IDljMWNjMzgwYTExYWM2ZDM4MTRmNzM0MTJiYTAxNDgxMGYwMGM5ZTcu
LmZmMjkzODk5NzA2ZGU4OTVjZWY3NTAzYzBlODU3ZmFkMmZlMTI4ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnCiAgICAg
aWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVt
ZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBxdW90
YSwgb3IgaWYgaXQgd2FzIG51bGwgdGhlIGRlZmF1bHQuCkBAIC00NTgsNyArNDU4LDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG9yaWcKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAo
KTsKIAogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtNTAxLDcgKzUwMSw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVJlbWFpbmluZ1NpemVGb3JP
cmlnaW5FeGNsdWRpbmdDYWNoZShjb25zCiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRh
KCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZp
ZXIgIT0gMCkKICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBleGNsdWRpbmdDYWNoZUlk
ZW50aWZpZXIpOwogICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtNTM3LDcg
KzUzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3Rh
Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgcXVvdGEpOwotICAgIHVwZGF0ZVN0
YXRlbWVudC5iaW5kVGV4dCgyLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJp
bmRUZXh0KDIsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIHJl
dHVybiBleGVjdXRlU3RhdGVtZW50KHVwZGF0ZVN0YXRlbWVudCk7CiB9CkBAIC02ODYsNyArNjg2
LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBncm91cCwgR3JvdXBTdG9yYWdlSUQKIAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQo
MSwgdXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJMKCkpKTsKICAgICBzdGF0ZW1lbnQuYmlu
ZFRleHQoMiwgZ3JvdXAtPm1hbmlmZXN0VVJMKCkpOwotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgz
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMywgZ3JvdXAt
Pm9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1
dGVTdGF0ZW1lbnQoc3RhdGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTU3LDcg
Kzk1Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29y
ZChjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaW5zZXJ0T3JpZ2luU3RhdGVtZW50LmJpbmRUZXh0KDEsIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBp
bnNlcnRPcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOwogICAgIGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50NjQoMiwgbV9k
ZWZhdWx0T3JpZ2luUXVvdGEpOwogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChpbnNlcnRPcmln
aW5TdGF0ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggMzFmYjk1YzRjNjIyNmRhZTdjNzE5ZTBjODEyYWEyMDZjYWIwMzZmMS4uMmQ0
MjNjZjRmZDM2NTIyMDk1YTQ4YjM0YTc5Y2QwYjhjZmU3NDBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtODc0LDcgKzg3NCw3IEBAIEV4Y2VwdGlvbk9yPFN0b3JhZ2UqPiBET01X
aW5kb3c6OnNlc3Npb25TdG9yYWdlKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnNlc3Npb25TdG9y
YWdlKCktPnN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBh
Z2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSk7CiAgICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2Zy
YW1lLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSk7CiAgICAgcmV0dXJuIG1fc2Vzc2lvblN0b3JhZ2Uu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDZkMjMw
YjljMzgwMjc2NjlkNThmOTRkOGYzMmQ4M2U0MzkzZGQ5ZTIuLjY5M2U4ZjkxNTY3MmM3ZDUzZWU5
YjczNjczODRhYmUwZjIyYTg4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCkBAIC0xNDUsMTUgKzE0NSwxMyBAQCBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRy
dXN0d29ydGh5KGNvbnN0IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJiB1cmwpCi0gICAgOiBtX3Byb3RvY29sIHsgdXJsLnByb3RvY29sKCku
aXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0KLSAgICAsIG1faG9zdCB7IHVybC5ob3N0KCkuaXNOdWxs
KCkgPyBlbXB0eVN0cmluZygpIDogdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
IH0KLSAgICAsIG1fcG9ydCB7IHVybC5wb3J0KCkgfQorICAgIDogbV9kYXRhKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVVSTCh1cmwpKQogewotICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMg
YXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9NLgotICAgIG1fZG9tYWluID0gbV9o
b3N0OworICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBj
YW4gYmUgc2V0IGJ5IHRoZSBET00uCisgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAg
IGlmIChtX3BvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCBt
X3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX2Rh
dGEucG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwg
bV9kYXRhLnByb3RvY29sKSkKKyAgICAgICAgbV9kYXRhLnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBs
b2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7
CkBAIC0xNjYsOCArMTY0LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0
IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQotICAgIDog
bV9wcm90b2NvbCB7IGVtcHR5U3RyaW5nKCkgfQotICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmco
KSB9CisgICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51
bGxvcHQgfQogICAgICwgbV9kb21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAsIG1faXNVbmlx
dWUgeyB0cnVlIH0KICAgICAsIG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsgSXNQb3RlbnRp
YWxseVRydXN0d29ydGh5OjpZZXMgfQpAQCAtMTc1LDExICsxNzIsOSBAQCBTZWN1cml0eU9yaWdp
bjo6U2VjdXJpdHlPcmlnaW4oKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQotICAgIDogbV9wcm90b2NvbCB7IG90aGVyLT5t
X3Byb3RvY29sLmlzb2xhdGVkQ29weSgpIH0KLSAgICAsIG1faG9zdCB7IG90aGVyLT5tX2hvc3Qu
aXNvbGF0ZWRDb3B5KCkgfQorICAgIDogbV9kYXRhIHsgb3RoZXItPm1fZGF0YS5pc29sYXRlZENv
cHkoKSB9CiAgICAgLCBtX2RvbWFpbiB7IG90aGVyLT5tX2RvbWFpbi5pc29sYXRlZENvcHkoKSB9
CiAgICAgLCBtX2ZpbGVQYXRoIHsgb3RoZXItPm1fZmlsZVBhdGguaXNvbGF0ZWRDb3B5KCkgfQot
ICAgICwgbV9wb3J0IHsgb3RoZXItPm1fcG9ydCB9CiAgICAgLCBtX2lzVW5pcXVlIHsgb3RoZXIt
Pm1faXNVbmlxdWUgfQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MgeyBvdGhlci0+bV91bml2ZXJz
YWxBY2Nlc3MgfQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTSB7IG90aGVyLT5tX2RvbWFpbldh
c1NldEluRE9NIH0KQEAgLTIyOCw3ICsyMjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc1Bv
dGVudGlhbGx5VHJ1c3R3b3J0aHkoKSBjb25zdAogICAgIC8vIFRoaXMgY29kZSBpcyB1c2luZyBh
biBlbnVtIGluc3RlYWQgb2YgYW4gc3RkOjpvcHRpb25hbCBmb3IgdGhyZWFkLXNhZmV0eS4gV29y
c3QgY2FzZSBzY2VuYXJpbywgc2V2ZXJhbCB0aHJlYWQgd2lsbCByZWFkCiAgICAgLy8gJ1Vua25v
d24nIHZhbHVlIGNvbmN1cnJlbnRseSBhbmQgdGhleSdsbCBhbGwgY2FsbCBzaG91bGRUcmVhdEFz
UG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpIGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0LgogICAgIGlm
IChtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6
OlVua25vd24pCi0gICAgICAgIG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5ID0gc2hvdWxkVHJl
YXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkobV9wcm90b2NvbCwgbV9ob3N0KSA/IElzUG90ZW50
aWFsbHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAg
ICAgICAgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFs
bHlUcnVzdHdvcnRoeShtX2RhdGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFs
bHlUcnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKICAgICBy
ZXR1cm4gbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgPT0gSXNQb3RlbnRpYWxseVRydXN0d29y
dGh5OjpZZXM7CiB9CiAKQEAgLTI3Nyw5ICsyNzIsOSBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpj
YW5BY2Nlc3MoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogICAgIC8vIHRoaXMg
aXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgogCiAgICAgYm9vbCBjYW5BY2Nlc3MgPSBmYWxz
ZTsKLSAgICBpZiAobV9wcm90b2NvbCA9PSBvdGhlci5tX3Byb3RvY29sKSB7CisgICAgaWYgKG1f
ZGF0YS5wcm90b2NvbCA9PSBvdGhlci5tX2RhdGEucHJvdG9jb2wpIHsKICAgICAgICAgaWYgKCFt
X2RvbWFpbldhc1NldEluRE9NICYmICFvdGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7Ci0gICAg
ICAgICAgICBpZiAobV9ob3N0ID09IG90aGVyLm1faG9zdCAmJiBtX3BvcnQgPT0gb3RoZXIubV9w
b3J0KQorICAgICAgICAgICAgaWYgKG1fZGF0YS5ob3N0ID09IG90aGVyLm1fZGF0YS5ob3N0ICYm
IG1fZGF0YS5wb3J0ID09IG90aGVyLm1fZGF0YS5wb3J0KQogICAgICAgICAgICAgICAgIGNhbkFj
Y2VzcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kb21haW5XYXNTZXRJbkRPTSAmJiBv
dGhlci5tX2RvbWFpbldhc1NldEluRE9NKSB7CiAgICAgICAgICAgICBpZiAobV9kb21haW4gPT0g
b3RoZXIubV9kb21haW4pCkBAIC0zNjMsNyArMzU4LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6
Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwu
aXNMb2NhbEZpbGUoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQ
YXRoLCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCisgICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAi
ZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVW
b2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIApAQCAtMzc2LDcgKzM3MSw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46
OmNhbkRpc3BsYXkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBjYW5SZXF1
ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShtX3Byb3RvY29sLCBwcm90b2NvbCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBTZWN1cml0eVBvbGlj
eTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAgICBpZiAoU2VjdXJp
dHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuTG9h
ZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxp
c3RlZCh0aGlzLCB1cmwpOwpAQCAtNDYxLDcgKzQ1Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdp
bjo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSBjb25zdAogICAgIGlmIChpc0hUVFBGYW1pbHko
KSkKICAgICAgICAgcmV0dXJuIGhvc3QoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCisgICAgaWYgKFNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9j
b2wpKQogICAgICAgICByZXR1cm4gaG9zdCgpOwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CkBAIC00NzUsMzUgKzQ3MCwyMSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNlc0Zp
bGVQYXRoU2VwYXJhdGlvbigpCiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25z
dAogewotICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xv
Y2FsKG1fcHJvdG9jb2wpOworICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKG1fZGF0YS5wcm90b2NvbCk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9y
aWdpbjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsIik7Ci0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUi
ICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pCisgICAgaWYgKG1fZGF0YS5wcm90b2Nv
bCA9PSAiZmlsZSIgJiYgbV9lbmZvcmNlc0ZpbGVQYXRoU2VwYXJhdGlvbikKICAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgibnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygpOwogfQog
CiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6
Ly8iKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2Fw
YWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICBy
ZXN1bHQuYXBwZW5kKG1fcHJvdG9jb2wpOwotICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI6Ly8i
KTsKLSAgICByZXN1bHQuYXBwZW5kKG1faG9zdCk7Ci0KLSAgICBpZiAobV9wb3J0KSB7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3Bv
cnQudmFsdWUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAg
IHJldHVybiBtX2RhdGEudG9TdHJpbmcoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZU9y
aWdpbnNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luMSwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbjIpCkBAIC01NTIsNyArNTMzLDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
aG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6
Ly8iICsgaG9zdCArICIvIikpOwogICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woKnBvcnQsIHByb3RvY29sKSkKLSAgICAgICAgb3JpZ2luLT5tX3BvcnQgPSBwb3J0Owor
ICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwog
fQogCkBAIC01NzUsMTMgKzU1Niw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNT
YW1lU2NoZW1lSG9zdFBvcnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG90aGVyKSBjb25zdAogewot
ICAgIGlmIChtX2hvc3QgIT0gb3RoZXIubV9ob3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAobV9wcm90b2NvbCAhPSBvdGhlci5tX3Byb3RvY29sKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAobV9wb3J0ICE9IG90aGVyLm1fcG9ydCkKKyAgICBpZiAobV9kYXRh
ICE9IG90aGVyLm1fZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzTG9j
YWwoKSAmJiAhcGFzc2VzRmlsZUNoZWNrKG90aGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uaAppbmRleCA2NDgxYTM4ODJjMWRlZDFkYTkxZTM0MzViNGEwMmNiM2U1MzMwZjUwLi42
ZTc5MDkwMDZjOGIyMmMxNjFmZmRlZTNkZmZhNDBlZmJkZjNkYzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc4LDEw
ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb21haW5Gcm9tRE9NKGNvbnN0IFN0cmlu
ZyYgbmV3RG9tYWluKTsKICAgICBib29sIGRvbWFpbldhc1NldEluRE9NKCkgY29uc3QgeyByZXR1
cm4gbV9kb21haW5XYXNTZXRJbkRPTTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBwcm90b2NvbCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KLSAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBj
b25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLnByb3RvY29sOyB9CisgICAgY29uc3QgU3RyaW5nJiBob3N0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmhvc3Q7IH0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fZG9tYWluOyB9Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucG9ydDsgfQogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGEgZ2l2ZW4gVVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9u
IGl0cwogICAgIC8vIG93biBwcm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90
b2NvbCBvZiBpdHMgImlubmVyIFVSTCIKQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoY29uc3QgU3RyaW5n
JiBob3N0KTsKIAorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQorCiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7CiAgICAg
ZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJik7CkBAIC0yMTUsMTYgKzIxOCwxNCBA
QCBwcml2YXRlOgogCiAgICAgLy8gVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgdGhlIHNjaGVtZSBm
b3IgdGhpcyBvcmlnaW4gaXMgYW4gSFRUUC1mYW1pbHkKICAgICAvLyBzY2hlbWUsIGUuZy4gSFRU
UCBhbmQgSFRUUFMuCi0gICAgYm9vbCBpc0hUVFBGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3By
b3RvY29sID09ICJodHRwIiB8fCBtX3Byb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlz
SFRUUEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAiaHR0cCIgfHwg
bV9kYXRhLnByb3RvY29sID09ICJodHRwcyI7IH0KICAgICAKICAgICBlbnVtIFNob3VsZEFsbG93
RnJvbVRoaXJkUGFydHkgeyBBbHdheXNBbGxvd0Zyb21UaGlyZFBhcnR5LCBNYXliZUFsbG93RnJv
bVRoaXJkUGFydHkgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFjY2Vzc1N0b3JhZ2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qLCBTaG91bGRBbGxvd0Zyb21UaGlyZFBhcnR5ID0gTWF5YmVB
bGxvd0Zyb21UaGlyZFBhcnR5KSBjb25zdDsKIAotICAgIFN0cmluZyBtX3Byb3RvY29sOwotICAg
IFN0cmluZyBtX2hvc3Q7CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKICAgICBTdHJp
bmcgbV9kb21haW47CiAgICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gbV9wb3J0OwogICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3VuaXZlcnNhbEFjY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldElu
RE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cAppbmRleCBlOTBhYjgyMWY3OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhLi4yYWFjOGVl
OGQzYmRiMGI1YWRkODYzMTUwNTQ1MDI2NGMxYzI3NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zMiwzNyArMzIsMzIgQEAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCi17
Ci0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKLQotICAgIHNlY3Vy
aXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAg
c2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QgPSBzZWN1cml0eU9yaWdpbi5ob3N0KCk7Ci0gICAgc2Vj
dXJpdHlPcmlnaW5EYXRhLnBvcnQgPSBzZWN1cml0eU9yaWdpbi5wb3J0KCk7Ci0KLSAgICByZXR1
cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwotfQotCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0
b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8i
LCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVfb3IoMCkpKTsKKyAgICBpZiAo
cHJvdG9jb2wgPT0gImZpbGUiKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmaWxlOi8v
Iik7CisKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29s
LCAiOi8vIiwgaG9zdCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBo
b3N0LCAnOicsIHN0YXRpY19jYXN0PHVpbnQzMl90PigqcG9ydCkpOwogfQogCiBTZWN1cml0eU9y
aWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewog
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEoKTsKKyAg
ICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7IH07CiAgICAgCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gU2VjdXJp
dHlPcmlnaW5EYXRhKCk7CisgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyB9Owog
Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpOwogfQogCiBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0
YTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmgKaW5kZXggNWY1NWY5NDJiODFmY2ZlMDBiZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZC4u
Nzk5MDIzOWM4ZGRhYzIzOWJiMzkyYmU0NGVjNDIyYzAzMTUyYmM2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiVVJMLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsOCArNDUsMTUgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSB7CiAgICAgewogICAgIH0KICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEg
ZnJvbUZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJM
KGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0
YSB7CisgICAgICAgICAgICB1cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkg
OiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCisg
ICAgICAgICAgICB1cmwuaG9zdCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwKKyAgICAgICAgICAgIHVybC5wb3J0KCkKKyAg
ICAgICAgfTsKKyAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEu
aAppbmRleCA1MzQxY2E2NWU4OGZjNzI4Mzc2MGVkYWFjNWI2ZThmZmE4ZDA0MGEwLi45NzMyYjY2
YzdhZjg1NWFmOGVmM2ZhNjdjYzBjYWQ5NDkwYjg2NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFz
ZUlmSWRsZSgpIHsgfQogCi0gICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlP
cmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCmluZGV4IDhjNGFmNDJmOGFhMTk1YjNjNmYyYzE0NWMyODhjODBkZDI4OTRhOTQuLjY5
YzFiMzM1MzA4YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTc4LDcg
Kzc4LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omxv
Y2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW4KICAgICBlbHNlCiAgICAgICAgIHN0b3Jh
Z2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKLSAgICByZXR1cm4gc3Rv
cmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkpOworICAgIHJldHVybiBzdG9yYWdl
TmFtZXNwYWNlLT5zdG9yYWdlQXJlYShkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7
CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UmIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlTmFtZXNwYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBh
YThhNTJlZGM5ZTdiN2I1YzhjMjdkY2JjMGNjNjYyYjhkYWU5OGJjLi40ZmMyMzNmNjJiN2E5NzJh
ZGE3Y2U3MmI0MTRkMTAzOGRmZjJmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC00MzI0LDcgKzQzMjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3Jh
Z2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAg
ICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KGRvY3VtZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IGRvY3Vt
ZW50LT50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEo
KSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMjUwMTE0ZWYy
NTBlZmZhNGU0NmQ5ZDE2MTYzNzQ5NWU1ZDllMmQ0OS4uYWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAw
OWFlNTU0N2NhZjNkNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImFkZFJlZ2lzdHJhdGlvbjogUmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJ
RDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogCiAgICAgam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCA9IGNvbnRleHQtPnVybCgpOwot
ICAgIGpvYkRhdGEudG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oY29udGV4dC0+dG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29u
dGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3Jr
ZXJKb2JUeXBlOjpSZWdpc3RlcjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBv
cHRpb25zOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAog
ICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIGpvYkRhdGEu
Y2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnRleHQtPnRvcE9y
aWdpbigpKTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRh
dGEoKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3Rl
cjsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JE
YXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0
SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNsaWVudENyZWF0aW9uVVJMID0gY29udGV4dC51
cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKGNvbnRleHQudG9wT3JpZ2luKCkpOworICAgIGpvYkRhdGEudG9wT3JpZ2lu
ID0gY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCk7CiAgICAgam9iRGF0YS50eXBlID0gU2Vydmlj
ZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7
CiAgICAgam9iRGF0YS5zY3JpcHRVUkwgPSBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAKaW5kZXggYjg0YzY2ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2MzhmMmU4OGUzMi4u
MWMzZDc0NmIyM2RiOTNlMzU2ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmNwcApAQCAtNzcsMTMgKzc3LDEyIEBAIGJvb2wgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleTo6b3JpZ2luSXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHRvCiAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1f
c2NvcGUpOwogfQogCi1ib29sIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNU
b09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSkKKyAgICBpZiAo
bV90b3BPcmlnaW4gPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgYXV0byBzY29wZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9zY29wZSk7Ci0g
ICAgcmV0dXJuIHNjb3BlT3JpZ2luLT5pc1NhbWVPcmlnaW5BcyhvcmlnaW4pOworICAgIHJldHVy
biBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwobV9zY29wZSkgPT0gc2VjdXJpdHlPcmlnaW47
CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDIzOWEzMDBiMTdmYWU3OGUxMTdmYWNlZWE0OTBlNWEz
YTUyMjk1ZmIuLjcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgVVJMJiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNj
b3BlKFVSTCYmIHNjb3BlKSB7IG1fc2NvcGUgPSBXVEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9v
bCByZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdDsKKyAgICBib29s
IHJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAg
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2lu
U3RvcmUuY3BwCmluZGV4IDVlYTQ1Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYyZWMyZGQ4NGI4MDcu
LmYwMWZiMTYxY2U4Yzg0ODVkNTYyNjJlYjZhYzY3MTQxNGRjMDJjNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNw
cApAQCAtMzIsMTcgKzMyLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09y
aWdpblN0b3JlOjphZGQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3ZvaWQgU1dPcmln
aW5TdG9yZTo6YWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgICsr
bV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbi50b1N0cmluZygpLCBbJl0geworICAgICsrbV9v
cmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbiwgWyZdIHsKICAgICAgICAgYWRkVG9TdG9yZShvcmln
aW4pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZv
aWQgU1dPcmlnaW5TdG9yZTo6cmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2
b2lkIFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vcmlnaW5Db3VudHMuZmluZChvcmlnaW4udG9T
dHJpbmcoKSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fb3JpZ2luQ291bnRzLmZpbmQob3JpZ2lu
KTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9vcmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlm
IChpdGVyYXRvciA9PSBtX29yaWdpbkNvdW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NTQsOSArNTQsOSBAQCB2b2lkIFNXT3JpZ2luU3RvcmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQogICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCi12b2lkIFNX
T3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFNX
T3JpZ2luU3RvcmU6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewot
ICAgIG1fb3JpZ2luQ291bnRzLnJlbW92ZShvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgbV9vcmln
aW5Db3VudHMucmVtb3ZlKG9yaWdpbik7CiAgICAgcmVtb3ZlRnJvbVN0b3JlKG9yaWdpbik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dP
cmlnaW5TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09y
aWdpblN0b3JlLmgKaW5kZXggZTExZTQ1MTFmZTE5ODA4ZjY4ZmRhZmQ0MTcxZGM4MDljZmI4ZWE3
ZS4uY2IyOGIzOTQxOTkyOWZjMmRhZDRlYjdiZDdkZWNlZTIwOWQ5NGNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmgK
QEAgLTI3LDMyICsyNywyOSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0K
IGNsYXNzIFNXT3JpZ2luU3RvcmUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgflNXT3JpZ2luU3RvcmUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lk
IGFkZChjb25zdCBTZWN1cml0eU9yaWdpbiYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAg
IHZvaWQgYWRkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJik7CiAgICAgdm9pZCBjbGVhckFsbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGlt
cG9ydENvbXBsZXRlKCkgPSAwOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0
b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVG
cm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
ZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhclN0b3JlKCkgPSAwOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90PiBtX29yaWdpbkNvdW50czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgdWlu
dDY0X3Q+IG1fb3JpZ2luQ291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCBiZWVmMGUzMWMyNzFhOWFjYTY1YTlkMTNiNzk3MWFkMjRjMzE0NDYzLi5hMGI3ZmMyZTgx
NDE3YTdmM2FjODExMWQ4YTQ3MzRhZTBiNGRiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIg
QEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXQKICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lz
dHJhdGlvbnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0
aW9uUHRyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdF
bnRyeSk7CiAKLSAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5
T3JpZ2luKCkpOworICAgIG1fb3JpZ2luU3RvcmUtPmFkZChrZXkudG9wT3JpZ2luKCkpOwogfQog
CiB2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGF1dG8gdG9wT3JpZ2luID0ga2V5LnRvcE9yaWdp
bigpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2lu
KCk7CiAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOwog
ICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0
cmF0aW9uc0J5SUQucmVtb3ZlKHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKQEAgLTIwNSwy
OSArMjA1LDI5IEBAIHZvaWQgU1dTZXJ2ZXI6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLmNsZWFy
QWxsKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Y2xl
YXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9pbXBvcnRDb21wbGV0ZWQpIHsKLSAg
ICAgICAgbV9jbGVhckNvbXBsZXRpb25DYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBvcmlnaW4gPSBt
YWtlUmVmKG9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgICAgICBtX2NsZWFyQ29tcGxldGlvbkNhbGxiYWNrcy5h
cHBlbmQoW3RoaXMsIHNlY3VyaXR5T3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChtX2lt
cG9ydENvbXBsZXRlZCk7Ci0gICAgICAgICAgICBjbGVhcihvcmlnaW4sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIGNsZWFyKHNlY3VyaXR5T3JpZ2luLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgbV9qb2JRdWV1ZXMucmVtb3ZlSWYoWyZdKGF1dG8mIGtleUFuZFZhbHVlKSB7Ci0g
ICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7Cisg
ICAgICAgIHJldHVybiBrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICB9KTsKIAogICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lz
dHJhdGlvbnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3Ry
YXRpb25zKSB7Ci0gICAgICAgIGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9y
aWdpbikpCisgICAgICAgIGlmIChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3Vy
aXR5T3JpZ2luKSkKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5
QW5kVmFsdWUudmFsdWUuZ2V0KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29udGV4dERh
dGFzIDogbV9wZW5kaW5nQ29udGV4dERhdGFzLnZhbHVlcygpKSB7CiAgICAgICAgIGNvbnRleHRE
YXRhcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgY29udGV4dERhdGEpIHsKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnJlbGF0ZXNUb09yaWdpbihv
cmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXku
cmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBA
IC00OTgsMTAgKzQ5OCwxMCBAQCB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlv
biYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgagogCiB2b2lkIFNXU2Vy
dmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0
YSkKIHsKLSAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3Jp
cHRVUkwpOwotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9y
T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKLSAgICAgICAg
bV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKKyAgICAg
ICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmVuc3VyZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwg
W10gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDExICs1MTIsMTEgQEAgdm9pZCBTV1NlcnZlcjo6dHJ5
SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZv
aWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBwZW5kaW5n
Q29udGV4dERhdGFzID0gbV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoJmNvbnRleHRDb25uZWN0
aW9uLm9yaWdpbigpKTsKKyAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBtX3BlbmRpbmdD
b250ZXh0RGF0YXMudGFrZShjb250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdpbigpKTsKICAg
ICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxs
Q29udGV4dERhdGEoZGF0YSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9
IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoJmNvbnRleHRDb25uZWN0aW9uLm9yaWdp
bigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtl
clJ1blJlcXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKQEAgLTY0MSwxMSArNjQxLDExIEBAIHZvaWQg
U1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6bWFya0FsbFdv
cmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikK
K3ZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVkKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgVmVjdG9yPFNXU2Vy
dmVyV29ya2VyKj4gdGVybWluYXRlZFdvcmtlcnM7CiAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBt
X3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAob3Jp
Z2luLmlzU2FtZVNjaGVtZUhvc3RQb3J0KHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAg
ICAgIGlmICh3b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkgPT0gc2VjdXJpdHlPcmlnaW4pCiAgICAg
ICAgICAgICB0ZXJtaW5hdGVkV29ya2Vycy5hcHBlbmQod29ya2VyLnB0cigpKTsKICAgICB9CiAg
ICAgZm9yIChhdXRvJiB0ZXJtaW5hdGVkV29ya2VyIDogdGVybWluYXRlZFdvcmtlcnMpCkBAIC03
NzksNyArNzc5LDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICAgICAgICAgICAgICAg
ICAgdGVybWluYXRlV29ya2VyKHdvcmtlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29udGFpbnMoY2xpZW50T3JpZ2luLmNsaWVu
dE9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjbGllbnRPcmlnaW4u
Y2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9y
T3JpZ2luKGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4pKQogICAgICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLT5jb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogICAgICAgICAgICAg
fQogCkBAIC04MDUsOSArODA1LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2Ns
aWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9y
KTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0Citib29sIFNXU2VydmVy
OjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jbGllbnRz
QnlTZWN1cml0eU9yaWdpbi5jb250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0
eU9yaWdpbihvcmlnaW4pKTsKKyAgICByZXR1cm4gbV9jbGllbnRzQnlTZWN1cml0eU9yaWdpbi5j
b250YWlucyhzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdp
c3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
aW5kZXggNjA2ZGI0NmFkMDI3Y2YxYmM1NWFmNzcxYjg4MjdmMTAwMjM0NTJmYy4uYzEzZjQ4MjQ3
MzM3MmUyNmVmYzg0NzY0Nzk3ZmVmYTZhYjIwZWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhdGlvblN0b3Jl
LmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkhhc2guaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYi5oIgpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXJBbGwoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2VjdXJpdHlP
cmlnaW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3JpZ2lu
QXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogICAgIAogICAgIENvbm5l
Y3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3Jp
Z2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTc3
LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNX
aXRoUmVnaXN0cmF0aW9ucyhGdW5jdGlvbjx2b2lkKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYpPiYmKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAogICAgIHZvaWQg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGRE
aXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCkBA
IC0yMjksOCArMjI5LDggQEAgcHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxTV09yaWdpblN0b3Jl
PiBtX29yaWdpblN0b3JlOwogICAgIFJlZ2lzdHJhdGlvblN0b3JlIG1fcmVnaXN0cmF0aW9uU3Rv
cmU7Ci0gICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPj4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwotICAgIEhhc2hNYXA8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVj
dG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0
czsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgVmVjdG9yPFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlY3VyaXR5
T3JpZ2luRGF0YSwgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVmVjdG9yPFJ1blNl
cnZpY2VXb3JrZXJDYWxsYmFjaz4+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKICAgICBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggNmFhNWEyYTlmYmQyMzY2MzliNTc0NDAyMmNiMzgyNjI5ZTFiNWQ0ZS4u
M2MyNjE3MmYzMmY1YjEwMTkxODFiNzdlMWU5Njg4YzE5MDAyZjQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwyOSArMzksMjkgQEAgc3RhdGljIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgZ2VuZXJhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uSWQKICAgICByZXR1cm4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXJUeXBlPigpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29u
bmVjdGlvbnNCeU9yaWdpbigpCitzdGF0aWMgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbio+PiBjb25uZWN0aW9uc0J5T3JpZ2luOwogICAgIHJldHVy
biBjb25uZWN0aW9uc0J5T3JpZ2luOwogfQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2lu
KQorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1faWRl
bnRpZmllcihnZW5lcmF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0g
ICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdp
bigpLmFkZChtX29yaWdpbi5jb3B5UmVmKCksIHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gYWxs
Q29ubmVjdGlvbnNCeU9yaWdpbigpLmFkZChtX3NlY3VyaXR5T3JpZ2luLCB0aGlzKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246On5TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAg
IGF1dG8gcmVzdWx0ID0gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLnJlbW92ZShtX29yaWdpbi5w
dHIoKSk7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3Zl
KG1fc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwog
fQogCi1TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQor
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikKIHsKLSAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpLmdldCgmY29uc3Rf
Y2FzdDxTZWN1cml0eU9yaWdpbiY+KG9yaWdpbikpOworICAgIHJldHVybiBhbGxDb25uZWN0aW9u
c0J5T3JpZ2luKCkuZ2V0KHNlY3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCA2ZjEwMmJjNTI1YjcwZDA1MzRlN2Y3MTBhNDRmMjU5OTgzNmFhOWIxLi4yZTYwNGVmMmNiNTQ3
YzE1ZDUzOGNkZDg3Zjg1ZDg5ZWM4MmViNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclR5cGVzLmgiCkBAIC03NCwxOCArNzQsMTggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwor
ICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKLSAgICBTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkgPSAw
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47
CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDkwYTE5YTU4MmQ0MGVjZjljMjUy
NjMwNTEwNjU5MWRhNDA3ZDcxOWUuLjE1OWJjZTY2OWYxY2I5YjJlNmI5NGYzOWM2Y2QyNjEyNzEy
ZTZjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTV1NlcnZl
cldvcmtlcjo6dGVybWluYXRlKCkKIGNvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3JrZXI6
Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29yaWdpbikKLSAgICAgICAgbV9vcmlnaW4g
PSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2Rh
dGEuc2NyaXB0VVJMKSkgfTsKKyAgICAgICAgbV9vcmlnaW4gPSBDbGllbnRPcmlnaW4geyBtX3Jl
Z2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1f
ZGF0YS5zY3JpcHRVUkwpIH07CiAKICAgICByZXR1cm4gKm1fb3JpZ2luOwogfQogCi1SZWY8U2Vj
dXJpdHlPcmlnaW4+IFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Citjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIFNXU2VydmVyV29ya2VyOjpzZWN1cml0eU9yaWdpbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVS
TCk7CisgICAgcmV0dXJuIG9yaWdpbigpLmNsaWVudE9yaWdpbjsKIH0KIAogU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBTV1NlcnZlcldvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCmluZGV4IGNjMDc1OWM2MTZlZjhlODI0YTI3ZWZmYzc0MWE1OTNjNWZmZmJhZDkuLmQ5
M2Y1MDAwYWFiOWViMDFiZTRjYjhjNGRkMGFiMWI2M2ZkODZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAg
LTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNv
bnRleHREYXRhKCkgY29uc3Q7CiAKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKaW5kZXggMGU3ZDgwY2JmODVlYjFkYWNmY2RkZjU1MjNhNzE4MzA2NDdjNjcx
ZC4uMDE3MmMzYjQxOWI4MWYxNWQzZjc4OWFkOGU4ZDZmM2FmOTg5MWQ1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKICAgICBpZiAoc291
cmNlT3JpZ2luKQotICAgICAgICBlbmNvZGVyIDw8IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKCpzb3VyY2VPcmlnaW4pOworICAgICAgICBlbmNvZGVyIDw8IHNvdXJjZU9y
aWdpbi0+ZGF0YSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVy
IDw8IGNzcFJlc3BvbnNlSGVhZGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCAzYzRiNDI0NmU4MTIwODdiMzBlMzZi
YWZjMTY4ZWY0NjYzYzcwYThiLi5iY2Y5NTVhNjZjYjc2ODA1NDJjMmNmY2FkY2M0ZjNmMGJkNTNk
MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJp
dHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvcwogCiBX
S1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3Vy
aXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwoc2Vj
dXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tT
ZWN1cml0eU9yaWdpbkNvcHlUb1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwCmluZGV4IDlkY2FkOTRiZmYyMjZkNGEw
OWUwMmUwYzFhNTAyMTdiNWExYTBjZjguLjA0Y2JmMjFiM2U3YWFhNjMxYjUyNTNhN2Q1OTYzZGM0
ODdlOTlkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAKQEAgLTQxLDEzICs0MSwx
MyBAQCBXZWJTV09yaWdpblN0b3JlOjpXZWJTV09yaWdpblN0b3JlKCkKIHsKIH0KIAotdm9pZCBX
ZWJTV09yaWdpblN0b3JlOjphZGRUb1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4p
Cit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OmFkZFRvU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hlZHVsZUFkZGl0aW9uKGNvbXB1dGVTaGFy
ZWRTdHJpbmdIYXNoKG9yaWdpbi50b1N0cmluZygpKSk7CiAgICAgbV9zdG9yZS5mbHVzaFBlbmRp
bmdDaGFuZ2VzKCk7CiB9CiAKLXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3Jl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCit2b2lkIFdlYlNXT3JpZ2luU3RvcmU6OnJl
bW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBt
X3N0b3JlLnNjaGVkdWxlUmVtb3ZhbChjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9T
dHJpbmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2lu
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V09yaWdpblN0b3JlLmgKaW5kZXggN2Y4Yzk4NzExYzI1ZGFlODZmZWJlZmMwODhjMDliNTI4OWYx
N2ZmOS4uMmQyOWY1NjA5NTg0ZjEwMjA5ZTgwNmNkMTA2YWQ3NjhkMGI0Mzk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2lu
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dPcmlnaW5TdG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U1dPcmlnaW5TdG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwpAQCAtNTAsOCArNDYsOCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYpOwogCi0gICAgdm9pZCBhZGRUb1N0b3JlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JikgZmluYWw7Ci0gICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mKSBmaW5hbDsKKyAgICB2b2lkIGFkZFRvU3RvcmUoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVGcm9tU3RvcmUoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclN0b3Jl
KCkgZmluYWw7CiAKICAgICAvLyBTaGFyZWRTdHJpbmdIYXNoU3RvcmU6OkNsaWVudC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTAwZjk0OWJjMTdmZGM1NmY5
MDYwZTVkNDc0MzNhNWNmNTMwMzZkNS4uMzhjMzk5MWVlZmQxYWVlYmVjNTU3MmY5MDgxYWM0ZGEx
NmRhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTIx
Miw3ICsyMTIsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogCiB2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpv
YkRhdGEpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoam9iRGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3JpcHRVUkwpOwogICAgIGlmICghU3RvcmFn
ZVByb2Nlc3M6OnNpbmdsZXRvbigpLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4o
c2VjdXJpdHlPcmlnaW4pKQogICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc2VydmVyKCkuc2Vz
c2lvbklEKCkpOwogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OmdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWQK
IAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
JiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9y
aWdpbiksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoZGF0YS51cmwpKSB9OworICAgIGF1dG8gY2xpZW50T3JpZ2luID0gQ2xpZW50
T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwo
ZGF0YS51cmwpIH07CiAgICAgbV9jbGllbnRPcmlnaW5zLmFkZChkYXRhLmlkZW50aWZpZXIsIGNs
aWVudE9yaWdpbik7CiAgICAgc2VydmVyKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdU
Rk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShkYXRhKSwgY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDE0ODUwYWNkZjZmMWZiZTg4OTVk
OTMwNWQwNTEzNDZmOTk4MmQ4OGQuLjAwYjdmYzdjODM5OGEzYjMyOGRmNThmYjI2OGEwN2E5MmQ4
MThhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC0zNyw4ICszNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQotICAgIDogU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKFdURk1vdmUob3JpZ2luKSkKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
KyAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbikKICAgICAs
IG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJiMTBiZGVmOTJj
ZWZhNTYyYTc4ZDhmOTUyMWRjMzhlNzFkYmM2N2IuLmU5YzM5ODhjOTM2ZWI4ZWJkODI4MWQyYjdj
MzE4MmMzMjhkOTk1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWlu
YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogCiAgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcAppbmRleCBkZDQ4OGM2ZmRmZjgxYzY2MjViYjkxMGQyMDc4MzVjMjE2ODll
YTRkLi5kOTBiM2ZiYWFlMGMxYWIwZTBjZjhhM2Q1ZjNjZmFlY2FlMTc4NWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUAogewogICAgIGZvciAoYXV0byYgc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiA6IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMudmFsdWVz
KCkpIHsKICAgICAgICAgaWYgKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmlwY0Nvbm5lY3Rp
b24oKSA9PSAmY29ubmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLnB0cigpOworICAgICAgICAgICAgcmV0dXJuIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTEzLDIzICsx
MTMsMjQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKIHsKKyAgICBh
dXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnNlY3VyaXR5
T3JpZ2luKCk7CisKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xv
c2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUoJnNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIHN3U2VydmVy
IDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vy
c0Zvck9yaWdpbkFzVGVybWluYXRlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5vcmlnaW4o
KSk7CisgICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRl
ZChzZWN1cml0eU9yaWdpbik7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24tPm9yaWdpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkgeworICAgIGlmIChuZWVkc1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIp
OwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKG9yaWdpbiwgc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0
eU9yaWdpbiwgc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAKLWJvb2wgU3RvcmFnZVByb2Nlc3M6
Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYg
b3JpZ2luKSBjb25zdAorYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCks
IFsmXShhdXRvJiBzd1NlcnZlcikgewotICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pOworICAgICAgICByZXR1cm4g
c3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0
eU9yaWdpbik7CiAgICAgfSk7CiB9CiAjZW5kaWYKQEAgLTI1MCw3ICsyNTEsNyBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCkKICAgICB0YXNrLnBlcmZvcm1U
YXNrKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcywg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNv
Y2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpA
QCAtMjc0LDkgKzI3NSw4IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgaWYgKGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MgJiYgIW1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlz
RW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudCgpKTsKICAgICAgICAgQVNTRVJUKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4
dFByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZShvcmlnaW4uY29weVJlZigpLCBtX3N0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92
ZShvcmlnaW4pLCBjb250ZXh0Q29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGNv
bnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUo
c2VjdXJpdHlPcmlnaW4sIG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgY29udGV4dENvbm5lY3Rp
b24uY29weVJlZigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIAogICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpCiAjZW5kaWYKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2lu
RGF0YT4mIHNlY3VyaXR5T3JpZ2luRGF0YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBj
b25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tB
Z2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrSURdKCkgewogICAgICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpE
aWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoY2FsbGJhY2tJRCksIDApOwpAQCAtMzQ4LDE0
ICszNDgsMTQgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykpIHsKICAgICAgICAgYXV0byYgc2VydmVyID0g
c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
RGF0YSA6IHNlY3VyaXR5T3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBzZXJ2ZXIuY2xlYXIob3Jp
Z2luRGF0YS5zZWN1cml0eU9yaWdpbigpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9y
aWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKKyAgICAgICAgICAgIHNlcnZlci5jbGVhcihzZWN1cml0
eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBpZiAoIXdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpKQotICAgICAgICBpZGJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERl
bGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRi
U2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3Vy
aXR5T3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdh
dG9yKV0geyB9KTsKICNlbmRpZgogfQogCkBAIC00NTUsMjEgKzQ1NSwyMSBAQCBXZWJTV09yaWdp
blN0b3JlJiBTdG9yYWdlUHJvY2Vzczo6c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4o
c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkub3JpZ2luU3RvcmUoKSk7CiB9CiAKLVdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU3RvcmFnZVByb2Nlc3M6OnNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
cy5nZXQoJmNvbnN0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKKyAgICByZXR1cm4g
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2VjdXJpdHlPcmlnaW4pOwogfQogCi12
b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNl
c3Npb25JRCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgc3RkOjpvcHRp
b25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JT
ZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsK
ICAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSwgKnNlc3Npb25JRCksIDApOworICAg
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nl
c3NGb3JFeHBsaWNpdFNlc3Npb24oc2VjdXJpdHlPcmlnaW4sICpzZXNzaW9uSUQpLCAwKTsKICAg
ICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2VzcyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmln
aW4pKSwgMCk7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9TdG9yYWdlUHJvY2VzcyhzZWN1cml0eU9yaWdpbiksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpkaWRGYWlsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQpAQCAtNTM3LDE1
ICs1MzcsMTUgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVj
dGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBTdG9yYWdlUHJvY2Vz
czo6c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQogewotICAgIGF1dG8m
IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCk7Ci0gICAgaWYgKG5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pKQorICAgIGF1dG8m
IHNlY3VyaXR5T3JpZ2luID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5zZWN1cml0eU9yaWdp
bigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pKQogICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJt
aW5hdGluZyBpdCIpOwogICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7
CiAKICAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAg
ICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmb3JpZ2luKTsKKyAgICBtX3Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZv
aWQgU3RvcmFnZVByb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5o
CmluZGV4IGQxMmZlMzE2ZTlmMjYxNzlmNzQ1NGE3MWM3OWM5ZmZhMzljMDZiYzkuLjYwMTBhOWVm
MTk2YjdiYWY1Y2IzMzg3NzU4NWEwZDZjNDA1MWUwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJCYWNraW5nU3RvcmUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5IYXNoLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1
ZUlEQkRhdGFiYXNlLmg+CkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNXU2VydmVyOwogY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKLXN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiB9CiAKQEAgLTk0LDggKzkzLDgg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJik7Ci0gICAgdm9pZCBjcmVhdGVT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
c3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRp
b25hbDxQQUw6OlNlc3Npb25JRD4pOwogCiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXImIHN3U2VydmVy
Rm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKQEAgLTE1MCw3ICsxNDksNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSgpOwogCiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQpOwotICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7CisgICAgYm9vbCBuZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJikgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VP
cmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CkBAIC0xNzcsNyArMTc2LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKLSAgICBIYXNo
TWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFJlZjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+PiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1f
d2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0
YWJhc2VQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
cmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKaW5kZXggMDMxOWU1YWVkM2ZmYzBhMzcwOWQ0Zjc1ZjZkNzk2ODYyYjY1ZGE1OC4uOTZiMTNk
MTc4NTQ0NWMzOTczM2IyZjA0OGE2MGYyMDIxNTA4YzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmPEZyYW1l
SW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgV2ViQ28KICAgICBmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lID0gZnJhbWUuaXNN
YWluRnJhbWUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVl
c3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgogICAgIGZyYW1lSW5mb0RhdGEucmVx
dWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChmcmFtZS51cmwoKSk7Ci0gICAgZnJhbWVJ
bmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBmcmFtZUluZm9EYXRhLnNlY3Vy
aXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uZGF0YSgpOwogICAgIGZyYW1lSW5mb0RhdGEuZnJh
bWVJRCA9IGZyYW1lLmZyYW1lSUQoKTsKIAogICAgIHJldHVybiBjcmVhdGUoZnJhbWVJbmZvRGF0
YSwgZnJhbWUucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKaW5kZXggZmFiNjBhZmI2YjQ4
YjkzZDg1YTEzYjdjNTk2NzU3Yjg0Mzk2MDAwMS4uZWU4N2FjMTkxNTA2MDZiNGViODNhODNkZDdh
ZjNiMjdiMDI3NzgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmUKICAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBXZWJzaXRlRGF0YVJlY29y
ZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0
YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwg
dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIAogICAgIHdlYnNpdGVE
YXRhU3RvcmUucmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlLCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IGYxMGQ2MzMxZDdiN2Q1MjJkNzVhNDRiM2YzNjQ1MzhmZTE4MTNmOWYuLjRlMzlkYWQ4MmE1
MjI1YjlkOWRkMjRlZjgxZmE4YWY3NTNhMzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmll
c0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYKICAgICBpZiAoIXN0b3JhZ2VN
YW5hZ2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yYWdlTWFuYWdlci0+ZGVsZXRlTG9j
YWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAg
IHN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1w
bChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKIHZvaWQgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJS
ZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggMjNhYTRkMTNk
NDEzM2ZkZTg5YmU0ZGMwYzE0ZWI5OTgwZjhhOWU4Mi4uNmIxNmMyYTA1YzI1YmQ0MGIxOTA4MWI5
MGRkZDlmZmIxMWI1ODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCB2
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYQogCiAgICAgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29y
ZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBkYXRhUmVjb3Jk
LmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJp
dHlPcmlnaW4oKS5kYXRhKCkpOwogCiAgICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVj
b3JkKTsKICAgICB9CiAKICAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVz
VG9DbGVhckFsbCkgewogICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAg
ICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNl
Y3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpEaXNrQ2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiAK
ICAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCmluZGV4IDY2NTBiNTgzNWQzZjc3ZDYzNTA1YjBkMjIzNTMyNmUzMGYyYWQzNWEuLmNhMjlh
YWZiMWJjOWI0MjQ4MjZlOGE4ODc0MmZmNGNkNTJiYTAwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAt
NDM2LDcgKzQzNiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNo
ZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJl
Y29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSk7CiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZl
dGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9
IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzOwogCiAgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwg
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8gb3Jp
Z2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBs
KG9yaWdpbiktPnN0cmluZygpKSk7CisgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbikt
PnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRh
UmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4gOiBk
YXRhUmVjb3JkLm9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAob3JpZ2luRGF0YSA9PSBy
ZWNvcmRPcmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2FlZWVjM2IxMjY0MTYwMjU3YzcwNTljODk3
MWVkZmQ0MjMwOTU3Ni4uYjYxOTA0YzA4OTlhMzgxZDQxYzMyZDM2NDMyYzk3NTk3YzU2ODE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorUmVm
PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmNy
ZWF0ZShXZWJQcm9jZXNzUG9vbCYgcG9vbCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3RvcmUpCiB7Ci0gICAgYXV0byBwcm94eSA9
IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2wsIFdURk1vdmUo
b3JpZ2luKSwgc3RvcmUgfSk7CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2wsIHNlY3VyaXR5T3JpZ2luLCBzdG9yZSB9KTsKICAg
ICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KIAotU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cG9vbCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYgc3Rv
cmUpCitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KFdlYlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKICAgICA6IFdlYlByb2Nlc3NQcm94eSB7
IHBvb2wsIHN0b3JlIH0KLSAgICAsIG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKKyAgICAsIG1f
c2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJQYWdl
SUQoZ2VuZXJhdGVQYWdlSUQoKSkKIHsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYKICAgICBXZWJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMobGF1bmNo
T3B0aW9ucyk7CiAKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZChBU0NJSUxpdGVyYWwoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSwgQVNDSUlMaXRlcmFsKCIx
IikpOwotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJ
TGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIG9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2Vj
dXJpdHktb3JpZ2luIiksIHNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmgKaW5kZXggMWM3NzBiMWFkOTM1ZjQ2OTRlOGNjMDZiM2MyZGU1ZjdkOTYxMTgwNS4uMzM1
MWI3NDA5NGJlNDdlODMwZTM5N2M0MDY4MWJhYTA4Mjk4YjVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVj
dCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
IGZpbmFsIDogcHVibGljIFdlYlByb2Nlc3NQcm94eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0
aWMgUmVmPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
ICAgICB+U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSgpOwogCiAgICAgc3RhdGljIGJvb2wgaGFz
UmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVj
dG9yeSk7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYpOwogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdp
bigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47
IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQ
YWdlSUQ7IH0KIAogcHJpdmF0ZToKQEAgLTU2LDkgKzU2LDkgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
bV9zZWN1cml0eU9yaWdpbjsKICAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAw
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5ZTc4OGY0NzQ3MGU2ZTRlYWIxZmZhOTEwNTM1
YmIwOTc3M2JhMzIwLi41NGEwNzkyOWJlYjg1YTc2YzZjMjk2Zjg0YmQ4Njg0OWZlNGNhZDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVBy
b2Nlc3NQcm94eS5jcHAKQEAgLTEyMiwxNSArMTIyLDE1IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQ
cm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJv
Y2VzCiAgICAgfQogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0g
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2Vj
dXJpdHlPcmlnaW47CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7CiAgICAgICAgIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Pih3ZWJQcm9jZXNzUHJveHkpLm9yaWdpbigpKTsKKyAgICAgICAgc2VjdXJpdHlPcmlnaW4g
PSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oaXNTZXJ2aWNl
V29ya2VyUHJvY2Vzcywgb3JpZ2luKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzLCBzZWN1cml0eU9yaWdpbiksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBTdG9yYWdl
UHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM1MWJmNmFiMjZiNmVlZmQ4M2ZhOTYy
N2E4ZTRjNzY2MjFhMDdmNjYuLjJkZTdkYmEyOGJjODJlMDJjMTI2MDJmMGRmMWQ1OGMzZTQ0NzVl
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU5
MSwxMiArNTkxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hl
ZChTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJvY2Vzc1ByCiB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVByb2Nlc3NQcm94eSYgcHJveHks
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzcyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiBwcm94
eSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJv
eHkgPT0gbV9zdG9yYWdlUHJvY2Vzcyk7CiAKLSAgICBhdXRvIG9yaWdpbiA9IG9yaWdpbkRhdGEu
c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRh
aW5zKG9yaWdpbi5wdHIoKSkpCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250
YWlucyhzZWN1cml0eU9yaWdpbikpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWF5SGF2ZVJl
Z2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5jbGVhcigpOwpAQCAtNjE0LDggKzYxMyw4IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdl
UHJvY2VzcyhTdG9yYWdlUHJvCiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0Vt
cHR5KCkpCiAgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyB7IH0pOwogCi0gICAgYXV0byBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5ID0gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlz
LCBvcmlnaW4uY29weVJlZigpLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmFkZChvcmlnaW4uY29weVJlZigpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LnB0cigpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHNlY3VyaXR5T3JpZ2luLCAqd2Vic2l0
ZURhdGFTdG9yZSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2luKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CiAKICAgICB1
cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHksICp3ZWJzaXRlRGF0YVN0b3JlKTsKQEAgLTk5MCw3ICs5
ODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlz
PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKSkgewotICAgICAgICBhdXRvKiBy
ZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKCZkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5PigqcHJvY2Vzcykub3JpZ2luKCkpOworICAgICAgICBh
dXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCpwcm9jZXNzKS5zZWN1cml0eU9yaWdpbigp
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3Mg
PT0gcHJvY2Vzcyk7CiAgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQpA
QCAtMTg3OCw5ICsxODc3LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fz
c2VydGlvbnMoKQogICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5
KCkgJiYgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9j
ZXNzIHBlciBvcmlnaW4uCiAgICAgICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgb3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPm9yaWdpbigpOwotICAgICAg
ICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nl
cy5jb250YWlucygmb3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9r
ZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoJm9yaWdpbiwgc2VydmljZVdvcmtlclBy
b2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgICAgICAg
ICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnNlY3Vy
aXR5T3JpZ2luKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JT
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAg
ICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5h
ZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fYmFj
a2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE4ODgsOSArMTg4Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHRoYW4gdGhpcyBvbmNl
IHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAgICAgICAgICAgZm9yIChhdXRvKiBzZXJ2
aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5vcmln
aW4oKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuY29udGFpbnMoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1f
YmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKCZvcmlnaW4sIHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9iYWNrZ3Jv
dW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdp
bikpCisgICAgICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFy
KCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCA0NTdmNGM0YjE0MzgwZjZlZDNjYjYyZjFjNWYzNjgxMGIxNTgwMDVkLi44
OTVmYzMzNjk4MGE4YjNkMzg3MjUwMDA2YzQxNmM4OGJjMjVlYTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwog
ICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlG
cm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgY29uc3QgSGFzaE1hcDxSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4m
IHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEs
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtlclByb3hpZXMoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93
c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93
c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wg
YWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KICAgICB2b2lkIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOwpAQCAt
NTE3LDcgKzUxNyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2Vz
c1dpdGhQYWdlQ2FjaGUgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1f
c2VydmljZVdvcmtlclByb2Nlc3NlczsKICAgICBib29sIG1fd2FpdGluZ0ZvcldvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0FueVNTTENl
cnRpZmljYXRlRm9yU2VydmljZVdvcmtlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERp
c2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwpAQCAt
Njc3LDggKzY3Nyw4IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3Vu
ZEFjdGl2aXR5VG9rZW4gbV9mb3JlZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICAgICBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRUb2tl
bkZvck5ldHdvcmtQcm9jZXNzOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNo
TWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRsZXI6OkZv
cmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzOwotICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dyb3VuZFRv
a2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2Vu
PiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nl
c3NlczsKICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBmZDQ4MDRkY2JiZjM1NGRm
Y2IzOWVkMGU5Y2RlNzk4ZmUxMjkxODY5Li43ZjcwMmUxOGViM2E2N2RiZTQ3NmU2OTNhMGY0MjBk
MTNiNGNmNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoRnVuY3Rpb248dm9pZCAoVmVjdG9y
PExvY2FsU3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2Fs
U3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmln
aW4pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29w
aWVkT3JpZ2luID0gc2VjdXJpdHlPcmlnaW4uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDJiMWY4ZGViNmFiZDI5ZDQ1M2I1NDM4NDkx
NzIzNDA4NjM2Yjc2YjUuLjg0MjNiOTkzNDVmOGQ5MTE3MDdlMGY4YjVjNWZlNmFkMDQwZTIzMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlU2Vzc2lv
blN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbnMoRnVuY3Rpb248dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZv
aWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJik7CisgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lu
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgdm9pZCBkZWxldGVM
b2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jiwg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggYzIxNDNmZGRlYzVhNjFhNDBlODY1YTU2ZGM5OWIwYTliMjExMTZlOC4uMGY5ZTlhYzA0NDcz
OWQ5MzVhNTI4MjgxZTc1NGE4NmRhMjZhODYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM0Nyw3
ICszNDcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgV2Vic2l0ZURh
dGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogb3JpZ2lucykgewotICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRy
eSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmln
aW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OworICAgICAgICAgICAgICAgIFdl
YnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZSwgMCB9OwogICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBw
ZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAKICAgICAgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUg
PSBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNp
emVzKSA/IHN0b3JhZ2UtPmRpc2tVc2FnZUZvck9yaWdpbigqb3JpZ2luKSA6IDA7Ci0gICAgICAg
ICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsKKyAgICAgICAgICAgICAgICBXZWJzaXRl
RGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9OwogCiAgICAgICAgICAgICAgICAgd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXgg
OTNiOTM2ZmU1YTIxYzUwNGViMzMxYWMxNWU3ZTM1NGYwZDA2NzRmOS4uMDFmMTM1N2E4ODYzMjcw
MjdhZDE2NWYxZjAzZTgyMjMwYjQ5NWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9u
KEdlb2xvY2F0aW9uCiAKICAgICBTZWN1cml0eU9yaWdpbiYgb3JpZ2luID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRp
b25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JG
cmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLmRh
dGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI6OmNhbmNlbFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbiYgZ2Vv
bG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDViMzBmMzg3MzkzM2Iw
YzEwMDQ2YzJkNmM5ZjhmODgzMDkwZjE1Y2IuLjhmNWQ2MWJmNzFjNzIyMjZhN2IwOTFlM2RiMzk0
NzhiZmQzYWYzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02OTMsNyArNjkz
LDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIG9yaWdpbklkZW50aWZpZXJzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBv
cmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBl
bmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgICAgICBv
cmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShvcmln
aW4tPmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogCiAgICAgcmV0dXJuIHRvQVBJKCZB
UEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW5JZGVudGlmaWVycykpLmxlYWtSZWYoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmlu
ZGV4IGU0ZDM3YTIzNmNjYzAyZmI0NTg0YjZlMzZiMWJjNDhkOTU4ZTc0NGEuLjljY2FjZTA1Nzdj
N2ZiYzhmZjU3MDZiZGZhZDkzZTQzN2NjNmUxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZW5kVXNlck1lZGlhUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0JiB1CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIGF1dG8qIHRvcExldmVs
RG9jdW1lbnRPcmlnaW4gPSB1c2VyUmVxdWVzdC50b3BMZXZlbERvY3VtZW50T3JpZ2luKCk7Ci0g
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFVzZXJNZWRpYVBl
cm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp1c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1
bWVudE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRv
cExldmVsRG9jdW1lbnRPcmlnaW4pLCB1c2VyUmVxdWVzdC5yZXF1ZXN0KCkpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lv
bkZvckZyYW1lKHJlcXVlc3RJRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgdXNlclJlcXVlc3QudXNl
ck1lZGlhRG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLT5k
YXRhKCksIHVzZXJSZXF1ZXN0LnJlcXVlc3QoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1
ZXN0JiByZXF1ZXN0KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyOjplbnVtZXJhdGVNZWRpYURldmljZXMoTWVkaWFEZXZpY2VzRW51bWVy
CiAKICAgICBTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiA9IHJlcXVlc3Qu
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwogICAgIEFTU0VSVCh0b3BMZXZlbERvY3VtZW50T3Jp
Z2luKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbnVtZXJhdGVN
ZWRpYURldmljZXNGb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpyZXF1ZXN0LnVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbikpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1l
LT5mcmFtZUlEKCksIHJlcXVlc3QudXNlck1lZGlhRG9jdW1lbnRPcmlnaW4oKS0+ZGF0YSgpLCB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLT5kYXRhKCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNlbE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCmluZGV4IDFlMjIxMmUwNThlYWU4MTQ0NTRkYmZiYmQ5NmUzNTc5YmVjNTFlODcuLjU4
OTg0MDJjMzE0OWNjYjM0OTM3MTYzNmIwNzIxYTYxZjk3OTRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKICNp
bmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGQKIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BPcmlnaW4pLCBkYXRhLCBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIH0pOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsg
dG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBjb250ZXh0SWRlbnRp
ZmllcikKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0
Y2hSZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgYwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsK
KyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMXSgpIG11dGFi
bGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJ
ZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChj
YWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKQEAgLTE3Miw3ICsxNzMsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lk
ZW50aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNrcy5hZGQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5KGNhbGxiYWNrSUQsIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGNsaWVudFVSTCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJl
YWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTCkpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRp
b25EYXRhKQpAQCAtMTkxLDcgKzE5Miw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpn
ZXRSZWdpc3RyYXRpb25zKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4odG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUg
eworICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkxdKCkgbXV0
YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFj
a0lkZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQo
Y2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFJlZ2lzdHJhdGlvbnMoY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDdiNGRiYjgyM2I1
YWVhYTFkN2UzMDVkODJhM2VjM2ExNzk3OTA3My4uZDRlZWUzMmM5ZGI5MTcyY2ZjOTA0YjBlZjRk
YjY0YjM2NjI0ZDAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTczMSwxNyArNzMxLDE3
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZy
YW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKICAgICAK
ICAgICBhdXRvJiBvcmlnaW4gPSBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwot
ICAgIGF1dG8gb3JpZ2luRGF0YSA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3Jp
Z2luKG9yaWdpbik7CisgICAgYXV0byYgb3JpZ2luRGF0YSA9IG9yaWdpbi5kYXRhKCk7CiAgICAg
YXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCk7CiAgICAgYXV0byBj
dXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwogICAgIGF1dG8gY3VycmVu
dE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsKICAgICB1aW50NjRfdCBu
ZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bihvcmlnaW4pLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
UmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERh
dGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwg
ZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwg
ZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwogCiAgICAg
aWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YSh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pLmRhdGFiYXNlSWRlbnRp
ZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3Rh
LCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhw
ZWN0ZWRVc2FnZSgpKSwKKyAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW5EYXRhLmRhdGFiYXNl
SWRlbnRpZmllcigpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVu
dFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFp
bHMuZXhwZWN0ZWRVc2FnZSgpKSwKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2UucGFnZUlEKCks
IFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3Jt
UHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKQEAgLTc2Niw3ICs3NjYsNyBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLAogCiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKAot
ICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiku
ZGF0YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCksCisg
ICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEob3JpZ2luLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgY3VycmVudFF1b3Rh
LCB0b3RhbEJ5dGVzTmVlZGVkKSwKICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2Uu
cGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9y
bVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKIAogICAgIGNhY2hlU3RvcmFnZS5zdG9yZVVw
ZGF0ZWRRdW90YUZvck9yaWdpbigmb3JpZ2luLCBuZXdRdW90YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAzZmJiMTdkMTI1MjU5MmZjZDk4M2NhYzY2ZDY3OGZlYTI4M2Ey
ZmRkLi5lZTgzOTdjYjVlZmE1NzIyZWRjN2RkM2RkYmY3ZTQxN2VjZjY4ZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgTmF2aWdhdAogICAgIEZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhOwog
ICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSA9IG5hdmlnYXRpb25BY3Rp
b24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzOwog
ICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHNv
dXJjZURvY3VtZW50LnVybCgpKTsKLSAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuc2VjdXJp
dHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihzb3VyY2VE
b2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
c2VjdXJpdHlPcmlnaW4gPSBzb3VyY2VEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsK
ICAgICBpZiAob3JpZ2luYXRpbmdGcmFtZSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLmZyYW1lSUQgPSBvcmlnaW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBiNmZkZjBhN2JjZGVjNDMzYTZkODAzNzQ2
NTNmN2E0NWExY2U3YWQ3Li42YzdmYzk4M2E2NWE5NTkwYjVlZDg0Mjc4NzQ4ODU3MTM0NTkwZjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMjczLDcgKzEy
NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdAogewogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLm9yaWdpbnNXaXRoQ2Fj
aGUoc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdl
YnNpdGVEYXRhOjpFbnRyeSB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOworICAgICAgICAg
ICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2lu
LT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQogCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50
aWFscykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGMzMGRmZWQzOGFmNTQyNzU0NDUyNDdjMWYyNjI0
NzY1N2RhMWQ5YzUuLjVkNWMyYmMwNWZjNjBjNGUyZjcwY2NiYWFkOTBiNzk1NTUyZDgxYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgU3RvcmFnZUFyZWFJbXBsOjpj
bG9zZURhdGFiYXNlSWZJZGxlKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIFN0b3JhZ2VBcmVhSW1wbDo6c2VjdXJpdHlPcmlnaW4o
KSBjb25zdAorY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBTdG9yYWdlQXJlYUltcGw6OnNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zdG9yYWdlQXJlYU1hcC0+c2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggNDMzYzQ4NzM4M2M0
ODM2MzVhYzZmMzI0NDY1NTM1OGJlZjU3NDk4MS4uMTY1YWY0NGQ5MDE4YjliOWQxM2Y3M2ZjZTg0
NDczOTJjZDE4MzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZWNyZW1l
bnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgp
IG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdp
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVpbnQ2NF90IG1fc3Rv
cmFnZUFyZWFJRDsKICAgICBSZWY8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKaW5kZXggYTI2NTBkMWIzZWJmYzcyOGMyNzVlZTAxMGJmZWEzYTI2OGIwYjg4Ni4u
NDcxM2FjNGI3ZTFjNzhlMTMyMmY0OWYyYjU1ZmM4MzkyNjViODEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApA
QCAtNzQsMTQgKzc0LDE0IEBAIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdl
TmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvCiAgICAgY2FzZSBTdG9y
YWdlVHlwZTo6TG9jYWw6CiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CiAg
ICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBzdG9yYWdlTmFtZXNw
YWNlLT50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFn
ZXI6OkNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFn
ZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCp0b3BMZXZlbE9yaWdpbiksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKSwgMCk7CisgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKG1fc3Rv
cmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2
ZWxPcmlnaW4tPmRhdGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVMb2NhbFN0
b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5
T3JpZ2luKSksIDApOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0
ZUxvY2FsU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFn
ZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOwogCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElE
LCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikpLCAwKTsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKG1fc3RvcmFn
ZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKSwgMCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWw6CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBTdG9yYWdlQXJl
YU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIGMKICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CiAgICAgfQogCi0gICAgU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVz
KCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKTsKKyAg
ICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9G
cmFtZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywg
bV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBT
dG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCBjb24KICAgICAgICAgfQogICAgIH0KIAotICAgIFN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdyb3VwLCBm
cmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBTdG9yYWdl
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VH
cm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3Vy
aXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcAppbmRleCAyMWZkNTg3MDg4MDFjMDhmNmMxNTZmMDk1NGM4ODYzZDA0NmU5
MWNjLi4yZjFjZDA3YTdhZGQxZTZhNTBlOGEyODlhYjlhZWJiNzNhMTc0YTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWRE
ZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKIHsKLSAgICBtX3N0b3Jh
Z2VBcmVhTWFwcy5yZW1vdmUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
bWFwLnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFw
LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAogUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBz
ZWN1cml0eU9yaWdpbikKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVj
cmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSB7
IH0KIAotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0CisgICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9zZWN1cml0eU9yaWdpbkRhdGE7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDE2NDc3MjI3ODRjYmE0
Y2UzYWRiZjFlMTIyYWFiZjBlNjAzOTVlYzkuLjM4NmQ0OGQ5OTAyNmJjMWIxNzFkYTFiZTZkNjY0
M2ZmMDQwNmZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50QWNj
ZXNzQ291bnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVy
cmlkZTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiAgICAgUmVmPFN0b3JhZ2VBcmVhSW1w
bD4gY29weSgpOwogICAgIHZvaWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGQ1ZTVmNzQ3N2U4MzNkMjRjZWIzYmExOTI4
ZjFkMWMxNjkyZmVhYmEuLmRkYmRiMjJlYTBmYTBkYzRiMWNiZDVhNmZjNmY4ODY1YjhhZWExMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApA
QCAtNjM3LDcgKzYzNyw3IEBAIGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2RhdGFiYXNlTXV0ZXgpOwogCi0gICAgU3RyaW5nIHBhdGggPSBkYXRhYmFzZVBhdGhGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2lu
KG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCmluZGV4IDc2YzI4ZjRkZGJmNzQ5
ZWYwZGFiMjE5MDQ4Y2VkMjEyYTlkMDBiZGUuLjAwNTFmNTgyZGQ1NDYyZmRmZTVmZjgzN2UwYzE5
YTA2NDAxMDdkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgLSAoTlNBcnJheSAq
KWRhdGFiYXNlc1dpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7CiAgICAg
aWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgVmVjdG9yPFN0cmluZz4gbmFt
ZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24o
KS5kYXRhYmFzZU5hbWVzKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkpOwogICAgIE5TTXV0YWJsZUFy
cmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFt
ZVZlY3Rvci5zaXplKCldOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG5hbWVWZWN0b3IpCiAgICAg
ICAgIFtuYW1lcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopbmFtZV07CkBAIC0xNDIsMTIgKzE0Miwx
MiBAQCAtICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogCiAtIChCT09MKWRlbGV0ZU9yaWdpbjoo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gb3JpZ2luICYmIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSkpOworICAgIHJldHVybiBvcmlnaW4g
JiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29y
ZV0tPmRhdGEoKSk7CiB9CiAKIC0gKEJPT0wpZGVsZXRlRGF0YWJhc2U6KE5TU3RyaW5nICopZGF0
YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7
Ci0gICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0
ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2lu
IF9jb3JlXSksIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIG9yaWdpbiAmJiBEYXRh
YmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKFtvcmlnaW4gX2NvcmVdLT5k
YXRhKCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKIC8vIEZvciBEdW1wUmVuZGVyVHJlZSBz
dXBwb3J0IG9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCmluZGV4IDliODQxODYwMmU1OWExY2E5ZjJj
YzllNDg4YjY4ZGU2NjZjYjIyMjEuLjEwOGM1Mjg3ZjkwN2U4MWE2MWEwMWFhNzI0MjNjOTYwNzk1
MGJjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VRdW90YU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQpAQCAtNTMsMTIgKzUzLDEyIEBAIC0gKFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luCiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogewot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29yZV0pKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShbX29yaWdpbiBfY29yZV0tPmRh
dGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewotICAgIHJldHVybiBE
YXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKCpbX29yaWdpbiBfY29yZV0pKTsKKyAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShbX29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAK
IC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50
IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKQEAgLTY2LDcgKzY2LDcgQEAgLSAodW5zaWduZWQgbG9u
ZyBsb25nKXF1b3RhCiAvLyBwcmV2ZW50IG5ldyBkYXRhIGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0
YWJhc2VzIGluIHRoYXQgb3JpZ2luLgogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBs
b25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSwg
cXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoW19vcmln
aW4gX2NvcmVdLT5kYXRhKCksIHF1b3RhKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KaW5kZXggOWE2ODlj
YTU1OTQ3M2VkM2IwMTU0YWE5NWNlYzZlNTFmYTlhN2Q3MC4uNmU1N2VjYjM0ODliNWEyZDQ3NGZh
ODVlY2FlZTdkNjcyYjVjMzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBAIC04NCw3ICs4NCw3IEBAIC0gKHZvaWQp
ZGVsZXRlQWxsT3JpZ2lucwogCiAtICh2b2lkKWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KIHsKLSAgICBXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVs
ZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpbb3JpZ2lu
IF9jb3JlXSkpOworICAgIFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVP
cmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9y
aWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tCmluZGV4IDRmNDI0ODM3ZGVhOGE5YTJjNGQ1N2NhZjZjODNkYWFmODRlNzJh
NjEuLjRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2FlNDkyNDI5ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tCkBAIC03MSw3ICs3MSw3IEBAIC0gKE5TU3RyaW5nICopaG9zdAogCiAtIChO
U1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgogewotICAgIHJldHVybiBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdp
bio+KF9wcml2YXRlKSkuZGF0YWJhc2VJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKS5kYXRhYmFzZUlkZW50
aWZpZXIoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE2OSwxNyArMTY5LDE3IEBAIEBp
bXBsZW1lbnRhdGlvbiBXZWJTZWN1cml0eU9yaWdpbiAoRGVwcmVjYXRlZCkKIAogLSAodW5zaWdu
ZWQgbG9uZyBsb25nKXVzYWdlCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkudXNhZ2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50
ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpKTsKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5
T3JpZ2luKj4oX3ByaXZhdGUpLT5kYXRhKCkpOwogfQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcp
cXVvdGEKIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSkpOworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6
OnNpbmdsZXRvbigpLnF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSktPmRhdGEoKSk7CiB9CiAKIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpLCBxdW90YSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3By
aXZhdGUpLT5kYXRhKCksIHF1b3RhKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggZmI1NDQwODAyMGEwNzIzNWFmNmFl
NGU0NWNiZjIxYTI5NDhlNGE2NC4uMzYwNTYyMzU4NDkxYjUyZDQ1NGY1ZjNjNjFmMTMzNjFiZTg4
MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFi
YXNlc1dpdGhPcmlnaW4oX0luX29wdF8gSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmkKICAgICBpZiAo
IXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBk
YXRhYmFzZU5hbWVzID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kYXRhYmFzZU5hbWVz
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGF1dG8gZGF0YWJhc2VOYW1lcyA9IERhdGFiYXNl
VHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyh3ZWJTZWN1cml0eU9yaWdpbi0+c2Vj
dXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKIAogICAgIENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0
b3I8U3RyaW5nPj4+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxWZWN0b3I8
U3RyaW5nPj46OmFkb3B0KGRhdGFiYXNlTmFtZXMpKTsKIApAQCAtMzExLDcgKzMxMSw3IEBAIEhS
RVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oX0luX29wdF8gSVdlYlNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRl
T3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0
eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLT5k
YXRhKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMzEsNyArMzMxLDcgQEAgSFJFU1VM
VCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKF9Jbl8gQlNUUiBkYXRhYmFzZU5h
bWUsIF9Jbl9vcHRfIElXZWIKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpLCBTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJp
bmdMZW4oZGF0YWJhc2VOYW1lKSkpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCku
ZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEo
KSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpKTsKIAog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtMzk2LDcgKzM5Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJh
c2VNYW5hZ2VyOjpzZXRRdW90YShfSW5fIEJTVFIgb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcg
cXVvdGEpCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNl
dFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikpLCBxdW90YSk7CisgICAgRGF0YWJhc2VUcmFj
a2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhvcmlnaW4pLT5kYXRhKCksIHF1b3RhKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDkwNmNiYmE1
MWRjNzU0OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcuLjgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5
MmZjNzZjYzQ5YjBlYTBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3Jp
Z2luOjp1c2FnZShfT3V0XyB1bnNpZ25lZCBsb25nIGxvbmcqIHJlc3VsdCkKICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlVHJh
Y2tlcjo6c2luZ2xldG9uKCkudXNhZ2UobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpAQCAtMTQwLDEzICsxNDAsMTMgQEAgSFJFU1VMVCBXZWJTZWN1cml0
eU9yaWdpbjo6cXVvdGEoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikpOworICAgICpyZXN1bHQgPSBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3RhKG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgICAgIAogSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6
c2V0UXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSAKIHsKLSAgICBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSwgcXVvdGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6
c2luZ2xldG9uKCkuc2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBxdW90YSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>