<?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>207692</bug_id>
          
          <creation_ts>2020-02-13 05:52:59 -0800</creation_ts>
          <short_desc>[Curl] Implement functions to use ResourceLoadStatistics.</short_desc>
          <delta_ts>2020-06-12 12:47:21 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Komori">takashi.komori</reporter>
          <assigned_to name="Takashi Komori">takashi.komori</assigned_to>
          <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>chris.reid</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>takashi.komori</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1618456</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-13 05:52:59 -0800</bug_when>
    <thetext>Implement functions to use ResouceLoadStatistics on curl port.
In this ticket we aim to pass all ResourceLoadStatistics tests on curl port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618457</commentid>
    <comment_count>1</comment_count>
      <attachid>390635</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-02-13 05:58:12 -0800</bug_when>
    <thetext>Created attachment 390635
Implement some functions for ResouceLoadStatistics.

We implement some functions for curl port while refferring cocoa port.
Now 150 ResourceLoadStatistics tests pass and 11 tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618576</commentid>
    <comment_count>2</comment_count>
      <attachid>390635</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-02-13 10:29:41 -0800</bug_when>
    <thetext>Comment on attachment 390635
Implement some functions for ResouceLoadStatistics.

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

A couple of nitpicks from me.

&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:60
&gt; +    bool blockCookies = false;
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; +    blockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless || shouldBlockCookies(request);
&gt; +#endif

nit: Seems like an #else would be slightly better here.

&gt; Tools/WebKitTestRunner/TestController.cpp:3115
&gt; +    explicit GetAllStorageAccessEntriesCallbackContext(TestController&amp; controller, CompletionHandler&lt;void(Vector&lt;String&gt;&amp;&amp;)&gt;&amp;&amp; handler)

nit: You shouldn&apos;t need `explicit` since this has two parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618592</commentid>
    <comment_count>3</comment_count>
      <attachid>390635</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2020-02-13 10:55:55 -0800</bug_when>
    <thetext>Comment on attachment 390635
Implement some functions for ResouceLoadStatistics.

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

&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:59
&gt; +    blockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless || shouldBlockCookies(request);

Looking at the usage, is there a case where we want to separate the comparison with WebCore::StoredCredentialsPolicy::EphemeralStateless and the value of shouldBlockCookies(request)?
I wonder if it&apos;d make sense to check the credentials policy inside shouldBlockCookies to prevent the possibility of misuse if the m_storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless type comparsion is always required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657818</commentid>
    <comment_count>4</comment_count>
      <attachid>400716</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-05-31 18:55:41 -0700</bug_when>
    <thetext>Created attachment 400716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657824</commentid>
    <comment_count>5</comment_count>
      <attachid>400719</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-05-31 21:00:32 -0700</bug_when>
    <thetext>Created attachment 400719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657830</commentid>
    <comment_count>6</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-05-31 21:34:46 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #2)
&gt; Comment on attachment 390635 [details]
&gt; Implement some functions for ResouceLoadStatistics.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390635&amp;action=review
&gt; 
&gt; A couple of nitpicks from me.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:60
&gt; &gt; +    bool blockCookies = false;
&gt; &gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; &gt; +    blockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless || shouldBlockCookies(request);
&gt; &gt; +#endif
&gt; 
&gt; nit: Seems like an #else would be slightly better here.

I didn&apos;t add else part because now all lines are inside if clause.
Is it okay?

&gt; &gt; Tools/WebKitTestRunner/TestController.cpp:3115
&gt; &gt; +    explicit GetAllStorageAccessEntriesCallbackContext(TestController&amp; controller, CompletionHandler&lt;void(Vector&lt;String&gt;&amp;&amp;)&gt;&amp;&amp; handler)
&gt; 
&gt; nit: You shouldn&apos;t need `explicit` since this has two parameters.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657863</commentid>
    <comment_count>7</comment_count>
      <attachid>400727</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-01 02:52:21 -0700</bug_when>
    <thetext>Created attachment 400727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657864</commentid>
    <comment_count>8</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-01 02:56:26 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #3)
&gt; Comment on attachment 390635 [details]
&gt; Implement some functions for ResouceLoadStatistics.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390635&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:59
&gt; &gt; +    blockCookies = storedCredentialsPolicy == WebCore::StoredCredentialsPolicy::EphemeralStateless || shouldBlockCookies(request);
&gt; 
&gt; Looking at the usage, is there a case where we want to separate the
&gt; comparison with WebCore::StoredCredentialsPolicy::EphemeralStateless and the
&gt; value of shouldBlockCookies(request)?
&gt; I wonder if it&apos;d make sense to check the credentials policy inside
&gt; shouldBlockCookies to prevent the possibility of misuse if the
&gt; m_storedCredentialsPolicy ==
&gt; WebCore::StoredCredentialsPolicy::EphemeralStateless type comparsion is
&gt; always required.

We put together comparing StoredCredentialsPolicy and calling NetworkStorageSession::shouldBlockCookies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658557</commentid>
    <comment_count>9</comment_count>
      <attachid>400727</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-06-02 18:54:45 -0700</bug_when>
    <thetext>Comment on attachment 400727
Patch

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

This is informal review: LGTM excepts for tiny documentation improvement.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Implement functions which are required to implement ResourceLoadStatistics for wincairo.

This patch seems neutral to all ports using Curl. WinCairo shouldn&apos;t be specified as the target of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658561</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-06-02 18:59:35 -0700</bug_when>
    <thetext>It is not the comment for this patch, but adding more comment makes easier to understand the intent of the patch, especially the patch contains both WebKit and WebCore, WTF. Basically what you write is the objective of the patch and that is true for WebKit for many cases. For WebCore/WTF, to achieve that goal please describe what you did on that layer more specifically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659279</commentid>
    <comment_count>11</comment_count>
      <attachid>400727</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-04 13:13:09 -0700</bug_when>
    <thetext>Comment on attachment 400727
Patch

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

LGTM. See my one comment though. I&apos;ll let someone more familiar with the Curl integration to make the final call.

&gt; Source/WebCore/platform/network/curl/CookieJarDB.cpp:622
&gt; +bool CookieJarDB::deleteCookiesForHostname(const String&amp; hostname, bool includeHttpOnlyCookies)

Why switch to a bool here when we have the IncludeHttpOnlyCookies enum that helps with self documentation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659500</commentid>
    <comment_count>12</comment_count>
      <attachid>401123</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-05 00:26:34 -0700</bug_when>
    <thetext>Created attachment 401123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659507</commentid>
    <comment_count>13</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-05 00:36:58 -0700</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #9)
&gt; Comment on attachment 400727 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400727&amp;action=review
&gt; 
&gt; This is informal review: LGTM excepts for tiny documentation improvement.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Implement functions which are required to implement ResourceLoadStatistics for wincairo.
&gt; 
&gt; This patch seems neutral to all ports using Curl. WinCairo shouldn&apos;t be
&gt; specified as the target of this patch.

Thank you for your review.
Changed to curl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659509</commentid>
    <comment_count>14</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-05 00:42:21 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #11)
&gt; Comment on attachment 400727 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400727&amp;action=review
&gt; 
&gt; LGTM. See my one comment though. I&apos;ll let someone more familiar with the
&gt; Curl integration to make the final call.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/CookieJarDB.cpp:622
&gt; &gt; +bool CookieJarDB::deleteCookiesForHostname(const String&amp; hostname, bool includeHttpOnlyCookies)
&gt; 
&gt; Why switch to a bool here when we have the IncludeHttpOnlyCookies enum that
&gt; helps with self documentation?

Thank you very much for the review.
There is no reason using bool value so we changed to IncludeHttpOnlyCookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660629</commentid>
    <comment_count>15</comment_count>
      <attachid>401426</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-09 01:58:37 -0700</bug_when>
    <thetext>Created attachment 401426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660631</commentid>
    <comment_count>16</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-09 02:01:06 -0700</bug_when>
    <thetext>We found we can improve some tests by implementing getHostnamesWithCookies.
So we updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660686</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-09 07:50:54 -0700</bug_when>
    <thetext>Committed r262791: &lt;https://trac.webkit.org/changeset/262791&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401426.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660687</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-09 07:51:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/64163880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660688</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-09 07:51:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/64163879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661073</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-06-09 21:10:36 -0700</bug_when>
    <thetext>Committed r262834: &lt;https://trac.webkit.org/changeset/262834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661295</commentid>
    <comment_count>21</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-10 12:42:55 -0700</bug_when>
    <thetext>Reopen to fix WK1 crash bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661299</commentid>
    <comment_count>22</comment_count>
      <attachid>401571</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-10 12:48:55 -0700</bug_when>
    <thetext>Created attachment 401571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661309</commentid>
    <comment_count>23</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-10 13:10:17 -0700</bug_when>
    <thetext>In WK1 some tests crashes because the value passed to NetworkStorageSession::clientSideCookieCap was uninitialized value.
We should not have dereferenced the variable.

This patch fixes the crash and fixes another compile issue that If we disable ENABLE_RESOURCE_LOAD_STATISTICS option, the build fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662057</commentid>
    <comment_count>24</comment_count>
      <attachid>401753</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-06-12 11:24:25 -0700</bug_when>
    <thetext>Created attachment 401753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662099</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-12 12:47:20 -0700</bug_when>
    <thetext>Committed r262971: &lt;https://trac.webkit.org/changeset/262971&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401753.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390635</attachid>
            <date>2020-02-13 05:58:12 -0800</date>
            <delta_ts>2020-05-31 18:55:39 -0700</delta_ts>
            <desc>Implement some functions for ResouceLoadStatistics.</desc>
            <filename>resource-load-statistics-0213.diff</filename>
            <type>text/plain</type>
            <size>33992</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDY4NmI3YzlkMTc1Li44M2ZmZTIxOTFlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjY0LDkgKzEyNjQsMjEgQEAgaHR0cC90ZXN0
cy9yZWZlcnJlci1wb2xpY3kvbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUvIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUtdXJsL2Nyb3NzLW9yaWdpbi1odHRwLWh0
dHAuaHRtbCBbIFNraXAgXSAKIGh0dHAvdGVzdHMvcmVmZXJyZXItcG9saWN5L3Vuc2FmZS11cmwv
Y3Jvc3Mtb3JpZ2luLWh0dHAuaHR0cHMuaHRtbCBbIFNraXAgXSAKIAotIyBBbGwgdGltaW5nIG91
dAotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFsgU2tpcCBdCisjIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MKK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFBhc3Mg
XQorI2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1ub3QtcmVtb3ZlLWJsb2Nr
aW5nLWluLXJlZGlyZWN0LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KKyNodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1s
IFsgU2tpcCBdCisjaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVy
cmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLmh0bWwgWyBTa2lwIF0KKyNo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2lu
LWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgU2tpcCBdCisjaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFs
ZW50LXdpdGgtaW50ZXJhY3Rpb24tZGF0YWJhc2UucGhwIFsgU2tpcCBdCisjaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJl
dmFsZW50LXdpdGgtaW50ZXJhY3Rpb24ucGhwIFsgU2tpcCBdCisjaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgWyBTa2lwIF0KKyNodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9y
dGVkLW9uY2Utd2l0aGluLXNob3J0LXBlcmlvZC1vZi10aW1lLWRhdGFiYXNlLmh0bWwgWyBTa2lw
IF0KKyNodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1v
bmx5LXJlcG9ydGVkLW9uY2Utd2l0aGluLXNob3J0LXBlcmlvZC1vZi10aW1lLmh0bWwgWyBTa2lw
IF0KKyNodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1y
ZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBd
CisjaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVw
b3J0ZWQtYWZ0ZXItd2Vic2l0ZS1kYXRhLXJlbW92YWwuaHRtbCBbIFNraXAgXQogCisjIEFsbCB0
aW1pbmcgb3V0CiBodHRwL3Rlc3RzL3NlY3VyaXR5IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5LzQwMS1sb2dvdXQvNDAxLWxvZ291dC5waHAgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcuaHRtbCBbIFBhc3MgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAxNzhkZmYzYzQ2Yy4uODhlNzYwNzY4N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC03MDEsNiArNzAxLDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKICAgICBkb20vRG9jdW1lbnRGdWxsc2Ny
ZWVuLmlkbAogICAgIGRvbS9Eb2N1bWVudE9yU2hhZG93Um9vdC5pZGwKKyAgICBkb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmlkbAogICAgIGRvbS9Eb2N1bWVudFRvdWNoLmlkbAogICAgIGRvbS9E
b2N1bWVudFR5cGUuaWRsCiAgICAgZG9tL0RyYWdFdmVudC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAppbmRleCA1
ZWNiYTY2ZWY5NC4uM2JlYjliMDAwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTM5LDggKzM5LDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKK3N0YXRpYyBTdHJpbmcg
Y29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+JiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mIHBhZ2VJRCwgYm9vbCBm
b3JIVFRQSGVhZGVyKQogeworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgaWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJ
RCwgcGFnZUlEKSkKKyAgICAgICAgcmV0dXJuICIiOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CisjZW5kaWYKKwogICAgIFN0cmlu
Z0J1aWxkZXIgY29va2llczsKIAogICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Np
b24uY29va2llRGF0YWJhc2UoKTsKQEAgLTU5LDEyICs2NywxMiBAQCBzdGF0aWMgU3RyaW5nIGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ29va2ll
SmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgQ29va2llSmFy
Q3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVk
TGlmZXRpbWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogCiAgICAgQ29v
a2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGNv
b2tpZUphckRCLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJEQjo6
U291cmNlOjpTY3JpcHQpOworICAgIGNvb2tpZUphckRCLnNldENvb2tpZShmaXJzdFBhcnR5LCB1
cmwsIHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsK
IH0KIAogdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC03NSwyMCArODMs
MTQgQEAgdm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3MKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Q29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwotCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhl
IGNhbGxlciByZXF1ZXN0cyBpdC4KLSAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKKyAgICByZXR1cm4geyBjb29r
aWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
ZmFsc2UpLCBmYWxzZSB9OwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJD
dXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwotCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQg
aWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KLSAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lv
bihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHRydWUpLCBmYWxzZSB9OworICAgIHJldHVybiB7
IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCB0cnVlKSwgZmFsc2UgfTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYg
aGVhZGVyRmllbGRQcm94eSkgY29uc3QKQEAgLTExNCw4ICsxMTYsMTMgQEAgYm9vbCBDb29raWVK
YXJDdXJsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24pIGNvbnN0CiAKIGJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpIGNvbnN0CiB7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBm
cmFtZUlELCBwYWdlSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyNlbmRpZgogCiAg
ICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwog
ICAgIGlmIChhdXRvIGNvb2tpZXMgPSBjb29raWVKYXJEQi5zZWFyY2hDb29raWVzKGZpcnN0UGFy
dHksIHVybCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpIHsKQEAg
LTEzMSwxNCArMTM4LDE4IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6ZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMCiAgICAgY29va2llSmFy
REIuZGVsZXRlQ29va2llKHVybCwgbmFtZSk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNl
dDxTdHJpbmc+JikgY29uc3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAorICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2Uo
KTsKKyAgICBmb3IgKGF1dG8gZG9tYWluIDogY29va2llSmFyREIuYWxsRG9tYWlucygpKQorICAg
ICAgICBob3N0bmFtZXMuYWRkKGRvbWFpbik7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Cit2b2lkIENvb2tpZUphckN1cmw6OmRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVz
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKKyAgICBDb29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tp
ZURhdGFiYXNlKCk7CisgICAgZm9yIChhdXRvIGhvc3QgOiBjb29raWVIb3N0TmFtZXMpCisgICAg
ICAgIGNvb2tpZUphckRCLmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0LCBpbmNsdWRlSHR0
cE9ubHlDb29raWVzID09IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olllcyk7CiB9CiAKIHZvaWQg
Q29va2llSmFyQ3VybDo6ZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAppbmRleCA1ZTk3NGY1ZmJkYi4uMWFjNjg0OGExMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJDdXJsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckN1cmwuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBh
Z2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ1LDcgKzQ2LDcg
QEAgY2xhc3MgQ29va2llSmFyQ3VybCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxTZWNvbmRzPikgY29u
c3Q7CiAgICAgdm9pZCBzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgQ29va2ll
QWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKSBjb25zdDsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBWZWN0b3I8Q29va2llPiYpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+
JiBob3N0bmFtZXMpIGNvbnN0OwotICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2ll
SG9zdE5hbWVzKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhv
c3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcykgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVB
bGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0OwogICAgIHZvaWQg
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgV2FsbFRpbWUpIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDEwMTYyNGYyOTAwLi5hMTYwNjE2
YjAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCkBAIC02MSw2ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAiQ1JFQVRFIElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21h
aW4pOyIKICNkZWZpbmUgQ1JFQVRFX1BBVEhfSU5ERVhfU1FMIFwKICAgICAiQ1JFQVRFIElOREVY
IElGIE5PVCBFWElTVFMgcGF0aF9pbmRleCBPTiBDb29raWUocGF0aCk7IgorI2RlZmluZSBTRUxF
Q1RfQUxMX0RPTUFJTlNfU1FMIFwKKyAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENv
b2tpZTsiCiAjZGVmaW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKICAgICAiU0VMRUNUIGRv
bWFpbiBGUk9NIENvb2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7
IgogI2RlZmluZSBDSEVDS19FWElTVFNfSFRUUE9OTFlfQ09PS0lFX1NRTCBcCkBAIC03NCw2ICs3
NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVS
RSBuYW1lID0gPyBBTkQgZG9tYWluID0gPzsiCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lPTl9D
T09LSUVfU1FMIFwKICAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyIK
KyNkZWZpbmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NRTCBcCisgICAgIkRFTEVURSBGUk9N
IENvb2tpZSBXSEVSRSBkb21haW4gPSA/IDsiCisjZGVmaW5lIERFTEVURV9DT09LSUVTX0JZX0RP
TUFJTl9FWENFUFRfSFRUUF9PTkxZX1NRTCBcCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVS
RSAoZG9tYWluID0gPykgQU5EIChodHRwb25seSA9IDApOyIKICNkZWZpbmUgREVMRVRFX0FMTF9D
T09LSUVfU1FMIFwKICAgICAiREVMRVRFIEZST00gQ29va2llOyIKIApAQCAtMTYzLDYgKzE2OSw4
IEBAIGJvb2wgQ29va2llSmFyREI6Om9wZW5EYXRhYmFzZSgpCiAgICAgY3JlYXRlUHJlcGFyZVN0
YXRlbWVudChDSEVDS19FWElTVFNfSFRUUE9OTFlfQ09PS0lFX1NRTCk7CiAgICAgY3JlYXRlUHJl
cGFyZVN0YXRlbWVudChERUxFVEVfQ09PS0lFX0JZX05BTUVfRE9NQUlOX1BBVEhfU1FMKTsKICAg
ICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVfQllfTkFNRV9ET01BSU5fU1FM
KTsKKyAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9T
UUwpOworICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRVNfQllfRE9NQUlO
X0VYQ0VQVF9IVFRQX09OTFlfU1FMKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDk2LDcg
KzUwNCw3IEBAIGJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tp
ZSkKICAgICByZXR1cm4gY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5zdGVwKCkpOwog
fQogCi1ib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBib2R5LCBDb29raWVKYXJEQjo6U291cmNlIHNv
dXJjZSkKK2Jvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjpTb3VyY2Ug
c291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKICAgICBpZiAoIWlz
RW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC01MTcsOSArNTI1LDMxIEBAIGJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFj
YW5BY2NlcHRDb29raWUoKmNvb2tpZSwgZmlyc3RQYXJ0eSwgdXJsLCBzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoY2FwcGVkTGlmZXRpbWUpIHsKKyAgICAgICAgQVNT
RVJUKCpjYXBwZWRMaWZldGltZSA+PSAwX3MpOworICAgICAgICBhdXRvIGNhcHBlZEV4cGlyZXMg
PSBXYWxsVGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7CisgICAgICAgIGlmIChjYXBwZWRF
eHBpcmVzIDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGNvb2tpZS0+ZXhwaXJlcykpCisgICAg
ICAgICAgICBjb29raWUtPmV4cGlyZXMgPSBjYXBwZWRFeHBpcmVzLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpOworICAgIH0KKwogICAgIHJldHVybiBzZXRDb29raWUoKmNvb2tpZSk7CiB9
CiAKK0hhc2hTZXQ8U3RyaW5nPiBDb29raWVKYXJEQjo6YWxsRG9tYWlucygpCit7CisgICAgU1FM
aXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCBTRUxFQ1RfQUxMX0RPTUFJTlNfU1FM
KTsKKyAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+IGRvbWFp
bnM7CisgICAgd2hpbGUgKHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAg
ICBhdXRvIGRvbWFpbiA9IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBkb21h
aW5zLmFkZChkb21haW4pOworICAgIH0KKworICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOworICAg
IHJldHVybiBkb21haW5zOworfQorCiBib29sIENvb2tpZUphckRCOjpkZWxldGVDb29raWUoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIWlzRW5hYmxl
ZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNTU2LDYgKzU4NiwxMyBAQCBib29sIENv
b2tpZUphckRCOjpkZWxldGVDb29raWVzKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIENvb2tpZUphckRCOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQoreworICAgIGF1
dG8mIHN0YXRlbWVudCA9IHByZXBhcmVkU3RhdGVtZW50KGluY2x1ZGVIdHRwT25seUNvb2tpZXMg
PyBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIDogREVMRVRFX0NPT0tJRVNfQllfRE9NQUlO
X0VYQ0VQVF9IVFRQX09OTFlfU1FMKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgaG9zdG5h
bWUpOworICAgIHJldHVybiBjaGVja1NRTGl0ZVJldHVybkNvZGUoc3RhdGVtZW50LnN0ZXAoKSk7
Cit9CisKIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUFsbENvb2tpZXMoKQogewogICAgIGlmICgh
aXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IDI2ODdhZTc0ZmI5
Li4xMDY2YjA2MzQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTU2LDEyICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgeyBtX2FjY2VwdFBv
bGljeSA9IHBvbGljeTsgfQogICAgIENvb2tpZUFjY2VwdFBvbGljeSBhY2NlcHRQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2FjY2VwdFBvbGljeTsgfQogCisgICAgSGFzaFNldDxTdHJpbmc+IGFs
bERvbWFpbnMoKTsKICAgICBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gc2VhcmNoQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9u
YWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBPcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBP
cHRpb25hbDxib29sPiYgc2Vzc2lvbik7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlKTsKKyAg
ICBib29sIHNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llLCBDb29raWVKYXJEQjo6U291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBj
YXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdCk7CiAgICAgYm9vbCBzZXRDb29raWUoY29uc3Qg
Q29va2llJik7CiAKICAgICBib29sIGRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKICAgICBib29sIGRlbGV0ZUNvb2tpZXMoY29uc3QgU3RyaW5nJiB1
cmwpOworICAgIGJvb2wgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIGJvb2wgaW5jbHVkZUh0dHBvbmx5Q29va2llcyk7CiAgICAgYm9vbCBkZWxldGVBbGxD
b29raWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWVKYXJEQihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXgg
NWNmMWUxZWEyYTcuLjk4MzY1MGJkMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1
cmwuY3BwCkBAIC04Myw3ICs4MywxMiBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVEYXRhYmFzZSgpIGNvbnN0CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJ
VFAsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29va2llU3RvcmFnZSgpLnNl
dENvb2tpZXNGcm9tRE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCB2YWx1ZSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IGNsaWVudFNpZGVDb29r
aWVDYXAoUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5IH0sIHBhZ2VJRCk7CisjZWxzZQor
ICAgIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gV1RGOjpudWxsb3B0OworI2Vu
ZGlmCisgICAgY29va2llU3RvcmFnZSgpLnNldENvb2tpZXNGcm9tRE9NKCp0aGlzLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSwgY2FwcGVkTGlm
ZXRpbWUpOwogfQogCiBIVFRQQ29va2llQWNjZXB0UG9saWN5IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llQWNjZXB0UG9saWN5KCkgY29uc3QKQEAgLTEwOCwxNCArMTEzLDE1IEBAIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRm9y
RE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxD
b29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCisgICAgZm9yIChjb25zdCBhdXRvJiBjb29r
aWUgOiBjb29raWVzKQorICAgICAgICBjb29raWVEYXRhYmFzZSgpLnNldENvb2tpZShjb29raWUp
OwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tp
ZSYpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCisg
ICAgY29va2llRGF0YWJhc2UoKS5zZXRDb29raWUoY29va2llKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKQpAQCAtMTM4LDE2ICsx
NDQsMTQgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdhbGxUaW1lIHNpbmNlKQogICAgIGNvb2tpZVN0b3JhZ2UoKS5kZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZSgqdGhpcywgc2luY2UpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlD
b29raWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQuCi0gICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwot
ICAgIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdG5hbWVzKTsKKyAgICBjb29raWVTdG9y
YWdlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcygqdGhpcywgY29va2llSG9zdE5hbWVzLCBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhv
c3ROYW1lcykKIHsKLSAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cygqdGhpcywgY29va2llSG9zdE5hbWVzKTsKKyAgICBjb29raWVTdG9yYWdlKCkuZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lcygqdGhpcywgY29va2llSG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlD
b29raWVzOjpZZXMpOwogfQogCiBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldEFsbENvb2tpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2Li42ZmM3NmQ0MTQ5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNTYs
NyArNTYsNyBAQCBSZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdAogICAgIHJldHVybiBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBh
cmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRl
cnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKICNlbmRpZgogI2lmIFVTRShDVVJMKQotICAgIHJl
dHVybiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0
ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRl
cnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKKyAgICByZXR1cm4gTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1
ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0
ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4
IGNlMDU0MTcyZjQwLi4wNjZjOTMxZGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtNDMsOCAr
NDMsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1OZXR3b3JrRGF0YVRhc2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbikKK05ldHdvcmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciYgcGFnZUlELCBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgQ29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRTbmlmZiwgQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJl
cXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbikKKyAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlE
KQogewogICAgIGlmIChtX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTIsNiArNTQsMTIgQEAgTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29y
a0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXMKICAg
ICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgYXV0byByZXF1ZXN0
ID0gcmVxdWVzdFdpdGhDcmVkZW50aWFsczsKKyAgICBib29sIGJsb2NrQ29va2llcyA9IGZhbHNl
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYmxvY2tDb29raWVz
ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcyB8fCBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCk7
CisjZW5kaWYKKyAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVx
dWVzdCwgYmxvY2tDb29raWVzKTsKKwogICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkgewogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7CiAgICAgICAgICAgICBhdXRvIHVybCA9
IHJlcXVlc3QudXJsKCk7CkBAIC0zMDcsNiArMzE1LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
dXJsOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigpCiAgICAgICAgICAgICBtX3N0YXJ0VGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgIGF1dG8gcmVxdWVzdENvcHkgPSBu
ZXdSZXF1ZXN0OworICAgICAgICBib29sIHNob3VsZEJsb2NrID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzIHx8IHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0Q29weSk7CisgICAgICAgIHJlc3Ry
aWN0UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0Q29weSwgc2hvdWxkQmxv
Y2spOwogICAgICAgICBtX2N1cmxSZXF1ZXN0ID0gY3JlYXRlQ3VybFJlcXVlc3QoV1RGTW92ZShy
ZXF1ZXN0Q29weSkpOwogICAgICAgICBpZiAoZGlkQ2hhbmdlQ3JlZGVudGlhbCAmJiAhbV9pbml0
aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fY3VybFJlcXVlc3QtPnNl
dFVzZXJQYXNzKG1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpLCBtX2luaXRpYWxDcmVkZW50aWFs
LnBhc3N3b3JkKCkpOwpAQCAtNDQ0LDYgKzQ1NCw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6cmVzdGFydFdpdGhDcmVkZW50aWFsKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzIHx8IHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgY29uc3QgYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpOwogICAgIGNvbnN0IGF1dG8mIGNvb2tpZUphciA9IHN0b3JhZ2VTZXNzaW9u
LT5jb29raWVTdG9yYWdlKCk7CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMg
OiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87CkBAIC00NjYsNCArNDc5LDI0IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6aGFuZGxlQ29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlCiAgICAgfQogfQogCitib29sIE5ldHdvcmtEYXRhVGFza0N1cmw6OnNo
b3VsZEJsb2NrQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICByZXR1cm4gbV9z
ZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBtX3Nlc3Npb24tPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3Bh
Z2VJRCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIE5ldHdv
cmtEYXRhVGFza0N1cmw6OmlzVGhpcmRQYXJ0eVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFi
bGVEb21haW5zRXF1YWwocmVxdWVzdC51cmwoKSwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpKTsKK30KKwordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpyZXN0cmljdFJlcXVlc3RSZWZl
cnJlclRvT3JpZ2luSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBi
b29sIHNob3VsZEJsb2NrQ29va2llcykKK3sKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzIHx8
IChtX3Nlc3Npb24tPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgJiYgaXNUaGlyZFBhcnR5UmVx
dWVzdChyZXF1ZXN0KSkpCisgICAgICAgIHJlcXVlc3Quc2V0RXhpc3RpbmdIVFRQUmVmZXJyZXJU
b09yaWdpblN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5o
CmluZGV4IDUyZDA4NWI0NGMxLi44MzkxOTM0OTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0yNyw2
ICsyNyw4IEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0N1cmxSZXF1ZXN0Q2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KIApAQCAtMzgsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya0RhdGFUYXNrQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2ssIHB1YmxpYyBX
ZWJDb3JlOjpDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3
b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFU
YXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCisgICAgc3RhdGljIFJlZjxOZXR3
b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFU
YXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDdXJsKHNlc3Npb24sIGNs
aWVudCwgcmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlm
Ziwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0N1cmwoc2Vzc2lvbiwgY2xp
ZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBz
aG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbikpOwogICAgIH0KIAogICAgIH5OZXR3b3JrRGF0YVRhc2tDdXJsKCk7CkBAIC01NCw3
ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJldXNlZFJlcXVlc3QKICAgICB9OwogCi0gICAg
TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24p
OworICAgIE5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6
OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24pOwogCiAgICAgdm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3VtZSgpIG92
ZXJyaWRlOwpAQCAtODIsNiArODQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZENvb2tp
ZUhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRsZUNvb2tp
ZUhlYWRlcnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
Q3VybFJlc3BvbnNlJik7CiAKKyAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIGlzVGhpcmRQYXJ0eVJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXN0cmljdFJlcXVlc3RS
ZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCk7
CisKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBtX2N1cmxSZXF1ZXN0OwpAQCAtODksNiArOTUsOSBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2F1dGhGYWlsdXJlQ291bnQgeyAwIH07CiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGlt
ZTsKKworICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtX2ZyYW1lSUQ7CisgICAgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vz
c2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtT
ZXNzaW9uQ3VybC5jcHAKaW5kZXggYmMyODgzYWUxM2UuLjMxZmYzYjA3OWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25D
dXJsLmNwcApAQCAtNDMsNiArNDMsMTQgQEAgTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2UKICAgICBp
ZiAoIXBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkKICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNldENvb2tpZURhdGFiYXNlKG1ha2VVbmlx
dWVSZWY8Q29va2llSmFyREI+KHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxl
KSk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNldFByb3h5U2V0dGluZ3MoV1RGTW92
ZShwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MpKTsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworICAgIG1fc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMuc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZEluY2x1ZGVM
b2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOworICAgIG1fZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5v
OworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0g
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7
CisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKKyNlbmRpZgogfQogCiBOZXR3b3JrU2Vzc2lvbkN1cmw6
On5OZXR3b3JrU2Vzc2lvbkN1cmwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGYuLmEz
NTJhNWJlYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJX
S1NlY3VyaXR5T3JpZ2luUmVmLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCIKQEAgLTY5NiwzICs2OTcsMTggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZXNldFF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnQK
ICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Z1bmN0aW9uIGNhbGxiYWNr
KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModG9JbXBsKHBh
Z2VSZWYpLT5pZGVudGlmaWVyKCksIFtjb250ZXh0LCBjYWxsYmFja10gKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucykgeworICAgICAgICBhdXRvIGRvbWFpbkFycmF5UmVmID0gV0tNdXRhYmxlQXJy
YXlDcmVhdGUoKTsKKyAgICAgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAg
ICAgICBXS0FycmF5QXBwZW5kSXRlbShkb21haW5BcnJheVJlZiwgYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAg
ICAgICBjYWxsYmFjayhjb250ZXh0LCBkb21haW5BcnJheVJlZik7CisgICAgfSk7CisjZWxzZQor
ICAgIGNhbGxiYWNrKGNvbnRleHQsIFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworI2VuZGlmCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCmluZGV4IDI4ZDZhODc3ZDZiLi5mYmYyNjYyZGM2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAg
LTE0Nyw2ICsxNDcsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRj
aENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZQogCiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RFUFJFQ0FU
RURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UGVy
T3JpZ2luU3RvcmFnZVF1b3RhKTsKIAordHlwZWRlZiB2b2lkKCpXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Z1bmN0aW9uKSh2b2lkKiBjb250ZXh0LCBXS0FycmF5
UmVmIGRvbWFpbnMpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tQ
YWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24gY2FsbGJhY2spOworCiBXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CiAKIHR5cGVkZWYgdm9pZCAoKldLV2Vi
c2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJl
bW92YWxGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggYmRiNzIwMDFiMmEuLjgxMTBmOTU5MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjE1NCw2
ICsyMTU0LDkgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6
cGFyYW1ldGVycygpCiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1
b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVk
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwor
I2VuZGlmCiAgICAgcGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKIAog
ICAgIHJldHVybiBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCBlMTBlZjMzMzE5MC4uZTM1MGVmZjc3ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MTcsNyArNjE3LDggQEAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNv
bmZpZ3VyYXRpb24oY28KICAgICBpZiAob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKSB7CiAg
ICAgICAgIGF1dG8gZXBoZW1lcmFsRGF0YVN0b3JlID0gYWRvcHRXSyhXS1dlYnNpdGVEYXRhU3Rv
cmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkpOwogICAgICAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZXBoZW1l
cmFsRGF0YVN0b3JlLmdldCgpKTsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIFdLUGFnZUNv
bmZpZ3VyYXRpb25TZXRXZWJzaXRlRGF0YVN0b3JlKHBhZ2VDb25maWd1cmF0aW9uLmdldCgpLCBU
ZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyID0gYWRvcHRXSyhXS1VzZXJDb250ZW50Q29udHJvbGxlckNyZWF0ZSgpKTsKICAg
ICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHBhZ2VDb25maWd1
cmF0aW9uLmdldCgpLCB1c2VyQ29udGVudENvbnRyb2xsZXIoKSk7CkBAIC0zMTEwLDggKzMxMTEs
NDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkK
IHsKIH0KIAorc3RydWN0IEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0
IHsKKyAgICBleHBsaWNpdCBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4
dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBoYW5kbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRy
b2xsZXIpCisgICAgICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKKyAg
ICB7CisgICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+IGNvbXBsZXRpb25IYW5kbGVy
OworICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07Cit9OworCit2b2lkIGdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEsIFdLQXJyYXlSZWYgZG9tYWluTGlzdCkK
K3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8R2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBy
ZXN1bHREb21haW5zOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgV0tBcnJheUdldFNpemUoZG9t
YWluTGlzdCk7IGkrKykgeworICAgICAgICBhdXRvIGRvbWFpbiA9ICByZWludGVycHJldF9jYXN0
PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoZG9tYWluTGlzdCwgaSkpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6dmVjdG9yPGNoYXI+KFdLU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShkb21haW4pKTsKKyAgICAgICAgYXV0byBzdHJpbmdMZW5ndGggPSBXS1N0
cmluZ0dldFVURjhDU3RyaW5nKGRvbWFpbiwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisKKyAgICAgICAgcmVzdWx0RG9tYWlucy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChidWZmZXIu
ZGF0YSgpLCBzdHJpbmdMZW5ndGggLSAxKSk7CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPmNv
bXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb250ZXh0LT5jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdERvbWFpbnMpKTsKKworICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNv
bnRleHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwogdm9pZCBUZXN0Q29udHJv
bGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogeworICAgIGF1dG8gZGF0YVN0b3Jl
ID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAg
R2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcywg
W3RoaXNdIChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKGRvbWFpbnMpOworICAg
IH0pOworCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
ZGF0YVN0b3JlLCBtX21haW5XZWJWaWV3LT5wYWdlKCksICZjb250ZXh0LCBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0NhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGlt
ZW91dCk7CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400716</attachid>
            <date>2020-05-31 18:55:41 -0700</date>
            <delta_ts>2020-05-31 21:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200601104856.patch</filename>
            <type>text/plain</type>
            <size>50801</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3OGVlODdjMTBhZWNjMWM3
OTNhNWE2NWQ2ZDI3OGEyNTcxZTkwYzIuLmEwZTJmYzEzMTQzYTZlY2FmYzAzMjRkOWIyOGM5YmU5
OWI4NjhiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDUtMzEgIFRha2FzaGkg
S29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxl
bWVudCBmdW5jdGlvbnMgdG8gdXNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25z
IHdoaWNoIGFyZSByZXF1aXJlZCB0byBpbXBsZW1lbnQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBm
b3Igd2luY2Fpcm8uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy8KKworICAgICAgICAqIFVJUHJvY2Vzcy9wbGF5c3RhdGlvbi9XZWJQcm9jZXNzUG9v
bFBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NQb29sV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAyMC0wNC0yNyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgY2hhbmdlIGFm
dGVyIHIyNjA3OTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3Rh
dGlvbi9XZWJQcm9jZXNzUG9vbFBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCmluZGV4IGY2ZGZl
Mzc3ZGM4YTFmNzQ5YzFiN2ExMmY2YzFiOTQwMjc2NjBjNzcuLmZmOTA4ZmQwOTJjMzJhNzEwZDhl
ZmQ1N2Q3ZDk4YzNmOTg3NDk3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3Bw
CkBAIC0yNiwxNSArMjYsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCiB7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cHJveHlTZXR0aW5ncyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb3h5U2V0dGluZ3Mo
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhjb25zdCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3Bw
CmluZGV4IDE4ZjllOTM5MzI3OTNiN2MzZTQ0ZTYzNDZiZTBmMTNlZDZkYmYyMzMuLmUyMzRlOTU0
YTMyMjQ3MGRlNWM3MTk1OTA2MjZmYWRjNWIzMjQxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAKQEAgLTc4LDkgKzc5LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyNpZiBVU0UoQ1VSTCkKKyAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3Jl
KQorICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5wcm94eVNldHRpbmdzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JrUHJveHlTZXR0aW5ncygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYjZkMWY2MmQ4ZGY3M2IzMmE3NzE2NjdjYjE0YmMwYzE2ZGU3
NjFkMi4uODhlMGE1ZGI0YTg2NThiNzIyYmMyM2RiYTU2MDFhY2U0ODNiMGI3YSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBA
CisyMDIwLTA1LTMxICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgor
CisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIHdpbmNhaXJvLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtU29ja2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Bs
YXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1Tb2NrZXRQT1NJWC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6U29ja2V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlNvY2tldDo6c29ja2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNv
Y2tldDo6YWNjZXB0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNvY2tldDo6c2h1dGRvd24p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6U29ja2V0OjpjbG9zZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpTb2NrZXQ6OnJlYWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6U29ja2V0
Ojp3cml0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6VENQ
U2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6c3RhcnRTZWN1cmVD
b25uZWN0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6bGlzdGVuRm9y
Q29ubmVjdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp+VENQU2Vy
dmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6c3RvcCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjpyZWFkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRDUFNlcnZlcjo6d3JpdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjpy
ZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UQ1BT
ZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9jdXJsL0hUVFBT
ZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNlcnZlclRlc3Rlcjo6
U2VydmVyVGVzdGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNlcnZlclRlc3Rlcjo6bG9h
ZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpTZXJ2ZXJUZXN0ZXI6OmVycm9yRGVzY3JpcHRp
b24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvY3VybC9Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Q3VybDo6ZGlkRmluaXNoTmF2aWdhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDdXJsOjpkaWRGYWlsTmF2aWdhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpD
dXJsOjpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkN1cmw6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Q3VybDo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vSFRUUFNlcnZlcldpbi5j
cHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjp+SFRUUFNlcnZlcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpzdGF0dXNUZXh0KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OnBvcnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6c2Vy
dmVyVVJMIGNvbnN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9IVFRQU2VydmVyV2lu
Lmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmguCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U6OkhUVFBSZXNwb25zZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1Tb2NrZXRXaW4uY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9XZWJQcm9jZXNzUG9v
bFBsYXlTdGF0aW9uLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNvY2tldDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpTb2NrZXQ6OnNvY2tldCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpTb2NrZXQ6OmFjY2VwdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpTb2NrZXQ6OnNodXRkb3duKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNvY2tldDo6Y2xv
c2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6U29ja2V0OjpyZWFkKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlNvY2tldDo6d3JpdGUpOgorCiAyMDIwLTA0LTI3ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IEEg
c3VpdGUgcnVubmluZyBtdWx0aXBsZSB0aW1lcyBpbiBhIGNvbW1pdCBmb3IgYSBzaW5nbGUgY29u
ZmlndXJhdGlvbiBtYXkgcHJlLWVtcHQgcHJvY2Vzc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVNvY2tldC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVNvY2tldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0Yjc3ZDllODQ4NTYxOTA3YmMxOWNkZTYxNDVmZGE3ZDk4
YmJjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtU29j
a2V0LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
CisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworI2lmIE9TKFdJTkRPV1MpCit1c2luZyBQbGF0Zm9ybVNvY2tldCA9
IFNPQ0tFVDsKK3VzaW5nIFBsYXRmb3JtU29ja2xlbiA9IGludDsKKyNlbHNlCit1c2luZyBQbGF0
Zm9ybVNvY2tldCA9IGludDsKK3VzaW5nIFBsYXRmb3JtU29ja2xlbiA9IHNvY2tsZW5fdDsKKyNl
bmRpZgorCituYW1lc3BhY2UgU29ja2V0IHsKK3ZvaWQgaW5pdGlhbGl6ZSgpOworUGxhdGZvcm1T
b2NrZXQgc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOworUGxhdGZv
cm1Tb2NrZXQgYWNjZXB0KFBsYXRmb3JtU29ja2V0LCBzdHJ1Y3Qgc29ja2FkZHIqLCBQbGF0Zm9y
bVNvY2tsZW4qKTsKK2ludCBzaHV0ZG93bihQbGF0Zm9ybVNvY2tldCk7CitpbnQgY2xvc2UoUGxh
dGZvcm1Tb2NrZXQpOworaW50IHJlYWQoUGxhdGZvcm1Tb2NrZXQsIHZvaWQqIGJ1ZmZlciwgc2l6
ZV90IGNvdW50KTsKK2ludCB3cml0ZShQbGF0Zm9ybVNvY2tldCwgY29uc3Qgdm9pZCogYnVmZmVy
LCBzaXplX3QgY291bnQpOworfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVNvY2tldFBPU0lYLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1Tb2Nr
ZXRQT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYyYWQxMWI1MTkyMDI4NjI2NmIzYjU2NWViM2U0NmVk
N2UyMzk5MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1T
b2NrZXRQT1NJWC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Tb2NrZXQuaCIKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFNvY2tldCB7CisKK3ZvaWQgaW5pdGlhbGl6ZSgpCit7
Cit9CisKK1BsYXRmb3JtU29ja2V0IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHBy
b3RvY29sKQoreworICAgIHJldHVybiA6OnNvY2tldChkb21haW4sIHR5cGUsIHByb3RvY29sKTsK
K30KKworUGxhdGZvcm1Tb2NrZXQgYWNjZXB0KFBsYXRmb3JtU29ja2V0IHNvY2tldCwgc3RydWN0
IHNvY2thZGRyKiBhZGRyLCBQbGF0Zm9ybVNvY2tsZW4gKmFkZHJsZW4pCit7CisgICAgcmV0dXJu
IDo6YWNjZXB0KHNvY2tldCwgYWRkciwgYWRkcmxlbik7Cit9CisKK2ludCBzaHV0ZG93bihQbGF0
Zm9ybVNvY2tldCBzb2NrZXQpCit7CisgICAgcmV0dXJuIDo6c2h1dGRvd24oc29ja2V0LCBTSFVU
X1JEV1IpOworfQorCitpbnQgY2xvc2UoUGxhdGZvcm1Tb2NrZXQgc29ja2V0KQoreworICAgIHJl
dHVybiA6OmNsb3NlKHNvY2tldCk7Cit9CisKK2ludCByZWFkKFBsYXRmb3JtU29ja2V0IHNvY2tl
dCwgdm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIDo6cmVhZChzb2Nr
ZXQsIGJ1ZmZlciwgY291bnQpOworfQorCitpbnQgd3JpdGUoUGxhdGZvcm1Tb2NrZXQgc29ja2V0
LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gOjp3cml0
ZShzb2NrZXQsIGJ1ZmZlciwgY291bnQpOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCBiNDAwYmFjNDA1YWVhODJhZjM5ODRkYjMzOTJkZTNkNzA0ZTIy
MDI5Li5hMTE1MWY2YmI4YTc3YWM5YjU5NzcxNGY2ZjMwZWExYjQ3MTgxN2UyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEzMyw2ICsxMzMsMTAgQEAgaWYgKEVOQUJM
RV9XRUJLSVQpCiAgICAgbGlzdChBUFBFTkQgVGVzdFdlYktpdF9TT1VSQ0VTCiAgICAgICAgICR7
dGVzdF9tYWluX1NPVVJDRVN9CiAKKyAgICAgICAgVENQU2VydmVyLmNwcAorCisgICAgICAgIHdp
bi9IVFRQU2VydmVyV2luLmNwcAorICAgICAgICB3aW4vUGxhdGZvcm1Tb2NrZXRXaW4uY3BwCiAg
ICAgICAgIHdpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKICAgICAgICAgd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKICAgICAgICAgd2luL1V0aWxpdGllc1dpbi5jcHAKQEAgLTE0MSw2ICsx
NDUsOCBAQCBpZiAoRU5BQkxFX1dFQktJVCkKICAgICBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NB
SVJPfSkKICAgICAgICAgbGlzdChBUFBFTkQgVGVzdFdlYktpdF9TT1VSQ0VTCiAgICAgICAgICAg
ICBUZXN0cy9XZWJLaXQvY3VybC9DZXJ0aWZpY2F0ZXMuY3BwCisgICAgICAgICAgICBUZXN0cy9X
ZWJLaXQvY3VybC9IVFRQU2VydmVyLmNwcAorICAgICAgICAgICAgVGVzdHMvV2ViS2l0L2N1cmwv
UHJveHkuY3BwCiAgICAgICAgICkKICAgICBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4
dAppbmRleCBjM2FhNGJmMmYwNzMyZjRkMGUwMzEzODYwOTQxMzgyYjg2ODUwNmExLi4zMmI1MzQz
ODE5MzBiZGQwZTkzZDdiY2FhNDE2YmE4ZGUwODk0NWQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1NvdXJjZXMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50
eHQKQEAgLTI2LDMgKzI2LDQgQEAgUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiBUQ1BTZXJ2ZXIuY3Bw
CiBUZXN0c0NvbnRyb2xsZXIuY3BwCiAKK1BsYXRmb3JtU29ja2V0UE9TSVguY3BwCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1RDUFNlcnZlci5jcHAKaW5kZXggYmMxYzhiYjk4OGM3OWUyYzBlMDdkNjk3YTJhMmIwZTMw
ZmY2ZGNhYS4uMTliZjI1M2QwYmYyNjNiNmIxNTJmNTk1MjZiMWVmNDZiY2FkMTM4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmNwcApAQCAtMjYsOSArMjYsMTMgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUQ1BTZXJ2ZXIuaCIKIAorI2lmICFPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgogI2luY2x1ZGUgPHRocmVhZD4KKyNpZiAhT1MoV0lO
RE9XUykKICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC04Miw2ICs4NiwxMiBAQCB2
b2lkIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKFNTTF9DVFgqLCB1aW50MTZfdCk7CiAj
ZGVmaW5lIFNTTF9WRVJJRllfUEVFUiAweDAxCiAjZGVmaW5lIFNTTF9WRVJJRllfRkFJTF9JRl9O
T19QRUVSX0NFUlQgMHgwMgogCisjaWYgVVNFKE9QRU5TU0wpCitjb25zdCBTU0xfTUVUSE9EKiBT
U0x2MjNfbWV0aG9kKHZvaWQpOworY29uc3QgU1NMX01FVEhPRCogVExTdjFfMl9tZXRob2Qodm9p
ZCk7CitpbnQgU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMShTU0xfQ1RYKiwgaW50IGNlcnRp
ZmljYXRlTGVuZ3RoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpjZXJ0aWZpY2F0ZSk7CitpbnQgU1NM
X0NUWF91c2VfUHJpdmF0ZUtleShTU0xfQ1RYKiwgRVZQX1BLRVkqKTsKKyNlbmRpZgogfSAvLyBl
eHRlcm4gIkMiCiAKIGlubGluZSBzaXplX3Qgc2tfQ1JZUFRPX0JVRkZFUl9udW0oY29uc3QgU1RB
Q0tfT0YoQ1JZUFRPX0JVRkZFUikgKnNrKSB7IHJldHVybiBza19udW0oKGNvbnN0IF9TVEFDSyAq
KXNrKTsgfQpAQCAtMTI3LDE5ICsxMzcsMjIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5n
IHVuaXF1ZV9wdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgZGVsZXRlcjxUPj47CiB9CiAjZW5kaWYg
Ly8gSEFWRShTU0wpCiAKLVRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2V0
KT4mJiBjb25uZWN0aW9uSGFuZGxlciwgc2l6ZV90IGNvbm5lY3Rpb25zKQorVENQU2VydmVyOjpU
Q1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChQbGF0Zm9ybVNvY2tldCk+JiYgY29ubmVjdGlvbkhhbmRs
ZXIsIHNpemVfdCBjb25uZWN0aW9ucykKICAgICA6IG1fY29ubmVjdGlvbkhhbmRsZXIoV1RGTW92
ZShjb25uZWN0aW9uSGFuZGxlcikpCiB7CisgICAgU29ja2V0Ojppbml0aWFsaXplKCk7CiAgICAg
bGlzdGVuRm9yQ29ubmVjdGlvbnMoY29ubmVjdGlvbnMpOwogfQogCiAjaWYgSEFWRShTU0wpCi12
b2lkIFRDUFNlcnZlcjo6c3RhcnRTZWN1cmVDb25uZWN0aW9uKFNvY2tldCBzb2NrZXQsIEZ1bmN0
aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENs
aWVudENlcnRpZmljYXRlLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbikKK3ZvaWQg
VENQU2VydmVyOjpzdGFydFNlY3VyZUNvbm5lY3Rpb24oUGxhdGZvcm1Tb2NrZXQgc29ja2V0LCBG
dW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVl
c3RDbGllbnRDZXJ0aWZpY2F0ZSwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24pCiB7
CiAgICAgU1NMX2xpYnJhcnlfaW5pdCgpOwotCisjaWYgVVNFKE9QRU5TU0wpCisgICAgc3NsOjp1
bmlxdWVfcHRyPFNTTF9DVFg+IGN0eChTU0xfQ1RYX25ldyhUTFN2MV8yX21ldGhvZCgpKSk7Cisj
ZWxzZQogICAgIHNzbDo6dW5pcXVlX3B0cjxTU0xfQ1RYPiBjdHgoU1NMX0NUWF9uZXcoVExTX3dp
dGhfYnVmZmVyc19tZXRob2QoKSkpOwotCisjZW5kaWYKICAgICAvLyBUaGlzIGlzIGEgdGVzdCBj
ZXJ0aWZpY2F0ZSBmcm9tIEJvcmluZ1NTTC4KICAgICBTdHJpbmcgY2VydFBFTSgKICAgICAiTUlJ
Q1dEQ0NBY0dnQXdJQkFnSUpBUHV3VEM2ckVKc01NQTBHQ1NxR1NJYjNEUUVCQlFVQU1FVXhDekFK
QmdOViIKQEAgLTE1Nyw4ICsxNzAsMTQgQEAgdm9pZCBUQ1BTZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29u
bmVjdGlvbihTb2NrZXQgc29ja2V0LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3UKICAgICAi
ajJWTkh3c1NySndrRDRRVUdsVXRIN3Z3blFteUNGeFpNbVdBSmc9PSIpOwogICAgIFZlY3Rvcjx1
aW50OF90PiBjZXJ0REVSOwogICAgIGJhc2U2NERlY29kZShjZXJ0UEVNLCBjZXJ0REVSLCBXVEY6
OkJhc2U2NERlY29kZU9wdGlvbnM6OkJhc2U2NERlZmF1bHQpOworCisjaWYgVVNFKE9QRU5TU0wp
CisgICAgaW50IHJldCA9IFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX0FTTjEoY3R4LmdldCgpLCBj
ZXJ0REVSLnNpemUoKSwgY2VydERFUi5kYXRhKCkpOworICAgIEFTU0VSVChyZXQgPT0gMSk7Cisj
ZWxzZQogICAgIHNzbDo6dW5pcXVlX3B0cjxDUllQVE9fQlVGRkVSPiBjZXJ0KENSWVBUT19CVUZG
RVJfbmV3KGNlcnRERVIuZGF0YSgpLCBjZXJ0REVSLnNpemUoKSwgbnVsbHB0cikpOwogICAgIEFT
U0VSVChjZXJ0KTsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBpcyBhIHRlc3Qga2V5IGZyb20gQm9y
aW5nU1NMLgogICAgIGNoYXIga0tleVBFTVtdID0KQEAgLTE4Miw2ICsyMDEsMTAgQEAgdm9pZCBU
Q1BTZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQgc29ja2V0LCBGdW5jdGlvbjx2
b2lkKFNTTCopPiYmIHNlY3UKICAgICBzc2w6OnVuaXF1ZV9wdHI8RVZQX1BLRVk+IHByaXZhdGVL
ZXkoUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cikpOwogICAgIEFTU0VSVChwcml2YXRlS2V5KTsKIAorI2lmIFVTRShP
UEVOU1NMKQorICAgIHJldCA9IFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LmdldCgpLCBwcml2
YXRlS2V5LmdldCgpKTsKKyAgICBBU1NFUlQocmV0ID09IDEpOworI2Vsc2UKICAgICBTU0xfQ1RY
X3NldF9jaGFpbl9hbmRfa2V5KGN0eC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxDUllQVE9fQlVG
RkVSICpjb25zdCAqPigmY2VydCksIDEsIHByaXZhdGVLZXkuZ2V0KCksIG51bGxwdHIpOwogCiAg
ICAgaWYgKHJlcXVlc3RDbGllbnRDZXJ0aWZpY2F0ZSkgewpAQCAtMTk1LDcgKzIxOCw3IEBAIHZv
aWQgVENQU2VydmVyOjpzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0IHNvY2tldCwgRnVuY3Rp
b248dm9pZChTU0wqKT4mJiBzZWN1CiAgICAgICAgICAgICByZXR1cm4gc3NsX3ZlcmlmeV9vazsK
ICAgICAgICAgfSk7CiAgICAgfQotCisjZW5kaWYKICAgICBpZiAobWF4VExTVmVyc2lvbikKICAg
ICAgICAgU1NMX0NUWF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24oY3R4LmdldCgpLCAqbWF4VExTVmVy
c2lvbik7CiAKQEAgLTIwNyw2MiArMjMwLDEwMSBAQCB2b2lkIFRDUFNlcnZlcjo6c3RhcnRTZWN1
cmVDb25uZWN0aW9uKFNvY2tldCBzb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdQog
ICAgIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKGFjY2VwdFJlc3VsdCA+IDAgPyBzc2wuZ2V0KCkg
OiBudWxscHRyKTsKIH07CiAKLVRDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29s
LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBPcHRpb25h
bDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbikKK1RDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29s
IHByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVy
LCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiwgc2l6ZV90IGNvbm5lY3Rpb25zKQog
eworICAgIFNvY2tldDo6aW5pdGlhbGl6ZSgpOwogICAgIHN3aXRjaCAocHJvdG9jb2wpIHsKICAg
ICBjYXNlIFByb3RvY29sOjpIVFRQUzoKICAgICBjYXNlIFByb3RvY29sOjpIVFRQU1dpdGhDbGll
bnRDZXJ0aWZpY2F0ZVJlcXVlc3Q6Ci0gICAgICAgIG1fY29ubmVjdGlvbkhhbmRsZXIgPSBbc2Vj
dXJlQ29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKSwg
cHJvdG9jb2wsIG1heFRMU1ZlcnNpb25dIChTb2NrZXQgc29ja2V0KSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9jb25uZWN0aW9uSGFuZGxlciA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1v
dmUoc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpLCBwcm90b2NvbCwgbWF4VExTVmVyc2lvbl0gKFBs
YXRmb3JtU29ja2V0IHNvY2tldCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdGFydFNlY3VyZUNv
bm5lY3Rpb24oc29ja2V0LCBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKSwgcHJvdG9j
b2wgPT0gUHJvdG9jb2w6OkhUVFBTV2l0aENsaWVudENlcnRpZmljYXRlUmVxdWVzdCwgbWF4VExT
VmVyc2lvbik7CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6
OkhUVFBTUHJveHk6Ci0gICAgICAgIG1fY29ubmVjdGlvbkhhbmRsZXIgPSBbc2VjdXJlQ29ubmVj
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKV0gKFNvY2tldCBz
b2NrZXQpIG11dGFibGUgeworICAgICAgICBtX2Nvbm5lY3Rpb25IYW5kbGVyID0gW3NlY3VyZUNv
bm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzZWN1cmVDb25uZWN0aW9uSGFuZGxlcildIChQbGF0
Zm9ybVNvY2tldCBzb2NrZXQpIG11dGFibGUgewogICAgICAgICAgICAgY2hhciByZWFkQnVmZmVy
WzEwMDBdOwotICAgICAgICAgICAgYXV0byBieXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0LCByZWFk
QnVmZmVyLCBzaXplb2YocmVhZEJ1ZmZlcikpOworICAgICAgICAgICAgYXV0byBieXRlc1JlYWQg
PSBTb2NrZXQ6OnJlYWQoc29ja2V0LCByZWFkQnVmZmVyLCBzaXplb2YocmVhZEJ1ZmZlcikpOwog
ICAgICAgICAgICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7CiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9
ICIiCiAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIENvbm5lY3Rpb24gRXN0YWJsaXNoZWRcclxu
IgogICAgICAgICAgICAgIkNvbm5lY3Rpb246IGNsb3NlXHJcblxyXG4iOwotICAgICAgICAgICAg
YXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxl
bihyZXNwb25zZUhlYWRlcikpOworICAgICAgICAgICAgYXV0byBieXRlc1dyaXR0ZW4gPSBTb2Nr
ZXQ6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikp
OwogICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVu
KSwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7CiAgICAgICAgICAgICBzdGFydFNlY3VyZUNvbm5l
Y3Rpb24oc29ja2V0LCBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKSk7CiAgICAgICAg
IH07CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBsaXN0ZW5Gb3JDb25uZWN0aW9ucygxKTsK
KyAgICBsaXN0ZW5Gb3JDb25uZWN0aW9ucyhjb25uZWN0aW9ucyk7CiB9CiAjZW5kaWYgLy8gSEFW
RShTU0wpCiAKIHZvaWQgVENQU2VydmVyOjpsaXN0ZW5Gb3JDb25uZWN0aW9ucyhzaXplX3QgY29u
bmVjdGlvbnMpCiB7Ci0gICAgYXV0byBsaXN0ZW5pbmdTb2NrZXQgPSBzb2NrZXRCaW5kTGlzdGVu
KGNvbm5lY3Rpb25zKTsKLSAgICBBU1NFUlQobGlzdGVuaW5nU29ja2V0KTsKLSAgICBtX2xpc3Rl
bmluZ1RocmVhZCA9IHN0ZDo6dGhyZWFkKFt0aGlzLCBsaXN0ZW5pbmdTb2NrZXQgPSAqbGlzdGVu
aW5nU29ja2V0LCBjb25uZWN0aW9uc10geworICAgIG1fbGlzdGVuaW5nU29ja2V0ID0gc29ja2V0
QmluZExpc3Rlbihjb25uZWN0aW9ucyk7CisgICAgbV9ydW5uaW5nTGlzdGVuaW5nVGhyZWFkID0g
dHJ1ZTsKKworICAgIEFTU0VSVChtX2xpc3RlbmluZ1NvY2tldCk7CisgICAgbV9saXN0ZW5pbmdU
aHJlYWQgPSBzdGQ6OnRocmVhZChbdGhpcywgbGlzdGVuaW5nU29ja2V0ID0gKm1fbGlzdGVuaW5n
U29ja2V0LCBjb25uZWN0aW9uc10gewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bm5lY3Rpb25zOyArK2kpIHsKLSAgICAgICAgICAgIFNvY2tldCBjb25uZWN0aW9uU29ja2V0ID0g
YWNjZXB0KGxpc3RlbmluZ1NvY2tldCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICBQ
bGF0Zm9ybVNvY2tldCBjb25uZWN0aW9uU29ja2V0ID0gSW52YWxpZFBvcnQ7CisKKyAgICAgICAg
ICAgIHdoaWxlIChtX3J1bm5pbmdMaXN0ZW5pbmdUaHJlYWQgJiYgY29ubmVjdGlvblNvY2tldCA9
PSBJbnZhbGlkUG9ydCkgeworICAgICAgICAgICAgICAgIGZkX3NldCByZWFkZmQ7CisgICAgICAg
ICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgICAgICAgICAgICAgRkRfWkVSTygmcmVh
ZGZkKTsKKyAgICAgICAgICAgICAgICBGRF9TRVQobGlzdGVuaW5nU29ja2V0LCAmcmVhZGZkKTsK
KyAgICAgICAgICAgICAgICB0di50dl9zZWMgPSAxOworICAgICAgICAgICAgICAgIHR2LnR2X3Vz
ZWMgPSAwOworCisgICAgICAgICAgICAgICAgaW50IHJlYWR5U29ja2V0cyA9IHNlbGVjdChsaXN0
ZW5pbmdTb2NrZXQgKyAxLCAmcmVhZGZkLCBudWxscHRyLCBudWxscHRyLCAmdHYpOworICAgICAg
ICAgICAgICAgIGlmIChyZWFkeVNvY2tldHMgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uU29ja2V0ID0gU29ja2V0OjphY2Nl
cHQobGlzdGVuaW5nU29ja2V0LCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFtX3J1bm5pbmdMaXN0ZW5pbmdUaHJlYWQpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgICAgIG1fY29ubmVjdGlvblRocmVhZHMuYXBwZW5kKHN0ZDo6
dGhyZWFkKFt0aGlzLCBjb25uZWN0aW9uU29ja2V0XSB7CiAgICAgICAgICAgICAgICAgbV9jb25u
ZWN0aW9uSGFuZGxlcihjb25uZWN0aW9uU29ja2V0KTsKLSAgICAgICAgICAgICAgICBzaHV0ZG93
bihjb25uZWN0aW9uU29ja2V0LCBTSFVUX1JEV1IpOwotICAgICAgICAgICAgICAgIGNsb3NlKGNv
bm5lY3Rpb25Tb2NrZXQpOworICAgICAgICAgICAgICAgIFNvY2tldDo6c2h1dGRvd24oY29ubmVj
dGlvblNvY2tldCk7CisgICAgICAgICAgICAgICAgU29ja2V0OjpjbG9zZShjb25uZWN0aW9uU29j
a2V0KTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfQotICAgICAgICBjbG9zZShsaXN0ZW5p
bmdTb2NrZXQpOworICAgICAgICBTb2NrZXQ6OmNsb3NlKGxpc3RlbmluZ1NvY2tldCk7CiAgICAg
fSk7CiB9CiAKIFRDUFNlcnZlcjo6flRDUFNlcnZlcigpCiB7CisgICAgc3RvcCgpOworfQorCit2
b2lkIFRDUFNlcnZlcjo6c3RvcCgpCit7CisgICAgaWYgKCFtX3J1bm5pbmdMaXN0ZW5pbmdUaHJl
YWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcnVubmluZ0xpc3RlbmluZ1RocmVhZCA9IGZh
bHNlOworCisgICAgaWYgKG1fbGlzdGVuaW5nU29ja2V0KSB7CisgICAgICAgIFNvY2tldDo6c2h1
dGRvd24oKm1fbGlzdGVuaW5nU29ja2V0KTsKKyAgICAgICAgU29ja2V0OjpjbG9zZSgqbV9saXN0
ZW5pbmdTb2NrZXQpOworICAgICAgICBtX2xpc3RlbmluZ1NvY2tldCA9IFdURjo6bnVsbG9wdDsK
KyAgICB9CisKICAgICBtX2xpc3RlbmluZ1RocmVhZC5qb2luKCk7Ci0gICAgZm9yIChhdXRvJiBj
b25uZWN0aW9uVGhyZWFkcyA6IG1fY29ubmVjdGlvblRocmVhZHMpCi0gICAgICAgIGNvbm5lY3Rp
b25UaHJlYWRzLmpvaW4oKTsKKworICAgIGZvciAoYXV0byYgY29ubmVjdGlvblRocmVhZCA6IG1f
Y29ubmVjdGlvblRocmVhZHMpCisgICAgICAgIGNvbm5lY3Rpb25UaHJlYWQuam9pbigpOwogfQog
Ci1hdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpIC0+
IE9wdGlvbmFsPFNvY2tldD4KK2F1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVf
dCBjb25uZWN0aW9ucykgLT4gT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXQ+CiB7Ci0gICAgU29ja2V0
IGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CisgICAg
UGxhdGZvcm1Tb2NrZXQgbGlzdGVuaW5nU29ja2V0ID0gU29ja2V0Ojpzb2NrZXQoUEZfSU5FVCwg
U09DS19TVFJFQU0sIDApOwogICAgIGlmIChsaXN0ZW5pbmdTb2NrZXQgPT0gLTEpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCkBAIC0yNzksNyArMzQxLDcgQEAgYXV0byBUQ1BT
ZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBPcHRpb25hbDxT
b2NrZXQ+CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxpc3RlbihsaXN0ZW5pbmdTb2NrZXQsIGNv
bm5lY3Rpb25zKSA9PSAtMSkgewogICAgICAgICAgICAgLy8gTGlzdGVuaW5nIGZhaWxlZC4KLSAg
ICAgICAgICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7CisgICAgICAgICAgICBTb2NrZXQ6OmNs
b3NlKGxpc3RlbmluZ1NvY2tldCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgICAgIG1fcG9ydCA9IHBvcnQ7CkBAIC0yODcsMTQgKzM0OSwxNCBAQCBh
dXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpIC0+IE9w
dGlvbmFsPFNvY2tldD4KICAgICB9CiAgICAgCiAgICAgLy8gQ291bGRuJ3QgZmluZCBhbiBhdmFp
bGFibGUgcG9ydC4KLSAgICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOworICAgIFNvY2tldDo6Y2xv
c2UobGlzdGVuaW5nU29ja2V0KTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi10ZW1w
bGF0ZTw+IFZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2ZXI6OnJlYWQoU29ja2V0IHNvY2tldCkKK3Rl
bXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChQbGF0Zm9ybVNvY2tldCBz
b2NrZXQpCiB7CiAgICAgdWludDhfdCBidWZmZXJbMTAwMF07Ci0gICAgYXV0byBieXRlc1JlYWQg
PSA6OnJlYWQoc29ja2V0LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBhdXRvIGJ5dGVz
UmVhZCA9IFNvY2tldDo6cmVhZChzb2NrZXQsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwogICAg
IGlmIChieXRlc1JlYWQgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKGJ1ZmZlcikpOwpAQCAtMzA0LDkg
KzM2Niw5IEBAIHRlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTb2Nr
ZXQgc29ja2V0KQogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBUQ1BT
ZXJ2ZXI6OndyaXRlKFNvY2tldCBzb2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3Qg
bGVuZ3RoKQordGVtcGxhdGU8PiB2b2lkIFRDUFNlcnZlcjo6d3JpdGUoUGxhdGZvcm1Tb2NrZXQg
c29ja2V0LCBjb25zdCB2b2lkKiByZXNwb25zZSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBhdXRv
IGJ5dGVzV3JpdHRlbiA9IDo6d3JpdGUoc29ja2V0LCByZXNwb25zZSwgbGVuZ3RoKTsKKyAgICBh
dXRvIGJ5dGVzV3JpdHRlbiA9IFNvY2tldDo6d3JpdGUoc29ja2V0LCByZXNwb25zZSwgbGVuZ3Ro
KTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBsZW5n
dGgpOwogfQogCkBAIC0zMTUsOCArMzc3LDEwIEBAIHRlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+
IFRDUFNlcnZlcjo6cmVhZChTU0wqIHNzbCkKIHsKICAgICB1aW50OF90IGJ1ZmZlclsxMDAwXTsK
ICAgICBhdXRvIGJ5dGVzUmVhZCA9IFNTTF9yZWFkKHNzbCwgYnVmZmVyLCBzaXplb2YoYnVmZmVy
KSk7CisKICAgICBpZiAoYnl0ZXNSZWFkIDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CisKICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKGJ1ZmZlcikp
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKQEAgLTMzMSw3ICszOTUsNyBAQCB0ZW1w
bGF0ZTw+IHZvaWQgVENQU2VydmVyOjp3cml0ZShTU0wqIHNzbCwgY29uc3Qgdm9pZCogcmVzcG9u
c2UsIHNpemVfdCBsZW5ndGgpCiB9CiAjZW5kaWYKIAotdm9pZCBUQ1BTZXJ2ZXI6OnJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCBzb2NrZXQpCit2b2lkIFRDUFNlcnZlcjo6cmVzcG9u
ZFdpdGhDaGFsbGVuZ2VUaGVuT0soUGxhdGZvcm1Tb2NrZXQgc29ja2V0KQogewogICAgIHJlYWQo
c29ja2V0KTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVy
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCmluZGV4IGUwMWY4MDI0ZWEwNWU1
NzU3ZDc1YzQzYWU3ZmNjY2Y3ODI0MmNkOTEuLjg0MGEzMjMwZGVlOGRlZmRkNzg4MGUwNzU0ZDE2
NTYyZmU4MThjZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaApAQCAtMjUsMTEgKzI1LDExIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGxhdGZvcm1Tb2NrZXQuaCIKICNpbmNsdWRl
IDx0aHJlYWQ+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCiAjaWYgSEFWRShTU0wpCiBzdHJ1Y3Qg
U1NMOwogI2VuZGlmIC8vIEhBVkUoU1NMKQpAQCAtMzgsMTYgKzM4LDE1IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogY2xhc3MgVENQU2VydmVyIHsKIHB1YmxpYzoKLSAgICB1c2luZyBT
b2NrZXQgPSBpbnQ7CiAgICAgdXNpbmcgUG9ydCA9IHVpbnQxNl90OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgUG9ydCBJbnZhbGlkUG9ydCA9IDA7CiAgICAgCi0gICAgVENQU2VydmVyKEZ1bmN0aW9u
PHZvaWQoU29ja2V0KT4mJiwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7CisgICAgVENQU2VydmVy
KEZ1bmN0aW9uPHZvaWQoUGxhdGZvcm1Tb2NrZXQpPiYmLCBzaXplX3QgY29ubmVjdGlvbnMgPSAx
KTsKICNpZiBIQVZFKFNTTCkKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAg
ICAgICAgIEhUVFBTLCBIVFRQU1Byb3h5LCBIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVl
c3QKICAgICB9OwotICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4m
JiwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOworICAg
IFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWlu
dDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9
IDEpOwogI2VuZGlmIC8vIEhBVkUoU1NMKQogICAgIH5UQ1BTZXJ2ZXIoKTsKICAgICAKQEAgLTU1
LDkgKzU0LDkgQEAgcHVibGljOgogICAgIAogI2lmIEhBVkUoU1NMKQogICAgIHN0YXRpYyB2b2lk
IHJlc3BvbmRXaXRoT0soU1NMKik7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0
aW9uKFNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxl
ciwgYm9vbCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBmYWxzZSwgT3B0aW9uYWw8dWludDE2
X3Q+IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0
U2VjdXJlQ29ubmVjdGlvbihQbGF0Zm9ybVNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBz
ZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgYm9vbCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBm
YWxzZSwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOwog
I2VuZGlmCi0gICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0
KTsKKyAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhQbGF0Zm9ybVNv
Y2tldCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoVCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgd3JpdGUoVCwg
Y29uc3Qgdm9pZCosIHNpemVfdCk7CkBAIC02NSwxNCArNjQsMTggQEAgcHVibGljOgogICAgIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gdGVzdFByaXZhdGVLZXkoKTsKICAgICBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0ZSgpOwogICAgIAorICAgIHZvaWQgc3RvcCgpOwogcHJp
dmF0ZToKLSAgICBPcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5l
Y3Rpb25zKTsKKyAgICBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldD4gc29ja2V0QmluZExpc3Rlbihz
aXplX3QgY29ubmVjdGlvbnMpOwogICAgIHZvaWQgbGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6ZV90
IGNvbm5lY3Rpb25zKTsKIAorICAgIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0PiBtX2xpc3Rlbmlu
Z1NvY2tldCB7IFdURjo6bnVsbG9wdCB9OworICAgIGJvb2wgbV9ydW5uaW5nTGlzdGVuaW5nVGhy
ZWFkIHsgZmFsc2UgfTsKKwogICAgIFBvcnQgbV9wb3J0IHsgSW52YWxpZFBvcnQgfTsKKwogICAg
IHN0ZDo6dGhyZWFkIG1fbGlzdGVuaW5nVGhyZWFkOwogICAgIFZlY3RvcjxzdGQ6OnRocmVhZD4g
bV9jb25uZWN0aW9uVGhyZWFkczsKLSAgICBGdW5jdGlvbjx2b2lkKFNvY2tldCk+IG1fY29ubmVj
dGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZChQbGF0Zm9ybVNvY2tldCk+IG1fY29ubmVj
dGlvbkhhbmRsZXI7CiB9OwotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9jdXJsL0hUVFBTZXJ2ZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvY3VybC9IVFRQU2VydmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNThlOTFhNDkzNjE5MWY4MDkxZDhiNGMxYzJlOWZlN2VkM2E3Zjc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvY3VybC9IVFRQ
U2VydmVyLmNwcApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAid2luL0hUVFBTZXJ2
ZXJXaW4uaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oPgorI2lu
Y2x1ZGUgPFdlYktpdC9XS0NvbnRleHRQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQ3Jl
ZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFNlcnZl
clRlc3RlciB7CitwdWJsaWM6CisgICAgU2VydmVyVGVzdGVyKCkKKyAgICB7CisgICAgICAgIG1f
Y29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0
cikpOworICAgICAgICBtX3dlYlZpZXcgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxQbGF0Zm9ybVdlYlZpZXc+KG1fY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQ7CisgICAgICAgIG1lbXNldCgmbmF2aWdh
dGlvbkNsaWVudCwgMCwgc2l6ZW9mKG5hdmlnYXRpb25DbGllbnQpKTsKKyAgICAgICAgbmF2aWdh
dGlvbkNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgICAgICBuYXZpZ2F0aW9uQ2xpZW50LmJh
c2UuY2xpZW50SW5mbyA9IHRoaXM7CisKKyAgICAgICAgbmF2aWdhdGlvbkNsaWVudC5kaWRGaW5p
c2hOYXZpZ2F0aW9uID0gW10gKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNlcnZl
clRlc3Rlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9kaWRGYWlsTG9hZCA9
IGZhbHNlOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2VydmVyVGVzdGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5tX2RpZEZpbmlzaExvYWQgPSB0cnVlOworICAgICAgICB9
OworCisgICAgICAgIG5hdmlnYXRpb25DbGllbnQuZGlkRmFpbE5hdmlnYXRpb24gPSBbXSAoV0tQ
YWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLRXJyb3JSZWYgZXJyb3JSZWYsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykgeworICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbihl
cnJvclJlZik7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2ZXJUZXN0ZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPm1fZGlkRmFpbExvYWQgPSB0cnVlOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8U2VydmVyVGVzdGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5tX2RpZEZpbmlzaExvYWQgPSB0cnVlOworICAgICAgICB9OworCisgICAgICAgIG5hdmln
YXRpb25DbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IFtdIChXS1BhZ2VSZWYs
IFdLTmF2aWdhdGlvblJlZiwgV0tFcnJvclJlZiBlcnJvclJlZiwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7CisgICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uKGVycm9yUmVm
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNlcnZlclRlc3Rlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+bV9kaWRGYWlsTG9hZCA9IHRydWU7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTZXJ2ZXJUZXN0ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPm1f
ZGlkRmluaXNoTG9hZCA9IHRydWU7CisgICAgICAgIH07CisKKyAgICAgICAgbmF2aWdhdGlvbkNs
aWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBbXSAoV0tQYWdlUmVmLCBX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSwgY29uc3Qgdm9pZCopIHsKKyAg
ICAgICAgICAgIGF1dG8gZGVjaXNpb25MaXN0ZW5lciA9IFdLQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VHZXREZWNpc2lvbkxpc3RlbmVyKGNoYWxsZW5nZSk7CisgICAgICAgICAgICBhdXRvIHVzZXJu
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWNjZXB0IHNlcnZl
ciB0cnVzdCIpKTsKKyAgICAgICAgICAgIGF1dG8gcGFzc3dvcmQgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7CisgICAgICAgICAgICBhdXRvIHdrQ3JlZGVudGlh
bCA9IGFkb3B0V0soV0tDcmVkZW50aWFsQ3JlYXRlKHVzZXJuYW1lLmdldCgpLCBwYXNzd29yZC5n
ZXQoKSwga1dLQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbikpOworICAgICAgICAgICAg
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VDcmVkZW50aWFsKGRlY2lzaW9uTGlz
dGVuZXIsIHdrQ3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgIH07CisKKyAgICAgICAgV0tQYWdl
U2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV93ZWJWaWV3LT5wYWdlKCksICZuYXZpZ2F0aW9uQ2xp
ZW50LmJhc2UpOworICAgIH0KKworICAgIGJvb2wgbG9hZChTdHJpbmcgdXJsKQorICAgIHsKKyAg
ICAgICAgbV9kaWRGaW5pc2hMb2FkID0gZmFsc2U7CisKKyAgICAgICAgYXV0byB1cmxSZWYgPSBh
ZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVybC51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgIFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5wYWdlKCksIHVybFJlZi5nZXQoKSk7Cisg
ICAgICAgIFV0aWw6OnJ1bigmbV9kaWRGaW5pc2hMb2FkKTsKKworICAgICAgICByZXR1cm4gIW1f
ZGlkRmFpbExvYWQ7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZXJyb3JEZXNjcmlwdGlvbihX
S0Vycm9yUmVmIGVycm9yUmVmKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IGJ1ZmZlclNpemUg
PSAxMDI0OworICAgICAgICBhdXRvIGVycm9yQ29kZSA9IFdLRXJyb3JHZXRFcnJvckNvZGUoZXJy
b3JSZWYpOworICAgICAgICBhdXRvIGVycm9yRGVzY3JpcHRpb24gPSBhZG9wdFdLKFdLRXJyb3JD
b3B5TG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JSZWYpKTsKKworICAgICAgICBjaGFyIGJ1ZmZl
cltidWZmZXJTaXplXTsKKyAgICAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhlcnJvckRlc2Ny
aXB0aW9uLmdldCgpLCBidWZmZXIsIGJ1ZmZlclNpemUpOworICAgICAgICBXVEZMb2dBbHdheXMo
IkVycm9yICVkICVzXG4iLCBlcnJvckNvZGUsIGJ1ZmZlcik7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGJvb2wgbV9kaWRGaW5pc2hMb2FkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkRmFpbExv
YWQgeyBmYWxzZSB9OworCisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBtX2NvbnRleHQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2ViVmlldz4gbV93ZWJWaWV3OworfTsKKwor
CitURVNUKEhUVFBTZXJ2ZXIsIFNpbXBsZUhUVFBTZXJ2ZXIpCit7CisgICAgSFRUUFNlcnZlciBo
dHRwU2VydmVyKHsKKyAgICAgICAgeyAiLyIgLCB7IjxodG1sPjx0aXRsZT5TaW1wbGUgSFRUUCBz
ZXJ2ZXIgdG9wPC90aXRsZT48L2h0bWw+In19LAorICAgICAgICB7ICIvdGVzdC5odG1sIiwgeyI8
aHRtbD48dGl0bGU+U2ltcGxlIEhUVFAgc2VydmVyIHRlc3Q8L3RpdGxlPjwvaHRtbD4ifX0KKyAg
ICB9LAorICAgIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwLAorICAgIDIpOworCisgICAgSFRU
UFNlcnZlciBodHRwc1NlcnZlcih7CisgICAgICAgIHsgIi8iICwgeyI8aHRtbD48dGl0bGU+U2lt
cGxlIEhUVFBTIHNlcnZlciB0b3A8L3RpdGxlPjwvaHRtbD4ifX0sCisgICAgICAgIHsgIi90ZXN0
Lmh0bWwiLCB7IjxodG1sPjx0aXRsZT5TaW1wbGUgSFRUUFMgc2VydmVyIHRlc3Q8L3RpdGxlPjwv
aHRtbD4ifX0KKyAgICB9LAorICAgIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywKKyAgICA0
KTsKKworICAgIFNlcnZlclRlc3RlciBsb2FkZXI7CisgICAgU3RyaW5nQnVpbGRlciBodHRwVVJM
OworICAgIGh0dHBVUkwuYXBwZW5kKGh0dHBTZXJ2ZXIuc2VydmVyVVJMKCkpOworICAgIEVYUEVD
VF9UUlVFKGxvYWRlci5sb2FkKGh0dHBVUkwudG9TdHJpbmcoKSkpOworCisgICAgaHR0cFVSTC5h
cHBlbmQoIi90ZXN0Lmh0bWwiKTsKKyAgICBFWFBFQ1RfVFJVRShsb2FkZXIubG9hZChodHRwVVJM
LnRvU3RyaW5nKCkpKTsKKworICAgIFN0cmluZ0J1aWxkZXIgaHR0cHNVUkw7CisgICAgaHR0cHNV
UkwuYXBwZW5kKGh0dHBzU2VydmVyLnNlcnZlclVSTCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsb2Fk
ZXIubG9hZChodHRwc1VSTC50b1N0cmluZygpKSk7CisKKyAgICBodHRwc1VSTC5hcHBlbmQoIi90
ZXN0Lmh0bWwiKTsKKyAgICBFWFBFQ1RfVFJVRShsb2FkZXIubG9hZChodHRwc1VSTC50b1N0cmlu
ZygpKSk7CisKKyAgICBodHRwU2VydmVyLmFib3J0KCk7CisgICAgaHR0cHNTZXJ2ZXIuYWJvcnQo
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L2N1cmwvUHJveHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvY3VybC9Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIxZTkyOGM3NTU4ODY5YmEwMDRjZTI0NTAy
NDg1ZjkyZjBmNDU3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L2N1cmwvUHJveHkuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRl
ICJ3aW4vSFRUUFNlcnZlcldpbi5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRQcml2YXRl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
bmFtZXNwYWNlIEN1cmwgeworCitzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOworc3RhdGljIGJv
b2wgZGlkRmFpbExvYWQ7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdl
UmVmLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlk
RmFpbExvYWQgPSBmYWxzZTsKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGlj
IHZvaWQgZGlkRmFpbE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLRXJy
b3JSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgZGlkRmFpbExvYWQgPSB0cnVl
OworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmLCBXS0Vycm9yUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZhaWxMb2FkID0gdHJ1ZTsKKyAg
ICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNs
aWVudChXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9h
ZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xp
ZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJD
bGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9h
ZGVyQ2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uID0gZGlkRmFpbE5hdmlnYXRpb247CisgICAgbG9h
ZGVyQ2xpZW50LmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24gPSBkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOworCisgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQocGFnZSwg
JmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworCitURVNUKEN1cmwsIEVuYWJsZUFuZERpc2FibGVQ
cm94eSkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhD
b25maWd1cmF0aW9uKG51bGxwdHIpKTsKKyAgICBhdXRvIHN0b3JlID0gV0tXZWJzaXRlRGF0YVN0
b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7
CisKKyAgICBIVFRQU2VydmVyIGh0dHBTZXJ2ZXIoeyB7ICIvIiwgeyI8aHRtbD48dGl0bGU+UmVz
cG9uc2UgZnJvbSBIVFRQIHNlcnZlcjwvdGl0bGU+PC9odG1sPiJ9fSB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cCwgMyk7CisgICAgSFRUUFNlcnZlciBwcm94eVNlcnZlcih7IHsgIi8iLCB7
IjxodG1sPjx0aXRsZT5SZXNwb25zZSBmcm9tIFBST1hZIHNlcnZlcjwvdGl0bGU+PC9odG1sPiJ9
fSB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgMyk7CisKKyAgICBhdXRvIGh0dHBTZXJ2
ZXJVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGh0dHBTZXJ2ZXIuc2Vy
dmVyVVJMKCkudXRmOCgpLmRhdGEoKSkpOworICAgIGF1dG8gcHJveHlTZXJ2ZXJVUkwgPSBhZG9w
dFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHByb3h5U2VydmVyLnNlcnZlclVSTCgpLnV0
ZjgoKS5kYXRhKCkpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGh0dHBT
ZXJ2ZXJVUkwuZ2V0KCkpOworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOworICAgIEVYUEVDVF9GQUxTRShkaWRGYWlsTG9hZCk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJSZXNwb25zZSBmcm9tIEhUVFAgc2VydmVyIiwgYWRvcHRXSyhXS0Zy
YW1lQ29weVRpdGxlKFdLUGFnZUdldE1haW5GcmFtZSh3ZWJWaWV3LnBhZ2UoKSkpKS5nZXQoKSk7
CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3JrUHJveHlTZXR0aW5n
cyhzdG9yZSwgcHJveHlTZXJ2ZXJVUkwuZ2V0KCksIFV0aWw6OnRvV0soIiIpLmdldCgpKTsKKyAg
ICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBodHRwU2VydmVyVVJMLmdldCgpKTsKKyAg
ICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsK
KyAgICBFWFBFQ1RfRkFMU0UoZGlkRmFpbExvYWQpOworICAgIEVYUEVDVF9XS19TVFJFUSgiUmVz
cG9uc2UgZnJvbSBQUk9YWSBzZXJ2ZXIiLCBhZG9wdFdLKFdLRnJhbWVDb3B5VGl0bGUoV0tQYWdl
R2V0TWFpbkZyYW1lKHdlYlZpZXcucGFnZSgpKSkpLmdldCgpKTsKKworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZURpc2FibGVOZXR3b3JrUHJveHlTZXR0aW5ncyhzdG9yZSk7CisgICAgV0tQYWdlTG9h
ZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgaHR0cFNlcnZlclVSTC5nZXQoKSk7CisgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgRVhQRUNU
X0ZBTFNFKGRpZEZhaWxMb2FkKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJlc3BvbnNlIGZyb20g
SFRUUCBzZXJ2ZXIiLCBhZG9wdFdLKFdLRnJhbWVDb3B5VGl0bGUoV0tQYWdlR2V0TWFpbkZyYW1l
KHdlYlZpZXcucGFnZSgpKSkpLmdldCgpKTsKKworICAgIGh0dHBTZXJ2ZXIuYWJvcnQoKTsKKyAg
ICBwcm94eVNlcnZlci5hYm9ydCgpOworfQorCitURVNUKEN1cmwsIEVuYWJsZVByb3h5QmVmb3Jl
TG9hZGluZykKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdp
dGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKKyAgICBhdXRvIHN0b3JlID0gV0tXZWJzaXRlRGF0
YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcoY29udGV4dC5nZXQoKSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2Uo
KSk7CisKKyAgICBIVFRQU2VydmVyIGh0dHBTZXJ2ZXIoeyB7ICIvIiwgeyI8aHRtbD48dGl0bGU+
UmVzcG9uc2UgZnJvbSBIVFRQIHNlcnZlcjwvdGl0bGU+PC9odG1sPiJ9fSB9KTsKKyAgICBIVFRQ
U2VydmVyIHByb3h5U2VydmVyKHsgeyAiLyIsIHsiPGh0bWw+PHRpdGxlPlJlc3BvbnNlIGZyb20g
UFJPWFkgc2VydmVyPC90aXRsZT48L2h0bWw+In19IH0pOworCisgICAgYXV0byBodHRwU2VydmVy
VVJMID0gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhodHRwU2VydmVyLnNlcnZl
clVSTCgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBhdXRvIHByb3h5U2VydmVyVVJMID0gYWRvcHRX
SyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwcm94eVNlcnZlci5zZXJ2ZXJVUkwoKS51dGY4
KCkuZGF0YSgpKSk7CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVFbmFibGVDdXN0b21OZXR3b3Jr
UHJveHlTZXR0aW5ncyhzdG9yZSwgcHJveHlTZXJ2ZXJVUkwuZ2V0KCksIFV0aWw6OnRvV0soIiIp
LmdldCgpKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGh0dHBTZXJ2ZXJV
UkwuZ2V0KCkpOworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKKyAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaExvYWQpOworICAgIEVYUEVDVF9GQUxTRShkaWRGYWlsTG9hZCk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJSZXNwb25zZSBmcm9tIFBST1hZIHNlcnZlciIsIGFkb3B0V0soV0tGcmFtZUNv
cHlUaXRsZShXS1BhZ2VHZXRNYWluRnJhbWUod2ViVmlldy5wYWdlKCkpKSkuZ2V0KCkpOworCisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlRGlzYWJsZU5ldHdvcmtQcm94eVNldHRpbmdzKHN0b3JlKTsK
K30KK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9I
VFRQU2VydmVyV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL0hUVFBTZXJ2ZXJXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMwYjk4YmVkYWM0NjJjOTg1NzljMjg5ZWZlMDUwMDlmZWI2ZGNiMTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9IVFRQU2VydmVyV2lu
LmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhUVFBTZXJ2ZXJXaW4uaCIKKworI2luY2x1ZGUgIlV0aWxpdGllcy5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3Rk
OjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90b2Nv
bCwgc2l6ZV90IGNvbm5lY3Rpb25zKQorICAgIDogbV9wcm90b2NvbChwcm90b2NvbCkKKyAgICAs
IG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8
U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CisgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKKyAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogbGlzdCkKKyAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFpci5z
ZWNvbmQpOworICAgICAgICByZXR1cm4gbWFwOworICAgIH0ocmVzcG9uc2VzKSkKK3sKKyAgICBp
ZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHApIHsKKyAgICAgICAgbV9zZXJ2ZXIgPSBXVEY6
Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRDUFNlcnZlcj4oCisgICAgICAgICAg
ICBbdGhpc10gKFBsYXRmb3JtU29ja2V0IHNvY2tldCkgeworICAgICAgICAgICAgICAgIHJlc3Bv
bmRUb1JlcXVlc3RzKHNvY2tldCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY29ubmVj
dGlvbnMpOworICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzKSB7Cisg
ICAgICAgIG1fc2VydmVyID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxU
Q1BTZXJ2ZXI+KAorICAgICAgICAgICAgVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsCisgICAg
ICAgICAgICBbdGhpc10gKFNTTCogc3NsKSB7CisgICAgICAgICAgICAgICAgaWYgKHNzbCkKKyAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uZFRvUmVxdWVzdHMoc3NsKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBXVEY6Om51bGxvcHQsCisgICAgICAgICAgICBjb25uZWN0aW9ucyk7Cisg
ICAgfQorfQorCitIVFRQU2VydmVyOjp+SFRUUFNlcnZlcigpCit7CisgICAgaWYgKG1fc2VydmVy
KQorICAgICAgICBtX3NlcnZlci0+c3RvcCgpOworfQorCitzdGF0aWMgU3RyaW5nIHN0YXR1c1Rl
eHQodW5zaWduZWQgc3RhdHVzQ29kZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHsKKyAg
ICBjYXNlIDIwMDoKKyAgICAgICAgcmV0dXJuICJPSyJfczsKKyAgICBjYXNlIDMwMToKKyAgICAg
ICAgcmV0dXJuICJNb3ZlZCBQZXJtYW5lbnRseSJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gIHZv
aWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMoVCBjb25uZWN0aW9uSGFuZGxlKQorewor
ICAgIHN0YXRpYyBpbnQgQ09VTlQgPSAwOworICAgIGF1dG8gcmVxdWVzdCA9IFRDUFNlcnZlcjo6
cmVhZChjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBhdXRvIHJlcXVlc3RTdHJpbmcgPSBTdHJpbmc6
OmZyb21VVEY4KHJlcXVlc3QuZGF0YSgpLCByZXF1ZXN0LnNpemUoKSk7CisKKyAgICBjb25zdCBT
dHJpbmcgZ2V0UGF0aFByZWZpeCgiR0VUICIpOworICAgIGNvbnN0IFN0cmluZyBwb3N0UGF0aFBy
ZWZpeCgiUE9TVCAiKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aFN1ZmZpeCgiIEhUVFAvMS4xXHJc
biIpOworCisgICAgYXV0byBwYXRoRW5kID0gcmVxdWVzdFN0cmluZy5maW5kKHBhdGhTdWZmaXgp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocGF0aEVuZCAhPSBub3RGb3VuZCAsICJIVFRQU2Vy
dmVyIGFzc3VtZXMgcmVxdWVzdCBpcyBIVFRQIDEuMSIpOworICAgIGF1dG8gZG91YmxlTmV3bGlu
ZSA9IHJlcXVlc3RTdHJpbmcuZmluZCgiXHJcblxyXG4iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGRvdWJsZU5ld2xpbmUgIT0gbm90Rm91bmQsICJIVFRQU2VydmVyIGFzc3VtZXMgZW50aXJl
IEhUVFAgcmVxdWVzdCBpcyByZWNlaXZlZCBhdCBvbmNlIik7CisKKyAgICBzaXplX3QgcGF0aFBy
ZWZpeExlbmd0aCA9IDA7CisgICAgaWYgKCFyZXF1ZXN0U3RyaW5nLmZpbmQoZ2V0UGF0aFByZWZp
eCkpCisgICAgICAgIHBhdGhQcmVmaXhMZW5ndGggPSBnZXRQYXRoUHJlZml4Lmxlbmd0aCgpOwor
ICAgIGVsc2UgaWYgKCFyZXF1ZXN0U3RyaW5nLmZpbmQocG9zdFBhdGhQcmVmaXgpKQorICAgICAg
ICBwYXRoUHJlZml4TGVuZ3RoID0gcG9zdFBhdGhQcmVmaXgubGVuZ3RoKCk7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShwYXRoUHJlZml4TGVuZ3RoLCAiSFRUUFNlcnZlciBhc3N1bWVzIHJlcXVl
c3QgaXMgR0VUIG9yIFBPU1QiKTsKKworICAgIHNpemVfdCBwYXRoTGVuZ3RoID0gcGF0aEVuZCAt
IHBhdGhQcmVmaXhMZW5ndGg7CisgICAgU3RyaW5nIHBhdGggPSByZXF1ZXN0U3RyaW5nLnN1YnN0
cmluZyhwYXRoUHJlZml4TGVuZ3RoLCBwYXRoTGVuZ3RoKTsKKyAgICBpZiAocGF0aC5maW5kKCJo
dHRwOi8vIikgIT0gbm90Rm91bmQgfHwgcGF0aC5maW5kKCJodHRwczovLyIpICE9IG5vdEZvdW5k
KSB7CisgICAgICAgIFVSTCByZXF1ZXN0VVJMKHsgfSwgcGF0aCk7CisgICAgICAgIHBhdGggPSBT
dHJpbmcocmVxdWVzdFVSTC5wYXRoKCkuY2hhcmFjdGVyczgoKSwgcmVxdWVzdFVSTC5wYXRoKCku
bGVuZ3RoKCkpOworICAgIH0KKworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZXF1ZXN0UmVz
cG9uc2VNYXAuY29udGFpbnMocGF0aCksICJUaGlzIEhUVFBTZXJ2ZXIgZG9lcyBub3Qga25vdyBo
b3cgdG8gcmVzcG9uZCB0byBhIHJlcXVlc3QgZm9yICVzIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gY29udGVudExlbmd0aEJlZ2luID0gcmVxdWVzdFN0cmluZy5maW5kKCJDb250
ZW50LUxlbmd0aDogIik7CisgICAgaWYgKGNvbnRlbnRMZW5ndGhCZWdpbiAhPSBub3RGb3VuZCkg
eworICAgICAgICBhdXRvIGNvbnRlbnRMZW5ndGhFbmQgPSByZXF1ZXN0U3RyaW5nLmZpbmQoIlxy
XG4iLCBjb250ZW50TGVuZ3RoQmVnaW4pOworICAgICAgICBhdXRvIGxlbmd0aFN0cmluZyA9IHJl
cXVlc3RTdHJpbmcuc3Vic3RyaW5nKGNvbnRlbnRMZW5ndGhCZWdpbiwgY29udGVudExlbmd0aEVu
ZCAtIGNvbnRlbnRMZW5ndGhCZWdpbik7CisgICAgICAgIHNpemVfdCBjb250ZW50TGVuZ3RoID0g
bGVuZ3RoU3RyaW5nLnRvVUludCgpOworICAgICAgICBzaXplX3QgaGVhZGVyTGVuZ3RoID0gZG91
YmxlTmV3bGluZSArIFN0cmluZygiXHJcblxyXG4iKS5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBh
dXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAuZ2V0KHBhdGgpOworICAgIFN0cmlu
Z0J1aWxkZXIgcmVzcG9uc2VCdWlsZGVyOworICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIkhU
VFAvMS4xICIpOworICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2Uuc3Rh
dHVzQ29kZSk7CisgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgnICcpOworICAgIHJlc3BvbnNl
QnVpbGRlci5hcHBlbmQoc3RhdHVzVGV4dChyZXNwb25zZS5zdGF0dXNDb2RlKSk7CisgICAgcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsKKyAgICByZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNlLmJvZHkubGVuZ3RoKCkpOworICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiByZXNwb25z
ZS5oZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChwYWlyLmtl
eSk7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIjogIik7CisgICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQocGFpci52YWx1ZSk7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoIlxyXG4iKTsKKyAgICB9CisgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIp
OworICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocmVzcG9uc2UuYm9keSk7CisKKyAgICBhdXRv
IHJlc3BvbnNlQm9keUFuZEhlYWRlciA9IHJlc3BvbnNlQnVpbGRlci50b1N0cmluZygpLnJlbGVh
c2VJbXBsKCk7CisgICAgVENQU2VydmVyOjp3cml0ZShjb25uZWN0aW9uSGFuZGxlLCByZXNwb25z
ZUJvZHlBbmRIZWFkZXItPmNoYXJhY3RlcnM4KCksIHJlc3BvbnNlQm9keUFuZEhlYWRlci0+bGVu
Z3RoKCkpOworfQorCit2b2lkIEhUVFBTZXJ2ZXI6OmFib3J0KCkKK3sKKyAgICBpZiAobV9zZXJ2
ZXIpCisgICAgICAgIG1fc2VydmVyLT5zdG9wKCk7Cit9CisKK3VpbnQxNl90IEhUVFBTZXJ2ZXI6
OnBvcnQoKSBjb25zdAoreworICAgIGlmIChtX3NlcnZlcikKKyAgICAgICAgcmV0dXJuIG1fc2Vy
dmVyLT5wb3J0KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworU3RyaW5nIEhUVFBTZXJ2ZXI6OnNl
cnZlclVSTCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlcnZlcikKKyAgICAgICAgcmV0dXJuICIi
OworCisgICAgc3dpdGNoIChtX3Byb3RvY29sKSB7CisgICAgY2FzZSBQcm90b2NvbDo6SHR0cDoK
KyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImh0dHA6Ly8xMjcuMC4wLjE6IiwgU3RyaW5nOjpu
dW1iZXIocG9ydCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBz
OgorICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoImh0dHBzOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQoKSkp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9IVFRQU2VydmVyV2luLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL3dpbi9IVFRQU2VydmVyV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEwYjYx
MTUzY2U5NzY0YjlmMDZjODg5MmU0MzA0MWVmMWZlYTQ4YgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvd2luL0hUVFBTZXJ2ZXJXaW4uaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJUQ1BTZXJ2ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBIVFRQU2VydmVyIHsKK3B1YmxpYzoKKyAg
ICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOworICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90
IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OworICAgIEhUVFBTZXJ2ZXIoc3Rk
Ojppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90
b2NvbCA9IFByb3RvY29sOjpIdHRwLCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKKyAgICB+SFRU
UFNlcnZlcigpOworCisgICAgdm9pZCBhYm9ydCgpOworICAgIHVpbnQxNl90IHBvcnQoKSBjb25z
dDsKKyAgICBTdHJpbmcgc2VydmVyVVJMKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhUKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxUQ1BTZXJ2ZXI+IG1fc2VydmVyOworICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9j
b2w7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVz
cG9uc2VNYXA7Cit9OworCitzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKKyAgICBI
VFRQUmVzcG9uc2UoU3RyaW5nJiYgYm9keSkKKyAgICAgICAgOiBib2R5KFdURk1vdmUoYm9keSkp
IHsgfQorICAgIEhUVFBSZXNwb25zZShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZp
ZWxkcywgU3RyaW5nJiYgYm9keSkKKyAgICAgICAgOiBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFk
ZXJGaWVsZHMpKQorICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisgICAgSFRUUFJl
c3BvbnNlKHVuc2lnbmVkIHN0YXR1c0NvZGUsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVh
ZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5ID0geyB9KQorICAgICAgICA6IHN0YXR1c0NvZGUoc3Rh
dHVzQ29kZSkKKyAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJGaWVsZHMpKQor
ICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisKKyAgICBIVFRQUmVzcG9uc2UoY29u
c3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OworICAgIEhUVFBSZXNwb25zZShIVFRQUmVzcG9u
c2UmJikgPSBkZWZhdWx0OworICAgIEhUVFBSZXNwb25zZSgpID0gZGVmYXVsdDsKKyAgICBIVFRQ
UmVzcG9uc2UmIG9wZXJhdG9yPShjb25zdCBIVFRQUmVzcG9uc2UmKSA9IGRlZmF1bHQ7CisgICAg
SFRUUFJlc3BvbnNlJiBvcGVyYXRvcj0oSFRUUFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKKworICAg
IHVuc2lnbmVkIHN0YXR1c0NvZGUgeyAyMDAgfTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBoZWFkZXJGaWVsZHM7CisgICAgU3RyaW5nIGJvZHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9y
bVNvY2tldFdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVNvY2tldFdp
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI2OTgyM2NiMWM1M2I4YWUzZjQzNDM4ZWM4NzBhNDBmM2ZmY2Yx
ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtU29j
a2V0V2luLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNvY2tldC5oIgorCisjaW5jbHVkZSA8bXV0ZXg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBTb2NrZXQgeworCit2b2lk
IGluaXRpYWxpemUoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKGZsYWcsIFtdIHsKKyAgICAgICAgV1NBREFUQSBkYXRhOworICAgICAgICBX
T1JEIHZlcnNpb25SZXF1ZXN0ZWQgPSBNQUtFV09SRCgyLCAwKTsKKyAgICAgICAgV1NBU3RhcnR1
cCh2ZXJzaW9uUmVxdWVzdGVkLCAmZGF0YSk7CisgICAgfSk7Cit9CisKK1BsYXRmb3JtU29ja2V0
IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQoreworICAgIHJldHVy
biA6OnNvY2tldChkb21haW4sIHR5cGUsIHByb3RvY29sKTsKK30KKworUGxhdGZvcm1Tb2NrZXQg
YWNjZXB0KFBsYXRmb3JtU29ja2V0IHNvY2tldCwgc3RydWN0IHNvY2thZGRyKiBhZGRyLCBQbGF0
Zm9ybVNvY2tsZW4gKmFkZHJsZW4pCit7CisgICAgcmV0dXJuIDo6YWNjZXB0KHNvY2tldCwgYWRk
ciwgYWRkcmxlbik7Cit9CisKK2ludCBzaHV0ZG93bihQbGF0Zm9ybVNvY2tldCBzb2NrZXQpCit7
CisgICAgcmV0dXJuIDo6c2h1dGRvd24oc29ja2V0LCBTRF9CT1RIKTsKK30KKworaW50IGNsb3Nl
KFBsYXRmb3JtU29ja2V0IHNvY2tldCkKK3sKKyAgICByZXR1cm4gOjpjbG9zZXNvY2tldChzb2Nr
ZXQpOworfQorCitpbnQgcmVhZChQbGF0Zm9ybVNvY2tldCBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwg
c2l6ZV90IGNvdW50KQoreworICAgIHJldHVybiA6OnJlY3Yoc29ja2V0LCBzdGF0aWNfY2FzdDxj
aGFyKj4oYnVmZmVyKSwgY291bnQsIDApOworfQorCitpbnQgd3JpdGUoUGxhdGZvcm1Tb2NrZXQg
c29ja2V0LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4g
OjpzZW5kKHNvY2tldCwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50LCAw
KTsKK30KKworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400719</attachid>
            <date>2020-05-31 21:00:32 -0700</date>
            <delta_ts>2020-06-01 02:52:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200601125347.patch</filename>
            <type>text/plain</type>
            <size>34936</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjNTQzMmVlMmFjMjUz
YTVhMTk0MWE0YTllMTExZGIzMmIxMGEyYS4uZDRkZGIxOTdmYTBiZjA0ZjEwN2Q2ZjcyNTlkNmJi
YWIyMzc5NzA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA1LTMxICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIHdpbmNhaXJvLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyREI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
c2V0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjphbGxEb21haW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21E
T00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyk6CisKIDIwMjAtMDUtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGlkeSB1cCBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODVhMzllMzZkNjkzNThlYzE0OGUxMTkwZTEw
YjFhNzAzYWU0MmNiZi4uMTE3MWY0OTllMmQ2OWU0NWMzNTUwYjQxYjg3YzdhZDUyYzZhNTE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0wNS0zMSAgVGFrYXNoaSBLb21vcmkgIDxU
YWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gSW1wbGVtZW50IGZ1bmN0
aW9ucyB0byB1c2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzY5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbnMgd2hpY2ggYXJl
IHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciB3aW5jYWly
by4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLwor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6PndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKE5ldHdv
cmtEYXRhVGFza0N1cmw6OmJsb2NrQ29va2llcyk6CisgICAgICAgIChOZXR3b3JrRGF0YVRhc2tD
dXJsOjp1bmJsb2NrQ29va2llcyk6CisgICAgICAgIChOZXR3b3JrRGF0YVRhc2tDdXJsOjppc1Ro
aXJkUGFydHlSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6
dHJ5SHR0cEF1dGhlbnRpY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrQ3VybDo6dHJ5UHJveHlBdXRoZW50aWNhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeVNlcnZlclRydXN0RXZhbHVhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OnJlc3RhcnRX
aXRoQ3JlZGVudGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a0N1cmw6OmFwcGVuZENvb2tpZUhlYWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0N1cmw6OmhhbmRsZUNvb2tpZUhlYWRlcnMpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorCiAyMDIwLTA1LTMwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGVwcmVjYXRlIFdLQnVu
ZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYmI2MmIx
N2M3NWVmYjdjMjQ5ZTg4MzBhZjg4MTdiZDA3ZDUwZGQxLi43ZWQ1ZGNkYmRkY2VhMTliYTc4ZGQ4
ODQwY2IxMGY2NzkyOWE0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjkzLDYgKzY5Myw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgZG9tL0RvY3VtZW50RnJhZ21l
bnQuaWRsCiAgICAgZG9tL0RvY3VtZW50RnVsbHNjcmVlbi5pZGwKICAgICBkb20vRG9jdW1lbnRP
clNoYWRvd1Jvb3QuaWRsCisgICAgZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICAgICBk
b20vRG9jdW1lbnRUb3VjaC5pZGwKICAgICBkb20vRG9jdW1lbnRUeXBlLmlkbAogICAgIGRvbS9E
cmFnRXZlbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBiMjI5NDliOThlYzFjZTRhZDRjMTBiZjE5NGMwNGNi
MTkzMTFkMWQ3Li4yMjgyMDllMWVkMjA4MjNkNGUzYTdhNzY5NGM3NWRmYjkwMTdjMTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHAKQEAgLTYzLDYgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICJDUkVBVEUg
SU5ERVggSUYgTk9UIEVYSVNUUyBkb21haW5faW5kZXggT04gQ29va2llKGRvbWFpbik7IgogI2Rl
ZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAogICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVY
SVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisjZGVmaW5lIFNFTEVDVF9BTExfRE9N
QUlOU19TUUwgXAorICAgICJTRUxFQ1QgRElTVElOQ1QgZG9tYWluIEZST00gQ29va2llOyIKICNk
ZWZpbmUgQ0hFQ0tfRVhJU1RTX0NPT0tJRV9TUUwgXAogICAgICJTRUxFQ1QgZG9tYWluIEZST00g
Q29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKTsiCiAjZGVmaW5l
IENIRUNLX0VYSVNUU19IVFRQT05MWV9DT09LSUVfU1FMIFwKQEAgLTc2LDYgKzc4LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUgPSA/
IEFORCBkb21haW4gPSA/OyIKICNkZWZpbmUgREVMRVRFX0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwg
XAogICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgc2Vzc2lvbiA9IDE7IgorI2RlZmluZSBE
RUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdI
RVJFIGRvbWFpbiA9ID8gOyIKKyNkZWZpbmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQ
VF9IVFRQX09OTFlfU1FMIFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIChkb21haW4g
PSA/KSBBTkQgKGh0dHBvbmx5ID0gMCk7IgogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9TUUwg
XAogICAgICJERUxFVEUgRlJPTSBDb29raWU7IgogCkBAIC0xNjUsNiArMTcxLDggQEAgYm9vbCBD
b29raWVKYXJEQjo6b3BlbkRhdGFiYXNlKCkKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KENI
RUNLX0VYSVNUU19IVFRQT05MWV9DT09LSUVfU1FMKTsKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVt
ZW50KERFTEVURV9DT09LSUVfQllfTkFNRV9ET01BSU5fUEFUSF9TUUwpOwogICAgIGNyZWF0ZVBy
ZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwpOworICAgIGNy
ZWF0ZVByZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NRTCk7CisgICAg
Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hU
VFBfT05MWV9TUUwpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjksNyArNTM3LDcgQEAg
Ym9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogICAgIHJl
dHVybiBjaGVja1NRTGl0ZVJldHVybkNvZGUoc3RhdGVtZW50LnN0ZXAoKSk7CiB9CiAKLWJvb2wg
Q29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjpTb3VyY2Ugc291cmNlKQorYm9v
bCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIE9w
dGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewogICAgIGlmICghaXNFbmFibGVkKCkg
fHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU1MCw5
ICs1NTgsMzEgQEAgYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbkFjY2VwdENv
b2tpZSgqY29va2llLCBmaXJzdFBhcnR5LCB1cmwsIHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmIChjYXBwZWRMaWZldGltZSAmJiBjb29raWUtPmV4cGlyZXMpIHsKKyAg
ICAgICAgQVNTRVJUKCpjYXBwZWRMaWZldGltZSA+PSAwX3MpOworICAgICAgICBhdXRvIGNhcHBl
ZEV4cGlyZXMgPSBXYWxsVGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7CisgICAgICAgIGlm
IChjYXBwZWRFeHBpcmVzIDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpjb29raWUtPmV4cGly
ZXMgLyBXVEY6Om1zUGVyU2Vjb25kKSkKKyAgICAgICAgICAgIGNvb2tpZS0+ZXhwaXJlcyA9IGNh
cHBlZEV4cGlyZXMuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKTsKKyAgICB9CisK
ICAgICByZXR1cm4gc2V0Q29va2llKCpjb29raWUpOwogfQogCitIYXNoU2V0PFN0cmluZz4gQ29v
a2llSmFyREI6OmFsbERvbWFpbnMoKQoreworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgU0VMRUNUX0FMTF9ET01BSU5TX1NRTCk7CisgICAgc3RhdGVtZW50LnByZXBh
cmUoKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zOworICAgIHdoaWxlIChzdGF0ZW1l
bnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byBkb21haW4gPSBzdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICB9
CisKKyAgICBzdGF0ZW1lbnQuZmluYWxpemUoKTsKKyAgICByZXR1cm4gZG9tYWluczsKK30KKwog
Ym9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09w
ZW4oKSkKQEAgLTU4OSw2ICs2MTksMTMgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2ll
cyhjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDb29raWVKYXJE
Qjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGJvb2wg
aW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvJiBzdGF0ZW1lbnQgPSBwcmVwYXJl
ZFN0YXRlbWVudChpbmNsdWRlSHR0cE9ubHlDb29raWVzID8gREVMRVRFX0NPT0tJRVNfQllfRE9N
QUlOX1NRTCA6IERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9FWENFUFRfSFRUUF9PTkxZX1NRTCk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIGhvc3RuYW1lKTsKKyAgICByZXR1cm4gY2hlY2tT
UUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5zdGVwKCkpOworfQorCiBib29sIENvb2tpZUphckRC
OjpkZWxldGVBbGxDb29raWVzKCkKIHsKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFi
YXNlLmlzT3BlbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuaAppbmRleCAxMTJmNjMyMTI4YjFhYTcyYjQ2MzliNjJhM2ViNWE3OWUz
N2M1ZjgwLi4zZjFjNTRiMmI3NzFkOTBmZGQwOGE0YTI5YTBmNDVmMzc4NGM0NWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApA
QCAtNTYsMTMgKzU2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjY2VwdFBvbGljeShDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7IG1fYWNjZXB0UG9saWN5ID0gcG9saWN5OyB9CiAgICAg
Q29va2llQWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0
UG9saWN5OyB9CiAKKyAgICBIYXNoU2V0PFN0cmluZz4gYWxsRG9tYWlucygpOwogICAgIE9wdGlv
bmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNv
bnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9u
KTsKICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29r
aWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZSwgU291cmNlKTsKKyAgICBib29sIHNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llLCBTb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+
IGNhcHBlZExpZmV0aW1lID0gV1RGOjpudWxsb3B0KTsKICAgICBib29sIHNldENvb2tpZShjb25z
dCBDb29raWUmKTsKIAogICAgIGJvb2wgZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wgZGVsZXRlQ29va2llcyhjb25zdCBTdHJpbmcm
IHVybCk7CisgICAgYm9vbCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgYm9vbCBpbmNsdWRlSHR0cG9ubHlDb29raWVzKTsKICAgICBib29sIGRlbGV0ZUFs
bENvb2tpZXMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvb2tpZUphckRCKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRl
eCBhZDNkMTM5NzBiM2M3MmQ2MGJmNTU5MDRiZTY0ZTY2YjEwNDk4M2E5Li5jOTY3OTllNDE1YmZk
Mzc2ZGY5YjNiNDM0ZWFhNzZlOWU1Yzg3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkN1cmwuY3BwCkBAIC05NSw5ICs5NSwxNCBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVEYXRhYmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJh
c2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNo
b3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewotICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2ll
KGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCk7Cisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBPcHRpb25hbDxTZWNvbmRz
PiBjYXBwZWRMaWZldGltZSA9IGNsaWVudFNpZGVDb29raWVDYXAoUmVnaXN0cmFibGVEb21haW4g
eyBmaXJzdFBhcnR5IH0sICpwYWdlSUQpOworI2Vsc2UKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBj
YXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGNvb2tpZURhdGFiYXNl
KCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6
OlNjcmlwdCwgY2FwcGVkTGlmZXRpbWUpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTEzMyw5ICsxMzgsMTAg
QEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lv
bigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29u
c3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCiB7Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGNv
b2tpZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCkBAIC0xNjQsOSArMTcwLDEwIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSkKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogY29v
a2llSG9zdE5hbWVzICovLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzKQordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9u
bHlDb29raWVzKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLgorICAgIGZv
ciAoYXV0byBob3N0bmFtZSA6IGNvb2tpZUhvc3ROYW1lcykKKyAgICAgICAgY29va2llRGF0YWJh
c2UoKS5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUsIGluY2x1ZGVIdHRwT25seUNv
b2tpZXMgPT0gSW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGNvb2tpZUhvc3ROYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCA4MDEzYWM2ZDY1MjVlOTJjNTdiYTEyMDU1YTI5
MmQ0MWRjZjc3ODFmLi5mYmE4NmRhNGMxMzQzNzY0MzQ0MzBlYzhhNjQxODRhMTYwM2NmOWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIFJlZjxOZXR3b3JrRGF0YVRhc2s+IE5ldHdvcmtEYXRhVGFzazo6
Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0CiAgICAgcmV0dXJuIE5l
dHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVx
dWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQ
b2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRl
cnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5p
c01haW5GcmFtZU5hdmlnYXRpb24pOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCi0gICAgcmV0dXJu
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMu
cmVxdWVzdCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5j
b250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pOworICAgIHJldHVybiBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggNDRlOTQ2YjlkYmRh
NTI0MTAwNWQ1MzRiOTFhZjcxMWMxZDk3ZmY1Mi4uNTc0ZjE0Y2YwNzJjNGVkMzE3YjljMThjYzdj
Njk2M2Y5NDhkZTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtNDQsOCArNDQsMTEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1OZXR3b3JrRGF0
YVRhc2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0V2l0aENyZWRlbnRpYWxzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgQ29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgQ29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikK
K05ldHdvcmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciYgcGFnZUlELCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgQ29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwg
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
biwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lv
biwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24pCisgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKKyAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcoc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiB7CiAgICAgaWYgKG1fc2No
ZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKQogICAgICAgICByZXR1cm47CkBAIC02Nyw2
ICs3MCwxNyBAQCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdv
cmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhcwogICAgICAgICB9CiAgICAgfQogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIHNob3VsZEJsb2Nr
Q29va2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CisgICAgYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIXNo
b3VsZEJsb2NrQ29va2llcyAmJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24pCisgICAgICAgIHNob3Vs
ZEJsb2NrQ29va2llcyA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVz
KHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CisKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKQorICAgICAgICBibG9ja0Nv
b2tpZXMoKTsKKyNlbmRpZgorICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5JZk5l
ZWRlZChyZXF1ZXN0KTsKKwogICAgIG1fY3VybFJlcXVlc3QgPSBjcmVhdGVDdXJsUmVxdWVzdChX
VEZNb3ZlKHJlcXVlc3QpKTsKICAgICBpZiAoIW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgp
KSB7CiAgICAgICAgIG1fY3VybFJlcXVlc3QtPnNldFVzZXJQYXNzKG1faW5pdGlhbENyZWRlbnRp
YWwudXNlcigpLCBtX2luaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCkpOwpAQCAtMTI0LDcgKzEz
OCw3IEBAIE5ldHdvcmtEYXRhVGFzazo6U3RhdGUgTmV0d29ya0RhdGFUYXNrQ3VybDo6c3RhdGUo
KSBjb25zdAogCiBSZWY8Q3VybFJlcXVlc3Q+IE5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZUN1
cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlcXVlc3RTdGF0dXMgc3RhdHVz
KQogewotICAgIGlmIChzdGF0dXMgPT0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCkKKyAgICBp
ZiAoc3RhdHVzID09IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QgJiYgIW1fYmxvY2tpbmdDb29r
aWVzKQogICAgICAgICBhcHBlbmRDb29raWVIZWFkZXIocmVxdWVzdCk7CiAKICAgICAvLyBDcmVh
dGVzIGEgQ3VybFJlcXVlc3QgaW4gc3VzcGVuZGVkIHN0YXRlLgpAQCAtMjk2LDYgKzMxMCwxOCBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkK
ICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RDUykK
KyAgICBpZiAoIW1fYmxvY2tpbmdDb29raWVzKSB7CisgICAgICAgIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzOworICAgICAgICBpZiAoIXNob3VsZEJs
b2Nrb29raWVzICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAg
ICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCwgbV9z
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisKKyAgICAgICAgaWYgKHNob3Vs
ZEJsb2NrQ29va2llcykKKyAgICAgICAgICAgIGJsb2NrQ29va2llcygpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShtX3Jl
c3BvbnNlKTsKICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV1RGTW92
ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGRpZENoYW5nZUNyZWRlbnRpYWwsIGlzQ3Jvc3NPcmlnaW5dKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgewogICAgICAgICBpZiAobmV3UmVxdWVzdC5pc051
bGwoKSB8fCBtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcpCkBAIC0zMDgsNiArMzM0LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigpCiAg
ICAgICAgICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
IGF1dG8gcmVxdWVzdENvcHkgPSBuZXdSZXF1ZXN0OworICAgICAgICByZXN0cmljdFJlcXVlc3RS
ZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdENvcHkpOwogICAgICAgICBtX2N1cmxSZXF1
ZXN0ID0gY3JlYXRlQ3VybFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0Q29weSkpOwogICAgICAgICBp
ZiAoZGlkQ2hhbmdlQ3JlZGVudGlhbCAmJiAhbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIG1fY3VybFJlcXVlc3QtPnNldFVzZXJQYXNzKG1faW5pdGlhbENyZWRl
bnRpYWwudXNlcigpLCBtX2luaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCkpOwpAQCAtNDYzLDQg
KzQ5MCwxOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmhhbmRsZUNvb2tpZUhlYWRlcnMo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZQogICAgIH0KIH0KIAordm9pZCBOZXR3
b3JrRGF0YVRhc2tDdXJsOjpibG9ja0Nvb2tpZXMoKQoreworICAgIG1fYmxvY2tpbmdDb29raWVz
ID0gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp1bmJsb2NrQ29va2llcygp
Cit7CisgICAgbV9ibG9ja2luZ0Nvb2tpZXMgPSBmYWxzZTsKK30KKworYm9vbCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjppc1RoaXJkUGFydHlSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gIVdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9t
YWluc0VxdWFsKHJlcXVlc3QudXJsKCksIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNTJkMDg1YjQ0
YzE3ZTYwZjYxMzNmYmEwZTBjZDY5MzNlZTNhZjI1NS4uNTA5NGJiMWNiY2ZlYjgzMGZmZWY1MTky
MTRhNjQxZTNlZTZmMjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0yNyw4ICsyNywxMSBAQAogCiAj
aW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUmVxdWVz
dENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlv
blNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdDsKQEAgLTM4LDkgKzQxLDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0N1cmwgZmluYWwgOiBwdWJs
aWMgTmV0d29ya0RhdGFUYXNrLCBwdWJsaWMgV2ViQ29yZTo6Q3VybFJlcXVlc3RDbGllbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0N1cmwoc2Vzc2lvbiwgY2xpZW50
LCByZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ3VybChzZXNzaW9uLCBjbGllbnQs
IHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3Vs
ZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpOwogICAgIH0KIAogICAg
IH5OZXR3b3JrRGF0YVRhc2tDdXJsKCk7CkBAIC01NCw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFJldXNlZFJlcXVlc3QKICAgICB9OwogCi0gICAgTmV0d29ya0RhdGFUYXNrQ3VybChOZXR3
b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpD
b250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pOworICAgIE5ldHdvcmtEYXRhVGFza0N1
cmwoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3Jl
OjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIAogICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsKQEAgLTgyLDYgKzg1LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhcHBlbmRDb29raWVIZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdm9pZCBoYW5kbGVDb29raWVIZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OkN1cmxSZXNwb25zZSYpOwogCisgICAgYm9vbCBpc1RoaXJk
UGFydHlSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
YmxvY2tDb29raWVzKCk7CisgICAgdm9pZCB1bmJsb2NrQ29va2llcygpOworCiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpDdXJs
UmVxdWVzdD4gbV9jdXJsUmVxdWVzdDsKQEAgLTg5LDYgKzk2LDE0IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fYXV0aEZhaWx1
cmVDb3VudCB7IDAgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOworCisgICAgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgYm9vbCBtX2Jsb2NraW5nQ29va2llcyB7IGZhbHNlIH07CisjZW5kaWYKKyAgICBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmc6Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5j
cHAKaW5kZXggYmMyODgzYWUxM2U1YjAyOTNjNTE2ODc1OWM1ODVjM2Q0ZDZjNGZiNC4uY2Y2ZWI0
ZDcyNDAxMDljNWY1ODllMGQzZTVkMDIyNWViMWMzNDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAKQEAg
LTQzLDYgKzQzLDE0IEBAIE5ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1NlCiAgICAgaWYgKCFwYXJhbWV0
ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZS5pc0VtcHR5KCkpCiAgICAgICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5pcXVlUmVmPENvb2tp
ZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkpOwogICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUocGFyYW1ldGVy
cy5wcm94eVNldHRpbmdzKSk7CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5OworICAgIG1fc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA/IFNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOworICAg
IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID8gRW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTo6WWVzIDogRW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZTo6Tm87CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlOworICAgIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
ZW5hYmxlZCk7CisjZW5kaWYKIH0KIAogTmV0d29ya1Nlc3Npb25DdXJsOjp+TmV0d29ya1Nlc3Np
b25DdXJsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGI1YTVmMDQ0NmU3YmI2MTI0NDVkZWQwNjQ5YjA2
OGM5Yzk2Mjc3MWYuLmJlNTAzMDc5NzQwMmQwMGJhMGUwYmMzNzFlNTJjOGMxZDQ3YjFjYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldLU2VjdXJpdHlPcmln
aW5SZWYuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpA
QCAtODE5LDMgKzgyMCwxOCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQnVuZGxlSWRl
bnRpZmllckluTmV0d29ya1Byb2Nlc3MoV0tXZWJzaXRlRGF0YVN0b3JlUgogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHRvSW1wbChwYWdlUmVmKS0+
aWRlbnRpZmllcigpLCBbY29udGV4dCwgY2FsbGJhY2tdIChWZWN0b3I8U3RyaW5nPiYmIGRvbWFp
bnMpIHsKKyAgICAgICAgYXV0byBkb21haW5BcnJheVJlZiA9IFdLTXV0YWJsZUFycmF5Q3JlYXRl
KCk7CisgICAgICAgIGZvciAoYXV0byBkb21haW4gOiBkb21haW5zKQorICAgICAgICAgICAgV0tB
cnJheUFwcGVuZEl0ZW0oZG9tYWluQXJyYXlSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICAgICAgY2Fs
bGJhY2soY29udGV4dCwgZG9tYWluQXJyYXlSZWYpOworICAgIH0pOworI2Vsc2UKKyAgICBjYWxs
YmFjayhjb250ZXh0LCBXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKKyNlbmRpZgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aAppbmRleCA3ODc4NzJhZTI3ZjhhM2I0ZDIyYTdlNTkyYzhmNWExZjlhODU5MGNhLi42YTBjY2Q4
N2M2ODI2MGYxODRiZjBhMTYwNDc5YmRhZjNiNGI3YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTYyLDYg
KzE2Miw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVT
aXplRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlCiAKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFBlck9yaWdpblN0b3JhZ2VRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB1aW50NjRfdCBxdW90YSkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25TZXRQZXJPcmlnaW5T
dG9yYWdlUXVvdGEpOwogCit0eXBlZGVmIHZvaWQoKldLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24pKHZvaWQqIGNvbnRleHQsIFdLQXJyYXlSZWYgZG9t
YWlucyk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1BhZ2VSZWYg
cGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNGdW5jdGlvbiBjYWxsYmFjayk7CisKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9ucyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsKIAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwZjU1
NmE0ZTBhMGQwMTVlNjdkODhlZDcwOTg0MmFmYTZkYzQyNmFlLi41MmM5Zjk0MDJjM2FlYmMzNjZl
YjljM2RhODIwYmEzMGQ3NzJiNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjMyNCw2ICsyMzI0
LDkgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1l
dGVycygpCiAgICAgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSBwZXJPcmlnaW5T
dG9yYWdlUXVvdGEoKTsKICAgICBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdl
UXVvdGEgPSBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCk7CiAKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQgPSBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworI2VuZGlmCiAgICAgcGxhdGZvcm1TZXROZXR3
b3JrUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmNTBlNjhh
MmQ5MTUzZTdlMTYyNDdhNzE3NGFjYWZhZTcyYTY5NGUuLmRmMDY1MTNjZGZiZjhmNDRhM2RkMDEy
ZDk1MDI3NWVjNjhlMjE2ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNS0zMSAgVGFrYXNoaSBLb21vcmkg
IDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gSW1wbGVtZW50IGZ1
bmN0aW9ucyB0byB1c2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzY5MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbnMgd2hpY2gg
YXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciB3aW5j
YWlyby4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LworCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0OjpHZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6Omdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMpOgorCiAyMDIwLTA1LTMxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBdXRvVHJhZGVyIGNyYXNoZWQg
d2hpbGUgYnJvd3Npbmcgc2VhcmNoIHJlc3VsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggZTY2OTczYjc0NWRlZThiYWNmNzE3Y2Q4MjZjYmE4N2NiZmE4
ZjQ5OS4uNTk2YjhiNjYyMGMyMmFlZTM5ODdiMWUxMzY3ZDMxYzcyYzJmNDQ5MSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMxNjUsOCArMzE2NSw0NyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogewog
fQogCitzdHJ1Y3QgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQgewor
ICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9s
bGVyJiBjb250cm9sbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmIGhhbmRsZXIpCisgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAg
ICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQorICAgIHsKKyAgICB9CisK
KyAgICBUZXN0Q29udHJvbGxlciYgdGVzdENvbnRyb2xsZXI7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgYm9vbCBk
b25lIHsgZmFsc2UgfTsKK307CisKK3ZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxs
YmFjayh2b2lkKiB1c2VyRGF0YSwgV0tBcnJheVJlZiBkb21haW5MaXN0KQoreworICAgIGF1dG8q
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNr
Q29udGV4dCo+KHVzZXJEYXRhKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdERvbWFpbnM7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXS0FycmF5R2V0U2l6ZShkb21haW5MaXN0KTsgaSsr
KSB7CisgICAgICAgIGF1dG8gZG9tYWluID0gIHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLQXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5MaXN0LCBpKSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjp2ZWN0b3I8Y2hhcj4oV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KGRvbWFpbikpOworICAgICAgICBhdXRvIHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENT
dHJpbmcoZG9tYWluLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKworICAgICAgICBy
ZXN1bHREb21haW5zLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHN0cmlu
Z0xlbmd0aCAtIDEpKTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Y29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIGNvbnRleHQtPmNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0RG9t
YWlucykpOworCisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcygpCiB7CisgICAgYXV0byBkYXRhU3RvcmUgPSBXS0NvbnRleHRH
ZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBHZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzLCBbdGhpc10gKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRS
ZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV1RGTW92ZShkb21haW5zKSk7CisgICAgfSk7
CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhkYXRh
U3RvcmUsIG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJmNvbnRleHQsIGdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0
KTsKIH0KIAogc3RydWN0IExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tDb250ZXh0IHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZmJkYTgzYWE1OTQwZTlmYzZlZGYyZTQwYjg2YjZhZmY0YjQ3ZWNjLi4wZWM3MzI4
ZWFhZTBjM2MzMDZmYWZkYzI3NDFiZjNmNGU4YTI1NGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjAtMDUtMzEgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisK
KyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBmdW5jdGlvbnMgdG8gdXNlIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDc2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGFyZSByZXF1aXJlZCB0byBpbXBsZW1lbnQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBmb3Igd2luY2Fpcm8uCisKKyAgICAgICAgVGVzdHM6IGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy8KKworICAgICAgICAqIHBsYXRmb3JtL3dpbmNh
aXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDUtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaUJvb2tzXSBFbXB0eSBwYWdlcyBhcHBlYXIgaW4gYm9v
awpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYzMxNDJjODU0ZDM0N2FmOWMzYzcxNzUzZmU3M2U4ODZkZTk5YzdhOC4uZmYzNTg1MTBkNTdm
OTU4OGYxYjc5ZjhiZmEyNzk0ZmRkMmU4N2ZmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTc1LDkgKzExNzUsNDUgQEAgaHR0cC90
ZXN0cy9yZWZlcnJlci1wb2xpY3kvbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUvIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUtdXJsL2Nyb3NzLW9yaWdpbi1odHRw
LWh0dHAuaHRtbCBbIFNraXAgXSAKIGh0dHAvdGVzdHMvcmVmZXJyZXItcG9saWN5L3Vuc2FmZS11
cmwvY3Jvc3Mtb3JpZ2luLWh0dHAuaHR0cHMuaHRtbCBbIFNraXAgXSAKIAotIyBBbGwgdGltaW5n
IG91dAotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFsgU2tpcCBdCisjIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MKK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFBh
c3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8t
cmVkaXJlY3QtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRp
b24uaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tp
ZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWVzLXdpdGgtYW5kLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMtZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RlbGV0ZS1z
Y3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9kby1ub3QtcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0LWRhdGFi
YXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kby1u
b3QtcmVtb3ZlLWJsb2NraW5nLWluLXJlZGlyZWN0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmljdC1iYXNlZC1vbi10
b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFz
ZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFNraXAgXQoraHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1k
YXRhLXJlbW92ZWQtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BpbmctdG8tcHJl
dmFsZW50LXJlc291cmNlLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9waW5nLXRvLXByZXZhbGVudC1yZXNvdXJjZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdp
dGgtdXNlci1pbnRlcmFjdGlvbi10aW1lb3V0LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aC11c2Vy
LWludGVyYWN0aW9uLXRpbWVvdXQuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24t
ZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1yZXNvdXJjZS13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFNraXAg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1z
YW1lLXNpdGUtc3RyaWN0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNp
dGUtZGF0YS1kZWxldGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1p
bnRlcmFjdGlvbi1kYXRhYmFzZS5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRo
LWludGVyYWN0aW9uLnBocCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZXBoZW1lcmFsLWRh
dGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZXBoZW1lcmFsLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
b24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVw
b3J0ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUtZGF0YWJhc2UuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24t
b25seS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGltZS5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1y
ZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBv
cnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgU2tpcCBdCiAKKyMgQWxsIHRp
bWluZyBvdXQKIGh0dHAvdGVzdHMvc2VjdXJpdHkgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJp
dHkvNDAxLWxvZ291dC80MDEtbG9nb3V0LnBocCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zZWN1cml0
eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400727</attachid>
            <date>2020-06-01 02:52:21 -0700</date>
            <delta_ts>2020-06-05 00:26:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200601184537.patch</filename>
            <type>text/plain</type>
            <size>34412</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjNTQzMmVlMmFjMjUz
YTVhMTk0MWE0YTllMTExZGIzMmIxMGEyYS4uZDA5NmEyOWM3YzAxYzU2MmQyNTYzMWY3MzFiYmFm
ZGFmMjdmMjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTAxICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIHdpbmNhaXJvLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyREI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
c2V0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjphbGxEb21haW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21E
T00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyk6CisKIDIwMjAtMDUtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGlkeSB1cCBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODVhMzllMzZkNjkzNThlYzE0OGUxMTkwZTEw
YjFhNzAzYWU0MmNiZi4uNGE1NTk4ZTE3OWQ3MGZmMWRhZThiY2NlOGI1ZWJkYmY1ZmVmOGRiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNi0wMSAgVGFrYXNoaSBLb21vcmkgIDxU
YWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gSW1wbGVtZW50IGZ1bmN0
aW9ucyB0byB1c2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzY5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbnMgd2hpY2ggYXJl
IHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciB3aW5jYWly
by4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLwor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6YmxvY2tDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRCbG9ja0Nvb2tpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppc1RoaXJkUGFydHlSZXF1ZXN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKwogMjAyMC0wNS0zMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcHJlY2F0ZSBX
S0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJi
NjJiMTdjNzVlZmI3YzI0OWU4ODMwYWY4ODE3YmQwN2Q1MGRkMS4uN2VkNWRjZGJkZGNlYTE5YmE3
OGRkODg0MGNiMTBmNjc5MjlhNGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY5Myw2ICs2
OTMsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9Eb2N1bWVudEZy
YWdtZW50LmlkbAogICAgIGRvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAgICAgZG9tL0RvY3Vt
ZW50T3JTaGFkb3dSb290LmlkbAorICAgIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsCiAg
ICAgZG9tL0RvY3VtZW50VG91Y2guaWRsCiAgICAgZG9tL0RvY3VtZW50VHlwZS5pZGwKICAgICBk
b20vRHJhZ0V2ZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYjIyOTQ5Yjk4ZWMxY2U0YWQ0YzEwYmYxOTRj
MDRjYjE5MzExZDFkNy4uMjI4MjA5ZTFlZDIwODIzZDRlM2E3YTc2OTRjNzVkZmI5MDE3YzEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCkBAIC02Myw2ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAiQ1JF
QVRFIElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyIK
ICNkZWZpbmUgQ1JFQVRFX1BBVEhfSU5ERVhfU1FMIFwKICAgICAiQ1JFQVRFIElOREVYIElGIE5P
VCBFWElTVFMgcGF0aF9pbmRleCBPTiBDb29raWUocGF0aCk7IgorI2RlZmluZSBTRUxFQ1RfQUxM
X0RPTUFJTlNfU1FMIFwKKyAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENvb2tpZTsi
CiAjZGVmaW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKICAgICAiU0VMRUNUIGRvbWFpbiBG
Uk9NIENvb2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7IgogI2Rl
ZmluZSBDSEVDS19FWElTVFNfSFRUUE9OTFlfQ09PS0lFX1NRTCBcCkBAIC03Niw2ICs3OCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBuYW1l
ID0gPyBBTkQgZG9tYWluID0gPzsiCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lPTl9DT09LSUVf
U1FMIFwKICAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyIKKyNkZWZp
bmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NRTCBcCisgICAgIkRFTEVURSBGUk9NIENvb2tp
ZSBXSEVSRSBkb21haW4gPSA/IDsiCisjZGVmaW5lIERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9F
WENFUFRfSFRUUF9PTkxZX1NRTCBcCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSAoZG9t
YWluID0gPykgQU5EIChodHRwb25seSA9IDApOyIKICNkZWZpbmUgREVMRVRFX0FMTF9DT09LSUVf
U1FMIFwKICAgICAiREVMRVRFIEZST00gQ29va2llOyIKIApAQCAtMTY1LDYgKzE3MSw4IEBAIGJv
b2wgQ29va2llSmFyREI6Om9wZW5EYXRhYmFzZSgpCiAgICAgY3JlYXRlUHJlcGFyZVN0YXRlbWVu
dChDSEVDS19FWElTVFNfSFRUUE9OTFlfQ09PS0lFX1NRTCk7CiAgICAgY3JlYXRlUHJlcGFyZVN0
YXRlbWVudChERUxFVEVfQ09PS0lFX0JZX05BTUVfRE9NQUlOX1BBVEhfU1FMKTsKICAgICBjcmVh
dGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVfQllfTkFNRV9ET01BSU5fU1FMKTsKKyAg
ICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9TUUwpOwor
ICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQ
VF9IVFRQX09OTFlfU1FMKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTI5LDcgKzUzNyw3
IEBAIGJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKICAg
ICByZXR1cm4gY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5zdGVwKCkpOwogfQogCi1i
b29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBib2R5LCBDb29raWVKYXJEQjo6U291cmNlIHNvdXJjZSkK
K2Jvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjpTb3VyY2Ugc291cmNl
LCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKICAgICBpZiAoIWlzRW5hYmxl
ZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
NTAsOSArNTU4LDMxIEBAIGJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5BY2Nl
cHRDb29raWUoKmNvb2tpZSwgZmlyc3RQYXJ0eSwgdXJsLCBzb3VyY2UpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBpZiAoY2FwcGVkTGlmZXRpbWUgJiYgY29va2llLT5leHBpcmVzKSB7
CisgICAgICAgIEFTU0VSVCgqY2FwcGVkTGlmZXRpbWUgPj0gMF9zKTsKKyAgICAgICAgYXV0byBj
YXBwZWRFeHBpcmVzID0gV2FsbFRpbWU6Om5vdygpICsgKmNhcHBlZExpZmV0aW1lOworICAgICAg
ICBpZiAoY2FwcGVkRXhwaXJlcyA8IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqY29va2llLT5l
eHBpcmVzIC8gV1RGOjptc1BlclNlY29uZCkpCisgICAgICAgICAgICBjb29raWUtPmV4cGlyZXMg
PSBjYXBwZWRFeHBpcmVzLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCk7CisgICAg
fQorCiAgICAgcmV0dXJuIHNldENvb2tpZSgqY29va2llKTsKIH0KIAorSGFzaFNldDxTdHJpbmc+
IENvb2tpZUphckRCOjphbGxEb21haW5zKCkKK3sKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVt
ZW50KG1fZGF0YWJhc2UsIFNFTEVDVF9BTExfRE9NQUlOU19TUUwpOworICAgIHN0YXRlbWVudC5w
cmVwYXJlKCk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gZG9tYWluczsKKyAgICB3aGlsZSAoc3Rh
dGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgIGF1dG8gZG9tYWluID0gc3Rh
dGVtZW50LmdldENvbHVtblRleHQoMCk7CisgICAgICAgIGRvbWFpbnMuYWRkKGRvbWFpbik7Cisg
ICAgfQorCisgICAgc3RhdGVtZW50LmZpbmFsaXplKCk7CisgICAgcmV0dXJuIGRvbWFpbnM7Cit9
CisKIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCkBAIC01ODksNiArNjE5LDEzIEBAIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUNv
b2tpZXMoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ29va2ll
SmFyREI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCit7CisgICAgYXV0byYgc3RhdGVtZW50ID0gcHJl
cGFyZWRTdGF0ZW1lbnQoaW5jbHVkZUh0dHBPbmx5Q29va2llcyA/IERFTEVURV9DT09LSUVTX0JZ
X0RPTUFJTl9TUUwgOiBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9T
UUwpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBob3N0bmFtZSk7CisgICAgcmV0dXJuIGNo
ZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuc3RlcCgpKTsKK30KKwogYm9vbCBDb29raWVK
YXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9k
YXRhYmFzZS5pc09wZW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggMTEyZjYzMjEyOGIxYWE3MmI0NjM5YjYyYTNlYjVh
NzllMzdjNWY4MC4uM2YxYzU0YjJiNzcxZDkwZmRkMDhhNGEyOWEwZjQ1ZjM3ODRjNDVhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmgKQEAgLTU2LDEzICs1NiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY2NlcHRQb2xpY3ko
Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgeyBtX2FjY2VwdFBvbGljeSA9IHBvbGljeTsgfQog
ICAgIENvb2tpZUFjY2VwdFBvbGljeSBhY2NlcHRQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2VwdFBvbGljeTsgfQogCisgICAgSGFzaFNldDxTdHJpbmc+IGFsbERvbWFpbnMoKTsKICAgICBP
cHRpb25hbDxWZWN0b3I8Q29va2llPj4gc2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5
LCBjb25zdCBPcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vz
c2lvbik7CiAgICAgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwotICAgIGJvb2wgc2V0
Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBj
b29raWUsIFNvdXJjZSk7CisgICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlLCBPcHRpb25hbDxTZWNv
bmRzPiBjYXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdCk7CiAgICAgYm9vbCBzZXRDb29raWUo
Y29uc3QgQ29va2llJik7CiAKICAgICBib29sIGRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBib29sIGRlbGV0ZUNvb2tpZXMoY29uc3QgU3Ry
aW5nJiB1cmwpOworICAgIGJvb2wgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUsIGJvb2wgaW5jbHVkZUh0dHBvbmx5Q29va2llcyk7CiAgICAgYm9vbCBkZWxl
dGVBbGxDb29raWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWVKYXJEQihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggYWQzZDEzOTcwYjNjNzJkNjBiZjU1OTA0YmU2NGU2NmIxMDQ5ODNhOS4uYzk2Nzk5ZTQx
NWJmZDM3NmRmOWIzYjQzNGVhYTc2ZTllNWM4N2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtOTUsOSArOTUsMTQgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURh
dGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBjb29raWVEYXRhYmFzZSgpLnNldENv
b2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQp
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgT3B0aW9uYWw8U2Vj
b25kcz4gY2FwcGVkTGlmZXRpbWUgPSBjbGllbnRTaWRlQ29va2llQ2FwKFJlZ2lzdHJhYmxlRG9t
YWluIHsgZmlyc3RQYXJ0eSB9LCAqcGFnZUlEKTsKKyNlbHNlCisgICAgT3B0aW9uYWw8U2Vjb25k
cz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKyAgICBjb29raWVEYXRh
YmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJEQjo6U291
cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0xMzMsOSArMTM4
LDEwIEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgZmFsc2UpLCBmYWxzZSB9OwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgLyogbWFpbkRvY3VtZW50VVJMICovKQordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tp
ZXMsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgLyogbWFpbkRvY3VtZW50VVJMICovKQogewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCisgICAgZm9yIChjb25zdCBh
dXRvJiBjb29raWUgOiBjb29raWVzKQorICAgICAgICBjb29raWVEYXRhYmFzZSgpLnNldENvb2tp
ZShjb29raWUpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNv
bnN0IENvb2tpZSYgY29va2llKQpAQCAtMTY0LDkgKzE3MCwxMCBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUpCiAgICAg
Ly8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8q
IGNvb2tpZUhvc3ROYW1lcyAqLywgSW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0
dHBPbmx5Q29va2llcykKIHsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZC4KKyAg
ICBmb3IgKGF1dG8gaG9zdG5hbWUgOiBjb29raWVIb3N0TmFtZXMpCisgICAgICAgIGNvb2tpZURh
dGFiYXNlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lLCBpbmNsdWRlSHR0cE9u
bHlDb29raWVzID09IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6Olllcyk7CiB9CiAKIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXggODAxM2FjNmQ2NTI1ZTkyYzU3YmExMjA1
NWEyOTJkNDFkY2Y3NzgxZi4uZmJhODZkYTRjMTM0Mzc2NDM0NDMwZWM4YTY0MTg0YTE2MDNjZjlm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRh
c2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdAogICAgIHJldHVy
biBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJz
LnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBh
cmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRl
cnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKICNlbmRpZgogI2lmIFVTRShDVVJMKQotICAgIHJl
dHVybiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0
ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRl
cnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKKyAgICByZXR1cm4gTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1
ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0
ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVy
cy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlz
TWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDQ0ZTk0NmI5
ZGJkYTUyNDEwMDVkNTM0YjkxYWY3MTFjMWQ5N2ZmNTIuLjMyNDMxZTE1MjhhZGRiYWY4OTk5N2Ew
ZTUyZWFiMjFiNDZkMjUxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTQ0LDggKzQ0LDExIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29y
a0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdFdpdGhDcmVkZW50aWFscywgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24pCitOZXR3b3JrRGF0YVRhc2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25p
ZmYsIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNl
c3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCisgICAg
LCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGlmICht
X3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjcsNiArNzAsMTIgQEAgTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXMKICAgICAgICAgfQogICAgIH0K
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0KSkKKyAgICAgICAgYmxvY2tDb29raWVzKCk7CisjZW5kaWYKKyAg
ICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CisKICAg
ICBtX2N1cmxSZXF1ZXN0ID0gY3JlYXRlQ3VybFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAg
ICAgaWYgKCFtX2luaXRpYWxDcmVkZW50aWFsLmlzRW1wdHkoKSkgewogICAgICAgICBtX2N1cmxS
ZXF1ZXN0LT5zZXRVc2VyUGFzcyhtX2luaXRpYWxDcmVkZW50aWFsLnVzZXIoKSwgbV9pbml0aWFs
Q3JlZGVudGlhbC5wYXNzd29yZCgpKTsKQEAgLTEyNCw3ICsxMzMsNyBAQCBOZXR3b3JrRGF0YVRh
c2s6OlN0YXRlIE5ldHdvcmtEYXRhVGFza0N1cmw6OnN0YXRlKCkgY29uc3QKIAogUmVmPEN1cmxS
ZXF1ZXN0PiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZXF1ZXN0U3RhdHVzIHN0YXR1cykKIHsKLSAgICBpZiAoc3RhdHVz
ID09IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpCisgICAgaWYgKHN0YXR1cyA9PSBSZXF1ZXN0
U3RhdHVzOjpOZXdSZXF1ZXN0ICYmICFtX2Jsb2NraW5nQ29va2llcykKICAgICAgICAgYXBwZW5k
Q29va2llSGVhZGVyKHJlcXVlc3QpOwogCiAgICAgLy8gQ3JlYXRlcyBhIEN1cmxSZXF1ZXN0IGlu
IHN1c3BlbmRlZCBzdGF0ZS4KQEAgLTI5Niw2ICszMDUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUQ1MpCisgICAgaWYgKCFtX2Jsb2NraW5n
Q29va2llcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCkpCisgICAgICAgIGJsb2NrQ29v
a2llcygpOworI2VuZGlmCiAgICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSk7CiAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdURk1v
dmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBkaWRDaGFuZ2VDcmVkZW50aWFsLCBpc0Nyb3NzT3JpZ2luXShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNO
dWxsKCkgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nKQpAQCAtMzA4LDYgKzMyMSw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKQog
ICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAg
ICBhdXRvIHJlcXVlc3RDb3B5ID0gbmV3UmVxdWVzdDsKKyAgICAgICAgcmVzdHJpY3RSZXF1ZXN0
UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3RDb3B5KTsKICAgICAgICAgbV9jdXJsUmVx
dWVzdCA9IGNyZWF0ZUN1cmxSZXF1ZXN0KFdURk1vdmUocmVxdWVzdENvcHkpKTsKICAgICAgICAg
aWYgKGRpZENoYW5nZUNyZWRlbnRpYWwgJiYgIW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBtX2N1cmxSZXF1ZXN0LT5zZXRVc2VyUGFzcyhtX2luaXRpYWxDcmVk
ZW50aWFsLnVzZXIoKSwgbV9pbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpKTsKQEAgLTQ2Myw0
ICs0NzcsMzMgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpoYW5kbGVDb29raWVIZWFkZXJz
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmUKICAgICB9CiB9CiAKK3ZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6YmxvY2tDb29raWVzKCkKK3sKKyAgICBtX2Jsb2NraW5nQ29va2ll
cyA9IHRydWU7Cit9CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dW5ibG9ja0Nvb2tpZXMo
KQoreworICAgIG1fYmxvY2tpbmdDb29raWVzID0gZmFsc2U7Cit9CisKK2Jvb2wgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzOwor
CisgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMgJiYgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKSkKKyAgICAgICAgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zZXNzaW9uLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJ
RCwgbV9wYWdlSUQsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOworCisg
ICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTmV0d29ya0RhdGFUYXNrQ3VybDo6aXNUaGly
ZFBhcnR5UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7
CisgICAgcmV0dXJuICFXZWJDb3JlOjphcmVSZWdpc3RyYWJsZURvbWFpbnNFcXVhbChyZXF1ZXN0
LnVybCgpLCByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDUyZDA4NWI0NGMxN2U2MGY2MTMzZmJhMGUw
Y2Q2OTMzZWUzYWYyNTUuLjEyY2Y4ZmJlMzdiNmM4Y2NkMjA4YzNiNjhiZTBjNWQ5YTNkODY0MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaApAQCAtMjcsOCArMjcsMTEgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtE
YXRhVGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFJlcXVlc3RDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ3VybFJlcXVlc3Q7CkBAIC0zOCw5ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFz
aywgcHVibGljIFdlYkNvcmU6OkN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
V2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOZXR3b3JrRGF0YVRhc2tDdXJsKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtEYXRhVGFza0N1cmwoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlE
LCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKTsKICAgICB9CiAKICAgICB+TmV0d29ya0RhdGFUYXNr
Q3VybCgpOwpAQCAtNTQsNyArNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBSZXVzZWRSZXF1ZXN0
CiAgICAgfTsKIAotICAgIE5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mLCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uKTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9u
JiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXImLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyk7CiAKICAgICB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1l
KCkgb3ZlcnJpZGU7CkBAIC04Miw2ICs4NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5k
Q29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgaGFuZGxl
Q29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpDdXJsUmVzcG9uc2UmKTsKIAorICAgIGJvb2wgaXNUaGlyZFBhcnR5UmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGJsb2NrQ29va2ll
cygpOworICAgIHZvaWQgdW5ibG9ja0Nvb2tpZXMoKTsKKwogICAgIFN0YXRlIG1fc3RhdGUgeyBT
dGF0ZTo6U3VzcGVuZGVkIH07CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IG1f
Y3VybFJlcXVlc3Q7CkBAIC04OSw2ICs5NywxNCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
cmVkaXJlY3RDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2F1dGhGYWlsdXJlQ291bnQgeyAw
IH07CiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKKworICAgIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBtX2ZyYW1lSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGJvb2wgbV9i
bG9ja2luZ0Nvb2tpZXMgeyBmYWxzZSB9OworI2VuZGlmCisgICAgV2ViQ29yZTo6U2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpO
byB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGJj
Mjg4M2FlMTNlNWIwMjkzYzUxNjg3NTljNTg1YzNkNGQ2YzRmYjQuLmNmNmViNGQ3MjQwMTA5YzVm
NTg5ZTBkM2U1ZDAyMjVlYjFjMzQ5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCkBAIC00Myw2ICs0Mywx
NCBAQCBOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZQogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+c2V0Q29va2llRGF0YWJhc2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJEQj4ocGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpKTsKICAgICBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKS0+c2V0UHJveHlTZXR0aW5ncyhXVEZNb3ZlKHBhcmFtZXRlcnMucHJveHlTZXR0
aW5ncykpOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeTsKKyAgICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNsdWRlTG9j
YWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpObzsKKyAgICBtX2VuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
Z01vZGU6Ok5vOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJl
c291cmNlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZWQpOwor
I2VuZGlmCiB9CiAKIE5ldHdvcmtTZXNzaW9uQ3VybDo6fk5ldHdvcmtTZXNzaW9uQ3VybCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcAppbmRleCBiNWE1ZjA0NDZlN2JiNjEyNDQ1ZGVkMDY0OWIwNjhjOWM5NjI3NzFm
Li5iZTUwMzA3OTc0MDJkMDBiYTBlMGJjMzcxZTUyYzhjMWQ0N2IxY2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXS1NlY3VyaXR5T3JpZ2luUmVmLmgiCiAj
aW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTgxOSwzICs4
MjAsMTggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckJ1bmRsZUlkZW50aWZpZXJJbk5l
dHdvcmtQcm9jZXNzKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh0b0ltcGwocGFnZVJlZiktPmlkZW50aWZpZXIo
KSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKSB7CisgICAg
ICAgIGF1dG8gZG9tYWluQXJyYXlSZWYgPSBXS011dGFibGVBcnJheUNyZWF0ZSgpOworICAgICAg
ICBmb3IgKGF1dG8gZG9tYWluIDogZG9tYWlucykKKyAgICAgICAgICAgIFdLQXJyYXlBcHBlbmRJ
dGVtKGRvbWFpbkFycmF5UmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGRvbWFpbi51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQsIGRvbWFpbkFycmF5UmVmKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2soY29udGV4
dCwgV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggNzg3
ODcyYWUyN2Y4YTNiNGQyMmE3ZTU5MmM4ZjVhMWY5YTg1OTBjYS4uNmEwY2NkODdjNjgyNjBmMTg0
YmYwYTE2MDQ3OWJkYWYzYjRiN2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTE2Miw2ICsxNjIsOSBAQCBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdp
bihXS1dlYnNpdGVEYXRhU3RvcmVSZQogCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KTsKIAordHlwZWRlZiB2b2lkKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNz
RW50cmllc0Z1bmN0aW9uKSh2b2lkKiBjb250ZXh0LCBXS0FycmF5UmVmIGRvbWFpbnMpOworV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
RnVuY3Rpb24gY2FsbGJhY2spOworCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVD
bGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZik7CiAKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMGY1NTZhNGUwYTBkMDE1
ZTY3ZDg4ZWQ3MDk4NDJhZmE2ZGM0MjZhZS4uNTJjOWY5NDAyYzNhZWJjMzY2ZWI5YzNkYTgyMGJh
MzBkNzcyYjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIzMjQsNiArMjMyNCw5IEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAg
IHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
KCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gcGVy
VGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkID0gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDsKKyNlbmRpZgogICAgIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRl
cnMocGFyYW1ldGVycyk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZjUwZTY4YTJkOTE1M2U3ZTE2
MjQ3YTcxNzRhY2FmYWU3MmE2OTRlLi4wMzg1YjRiYzczNDgxOTliZmU5M2ViMWM3YjNlMmY2YTQ4
OTBiNTU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMDEgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5L
b21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBmdW5jdGlvbnMgdG8g
dXNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGFyZSByZXF1aXJl
ZCB0byBpbXBsZW1lbnQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBmb3Igd2luY2Fpcm8uCisKKyAg
ICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy8KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dDo6R2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKwogMjAyMC0wNS0zMSAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b1RyYWRlciBjcmFzaGVkIHdoaWxlIGJyb3dz
aW5nIHNlYXJjaCByZXN1bHRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IGU2Njk3M2I3NDVkZWU4YmFjZjcxN2NkODI2Y2JhODdjYmZhOGY0OTkuLjU5NmI4
YjY2MjBjMjJhZWUzOTg3YjFlMTM2N2QzMWM3MmMyZjQ0OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMTY1LDggKzMxNjUsNDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKIH0KIAorc3RydWN0
IEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0IHsKKyAgICBHZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dChUZXN0Q29udHJvbGxlciYgY29udHJv
bGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBoYW5kbGVy
KQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCisgICAgICAgICwgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKKyAgICB7CisgICAgfQorCisgICAgVGVzdENv
bnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIGJvb2wgZG9uZSB7IGZhbHNl
IH07Cit9OworCit2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2sodm9pZCog
dXNlckRhdGEsIFdLQXJyYXlSZWYgZG9tYWluTGlzdCkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8R2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQqPih1
c2VyRGF0YSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHREb21haW5zOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgV0tBcnJheUdldFNpemUoZG9tYWluTGlzdCk7IGkrKykgeworICAgICAg
ICBhdXRvIGRvbWFpbiA9ICByZWludGVycHJldF9jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0
SXRlbUF0SW5kZXgoZG9tYWluTGlzdCwgaSkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
dmVjdG9yPGNoYXI+KFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkb21haW4pKTsK
KyAgICAgICAgYXV0byBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGRvbWFp
biwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisKKyAgICAgICAgcmVzdWx0RG9tYWlu
cy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBzdHJpbmdMZW5ndGggLSAx
KSk7CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPmNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICBjb250ZXh0LT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdERvbWFpbnMpKTsKKwor
ICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNvbnRleHQtPnRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoKQogeworICAgIGF1dG8gZGF0YVN0b3JlID0gV0tDb250ZXh0R2V0V2Vic2l0ZURh
dGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcywgW3RoaXNdIChWZWN0b3I8U3RyaW5nPiYm
IGRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFdURk1vdmUoZG9tYWlucykpOworICAgIH0pOworCisgICAgV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoZGF0YVN0b3JlLCBtX21h
aW5XZWJWaWV3LT5wYWdlKCksICZjb250ZXh0LCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKIHN0
cnVjdCBMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrQ29udGV4dCB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGZi
ZGE4M2FhNTk0MGU5ZmM2ZWRmMmU0MGI4NmI2YWZmNGI0N2VjYy4uMDgyYjk1NmVjMzY2Njg1NjEx
ZGU0M2RjNGVmZGYwYTViNDkyMzMxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAx
ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtD
dXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgZm9yIHdpbmNhaXJvLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIwLTA1LTMxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lCb29rc10gRW1wdHkgcGFnZXMgYXBwZWFyIGluIGJvb2sKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGMzMTQyYzg1
NGQzNDdhZjljM2M3MTc1M2ZlNzNlODg2ZGU5OWM3YTguLmZmMzU4NTEwZDU3Zjk1ODhmMWI3OWY4
YmZhMjc5NGZkZDJlODdmZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8v
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE3NSw5ICsxMTc1LDQ1IEBAIGh0dHAvdGVzdHMvcmVmZXJy
ZXItcG9saWN5L25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlLyBbIFNraXAgXQogaHR0cC90ZXN0
cy9yZWZlcnJlci1wb2xpY3kvdW5zYWZlLXVybC9jcm9zcy1vcmlnaW4taHR0cC1odHRwLmh0bWwg
WyBTa2lwIF0gCiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUtdXJsL2Nyb3NzLW9y
aWdpbi1odHRwLmh0dHBzLmh0bWwgWyBTa2lwIF0gCiAKLSMgQWxsIHRpbWluZyBvdXQKLWh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFNraXAgXQorIyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBQYXNzIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zIFsgU2tpcCBdCitodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0LWRh
dGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9h
ZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1kZWxldGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWVzLXdpdGgtYW5k
LXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXIt
aW50ZXJhY3Rpb24uaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2RlbGV0ZS1zY3JpcHQtYWNjZXNzaWJsZS1jb29raWVzLWRhdGFiYXNlLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kZWxldGUtc2NyaXB0LWFjY2Vz
c2libGUtY29va2llcy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC1kYXRhYmFzZS5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1i
bG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVu
aXF1ZS1yZWRpcmVjdHMtdG8tZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVk
LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9waW5nLXRvLXByZXZhbGVudC1yZXNv
dXJjZS1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGluZy10by1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNvdXJjZS13aXRoLXVzZXItaW50
ZXJhY3Rpb24tdGltZW91dC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGgtdXNlci1pbnRlcmFjdGlv
bi10aW1lb3V0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9wcmV2YWxlbnQtcmVzb3VyY2Utd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0
bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQt
cmVzb3VyY2Utd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0
cmljdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3Rh
bmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9u
LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVs
ZXRpb24uaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3
aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24t
ZGF0YWJhc2UucGhwIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
c3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlv
bi5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0
cnktZ2VuZXJhdGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLWVwaGVtZXJhbC1kYXRhYmFzZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHkt
Y29va2llLWJsb2NraW5nLWVwaGVtZXJhbC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNp
dGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9ydGVkLW9uY2Ut
d2l0aGluLXNob3J0LXBlcmlvZC1vZi10aW1lLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0
ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUuaHRtbCBbIFNraXAgXQoraHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0
ZXItd2Vic2l0ZS1kYXRhLXJlbW92YWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXIt
d2Vic2l0ZS1kYXRhLXJlbW92YWwuaHRtbCBbIFNraXAgXQogCisjIEFsbCB0aW1pbmcgb3V0CiBo
dHRwL3Rlc3RzL3NlY3VyaXR5IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5LzQwMS1sb2dv
dXQvNDAxLWxvZ291dC5waHAgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401123</attachid>
            <date>2020-06-05 00:26:34 -0700</date>
            <delta_ts>2020-06-09 01:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200605161951.patch</filename>
            <type>text/plain</type>
            <size>34950</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFjNDExNzhlMDZlYzhk
NGNmMzdkMDhhOTVlYzc0NDRhY2FjYzgxNS4uNTFmYzRjMmYyNGNiZGM1NTE3ZDI0NWZmMzEwNGE5
ZWI4MDFhODA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTA1ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIGN1cmwgcG9ydC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLworCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZUphckRCOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6YWxsRG9tYWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorCiAyMDIwLTA2LTA0ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTEFwcGxldEVsZW1lbnQ6OnVwZGF0ZVdpZGdldCBz
aG91bGQgY2hlY2sgZm9yIHJlbmRlcmVyIGFmdGVyIHRoZSBvdmVybGFwcGluZyB0ZXN0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1YWQ2MDU2NDNmZmRmMWVlNDdmYmIzZmNiMTc2ZTNjMzZiZjM4NjZiLi43ZTc2NDky
MTBhMWY3ZjY4YjFiYzAwZWZiOTFhYTg5MTkxOGU3Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDIwLTA2LTA1ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgorCisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIGN1cmwgcG9ydC4KKworICAgICAgICBJbiBOZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcCB3ZSBjaGVjayBpZiB3ZSBzaG91bGQgYmxvY2sgY29va2llcyBh
bmQgYmxvY2sgaWYgbmVlZGVkLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZUN1cmxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpibG9ja0Nv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp1bmJsb2NrQ29v
a2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OnNob3VsZEJsb2Nr
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmlzVGhpcmRQ
YXJ0eVJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25D
dXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vz
c2lvbkN1cmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorCiAyMDIw
LTA2LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWRkIFdLVUlEZWxlZ2F0ZSBTUEkgdG8gY29uZmlybSBiZWZvcmUgb3BlbmluZyBhIFBE
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5YTRmMTEzODZlMzU5MGQ5YmY4NjgzMGFlMjhmYzJh
ODBlNTAwODAyLi43ZTBjMzVmYjg1ZGIxMDhiMzA3NjM0OTIwZmQ0YmExYzliNjJiMjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNjkzLDYgKzY5Myw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCiAgICAgZG9tL0RvY3VtZW50
RnVsbHNjcmVlbi5pZGwKICAgICBkb20vRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsCisgICAgZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5pZGwKICAgICBkb20vRG9jdW1lbnRUb3VjaC5pZGwKICAg
ICBkb20vRG9jdW1lbnRUeXBlLmlkbAogICAgIGRvbS9EcmFnRXZlbnQuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRl
eCBiMjI5NDliOThlYzFjZTRhZDRjMTBiZjE5NGMwNGNiMTkzMTFkMWQ3Li5kYmM0MjNmOTQ5MDdh
MjAwM2U0NDk1N2VkYTFkMmYwMDAwZWMyMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCisjaW5jbHVk
ZSAiY29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWVVdGlsLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtNjMsNiArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIkNSRUFU
RSBJTkRFWCBJRiBOT1QgRVhJU1RTIGRvbWFpbl9pbmRleCBPTiBDb29raWUoZG9tYWluKTsiCiAj
ZGVmaW5lIENSRUFURV9QQVRIX0lOREVYX1NRTCBcCiAgICAgIkNSRUFURSBJTkRFWCBJRiBOT1Qg
RVhJU1RTIHBhdGhfaW5kZXggT04gQ29va2llKHBhdGgpOyIKKyNkZWZpbmUgU0VMRUNUX0FMTF9E
T01BSU5TX1NRTCBcCisgICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Igog
I2RlZmluZSBDSEVDS19FWElTVFNfQ09PS0lFX1NRTCBcCiAgICAgIlNFTEVDVCBkb21haW4gRlJP
TSBDb29raWUgV0hFUkUgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykpOyIKICNkZWZp
bmUgQ0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwgXApAQCAtNzYsNiArNzksMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgbmFtZSA9
ID8gQU5EIGRvbWFpbiA9ID87IgogI2RlZmluZSBERUxFVEVfQUxMX1NFU1NJT05fQ09PS0lFX1NR
TCBcCiAgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBzZXNzaW9uID0gMTsiCisjZGVmaW5l
IERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9TUUwgXAorICAgICJERUxFVEUgRlJPTSBDb29raWUg
V0hFUkUgZG9tYWluID0gPyA7IgorI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhD
RVBUX0hUVFBfT05MWV9TUUwgXAorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFp
biA9ID8pIEFORCAoaHR0cG9ubHkgPSAwKTsiCiAjZGVmaW5lIERFTEVURV9BTExfQ09PS0lFX1NR
TCBcCiAgICAgIkRFTEVURSBGUk9NIENvb2tpZTsiCiAKQEAgLTE2NSw2ICsxNzIsOCBAQCBib29s
IENvb2tpZUphckRCOjpvcGVuRGF0YWJhc2UoKQogICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQo
Q0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwpOwogICAgIGNyZWF0ZVByZXBhcmVTdGF0
ZW1lbnQoREVMRVRFX0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9QQVRIX1NRTCk7CiAgICAgY3JlYXRl
UHJlcGFyZVN0YXRlbWVudChERUxFVEVfQ09PS0lFX0JZX05BTUVfRE9NQUlOX1NRTCk7CisgICAg
Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMKTsKKyAg
ICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9FWENFUFRf
SFRUUF9PTkxZX1NRTCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTUyOSw3ICs1MzgsNyBA
QCBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAgICAg
cmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuc3RlcCgpKTsKIH0KIAotYm9v
bCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UpCiti
b29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBib2R5LCBDb29raWVKYXJEQjo6U291cmNlIHNvdXJjZSwg
T3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQo
KSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTUw
LDkgKzU1OSwzMSBAQCBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuQWNjZXB0
Q29va2llKCpjb29raWUsIGZpcnN0UGFydHksIHVybCwgc291cmNlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgaWYgKGNhcHBlZExpZmV0aW1lICYmIGNvb2tpZS0+ZXhwaXJlcykgewor
ICAgICAgICBBU1NFUlQoKmNhcHBlZExpZmV0aW1lID49IDBfcyk7CisgICAgICAgIGF1dG8gY2Fw
cGVkRXhwaXJlcyA9IFdhbGxUaW1lOjpub3coKSArICpjYXBwZWRMaWZldGltZTsKKyAgICAgICAg
aWYgKGNhcHBlZEV4cGlyZXMgPCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKmNvb2tpZS0+ZXhw
aXJlcyAvIFdURjo6bXNQZXJTZWNvbmQpKQorICAgICAgICAgICAgY29va2llLT5leHBpcmVzID0g
Y2FwcGVkRXhwaXJlcy5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpOworICAgIH0K
KwogICAgIHJldHVybiBzZXRDb29raWUoKmNvb2tpZSk7CiB9CiAKK0hhc2hTZXQ8U3RyaW5nPiBD
b29raWVKYXJEQjo6YWxsRG9tYWlucygpCit7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVu
dChtX2RhdGFiYXNlLCBTRUxFQ1RfQUxMX0RPTUFJTlNfU1FMKTsKKyAgICBzdGF0ZW1lbnQucHJl
cGFyZSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+IGRvbWFpbnM7CisgICAgd2hpbGUgKHN0YXRl
bWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICBhdXRvIGRvbWFpbiA9IHN0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICBkb21haW5zLmFkZChkb21haW4pOworICAg
IH0KKworICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOworICAgIHJldHVybiBkb21haW5zOworfQor
CiBib29sIENvb2tpZUphckRCOjpkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlz
T3BlbigpKQpAQCAtNTg5LDYgKzYyMCwxMyBAQCBib29sIENvb2tpZUphckRCOjpkZWxldGVDb29r
aWVzKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENvb2tpZUph
ckRCOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQoreworICAgIGF1dG8m
IHN0YXRlbWVudCA9IHByZXBhcmVkU3RhdGVtZW50KGluY2x1ZGVIdHRwT25seUNvb2tpZXMgPT0g
SW5jbHVkZUh0dHBPbmx5Q29va2llczo6WWVzID8gREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NR
TCA6IERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9FWENFUFRfSFRUUF9PTkxZX1NRTCk7CisgICAg
c3RhdGVtZW50LmJpbmRUZXh0KDEsIGhvc3RuYW1lKTsKKyAgICByZXR1cm4gY2hlY2tTUUxpdGVS
ZXR1cm5Db2RlKHN0YXRlbWVudC5zdGVwKCkpOworfQorCiBib29sIENvb2tpZUphckRCOjpkZWxl
dGVBbGxDb29raWVzKCkKIHsKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlz
T3BlbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuaAppbmRleCAxMTJmNjMyMTI4YjFhYTcyYjQ2MzliNjJhM2ViNWE3OWUzN2M1Zjgw
Li43YzBlYTQ3ZWNlNGZmMGQ0NzJjZTU5NWM5MWVhMWNmYTkwYjI1Y2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtMjUs
NiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWUuaCIKKyNpbmNsdWRl
ICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNR
TGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NiwxMyArNTcs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWNjZXB0UG9saWN5KENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpIHsgbV9hY2NlcHRQb2xpY3kgPSBwb2xpY3k7IH0KICAgICBDb29raWVBY2NlcHRQ
b2xpY3kgYWNjZXB0UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9hY2NlcHRQb2xpY3k7IH0KIAor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxEb21haW5zKCk7CiAgICAgT3B0aW9uYWw8VmVjdG9yPENv
b2tpZT4+IHNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHJl
cXVlc3RVcmwsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBodHRwT25seSwgY29uc3QgT3B0aW9uYWw8
Ym9vbD4mIHNlY3VyZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHNlc3Npb24pOwogICAgIFZlY3Rv
cjxDb29raWU+IGdldEFsbENvb2tpZXMoKTsKLSAgICBib29sIHNldENvb2tpZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llLCBTb3VyY2UpOwor
ICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWUsIFNvdXJjZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRp
bWUgPSBXVEY6Om51bGxvcHQpOwogICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwog
CiAgICAgYm9vbCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgYm9vbCBkZWxldGVDb29raWVzKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBi
b29sIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBJbmNs
dWRlSHR0cE9ubHlDb29raWVzKTsKICAgICBib29sIGRlbGV0ZUFsbENvb2tpZXMoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIENvb2tpZUphckRCKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBhZDNkMTM5NzBiM2M3MmQ2
MGJmNTU5MDRiZTY0ZTY2YjEwNDk4M2E5Li4yZDc3OGU1ZDllNDhkODU4Mzg4MDJiY2M0YWFkN2Rj
YjY4OTI0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC05NSw5
ICs5NSwxNCBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRh
YmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0
Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdAogewotICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwg
dmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCk7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9
IGNsaWVudFNpZGVDb29raWVDYXAoUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5IH0sICpw
YWdlSUQpOworI2Vsc2UKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IFdU
Rjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0
UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCwgY2FwcGVkTGlm
ZXRpbWUpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21I
VFRQUmVzcG9uc2UoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTEzMyw5ICsxMzgsMTAgQEAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0
eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBm
b3IgV2ViS2l0IHRvIHVzZS4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMp
CisgICAgICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGNvb2tpZSk7CiB9CiAKIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCkBA
IC0xNjQsOSArMTcwLDEwIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSkKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogY29va2llSG9zdE5hbWVzICovLCBJ
bmNsdWRlSHR0cE9ubHlDb29raWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1l
cywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQogewotICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLgorICAgIGZvciAoYXV0byBob3N0bmFtZSA6
IGNvb2tpZUhvc3ROYW1lcykKKyAgICAgICAgY29va2llRGF0YWJhc2UoKS5kZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoaG9zdG5hbWUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogfQogCiB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IDgwMTNhYzZkNjUyNWU5MmM1N2Jh
MTIwNTVhMjkyZDQxZGNmNzc4MWYuLmZiYTg2ZGE0YzEzNDM3NjQzNDQzMGVjOGE2NDE4NGExNjAz
Y2Y5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0Rh
dGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKICAgICBy
ZXR1cm4gTmV0d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1l
dGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlE
LCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwg
cGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbik7CiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFy
YW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgcmV0dXJu
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMu
cmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZp
bmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFt
ZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVy
cy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmcpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA0NGU5
NDZiOWRiZGE1MjQxMDA1ZDUzNGI5MWFmNzExYzFkOTdmZjUyLi4zMjQzMWUxNTI4YWRkYmFmODk5
OTdhMGU1MmVhYjIxYjQ2ZDI1MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC00NCw4ICs0NCwx
MSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU5l
dHdvcmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNu
aWZmLCBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uKQorTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyJiBwYWdlSUQsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVu
dFNuaWZmLCBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVO
YXZpZ2F0aW9uLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKICAgICA6IE5ldHdvcmtEYXRhVGFz
ayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQor
ICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZyhzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAgICBp
ZiAobV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpCiAgICAgICAgIHJldHVybjsK
QEAgLTY3LDYgKzcwLDEyIEBAIE5ldHdvcmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1
cmwoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFzCiAgICAgICAgIH0KICAg
ICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91
bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCkpCisgICAgICAgIGJsb2NrQ29va2llcygpOworI2VuZGlm
CisgICAgcmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3QpOwor
CiAgICAgbV9jdXJsUmVxdWVzdCA9IGNyZWF0ZUN1cmxSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkp
OwogICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9j
dXJsUmVxdWVzdC0+c2V0VXNlclBhc3MobV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCksIG1faW5p
dGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7CkBAIC0xMjQsNyArMTMzLDcgQEAgTmV0d29ya0Rh
dGFUYXNrOjpTdGF0ZSBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzdGF0ZSgpIGNvbnN0CiAKIFJlZjxD
dXJsUmVxdWVzdD4gTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVxdWVzdFN0YXR1cyBzdGF0dXMpCiB7Ci0gICAgaWYgKHN0
YXR1cyA9PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KQorICAgIGlmIChzdGF0dXMgPT0gUmVx
dWVzdFN0YXR1czo6TmV3UmVxdWVzdCAmJiAhbV9ibG9ja2luZ0Nvb2tpZXMpCiAgICAgICAgIGFw
cGVuZENvb2tpZUhlYWRlcihyZXF1ZXN0KTsKIAogICAgIC8vIENyZWF0ZXMgYSBDdXJsUmVxdWVz
dCBpbiBzdXNwZW5kZWQgc3RhdGUuCkBAIC0yOTYsNiArMzA1LDEwIEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKQogICAgICAgICB9CiAgICAg
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVENTKQorICAgIGlmICghbV9ibG9j
a2luZ0Nvb2tpZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QpKQorICAgICAgICBibG9j
a0Nvb2tpZXMoKTsKKyNlbmRpZgogICAgIGF1dG8gcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
KG1fcmVzcG9uc2UpOwogICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGlkQ2hhbmdlQ3JlZGVudGlhbCwgaXNDcm9zc09yaWdpbl0oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSB7CiAgICAgICAgIGlmIChuZXdSZXF1ZXN0
LmlzTnVsbCgpIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZykKQEAgLTMwOCw2ICszMjEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KCkKICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAg
ICAgICAgYXV0byByZXF1ZXN0Q29weSA9IG5ld1JlcXVlc3Q7CisgICAgICAgIHJlc3RyaWN0UmVx
dWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0Q29weSk7CiAgICAgICAgIG1fY3Vy
bFJlcXVlc3QgPSBjcmVhdGVDdXJsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RDb3B5KSk7CiAgICAg
ICAgIGlmIChkaWRDaGFuZ2VDcmVkZW50aWFsICYmICFtX2luaXRpYWxDcmVkZW50aWFsLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgbV9jdXJsUmVxdWVzdC0+c2V0VXNlclBhc3MobV9pbml0aWFs
Q3JlZGVudGlhbC51c2VyKCksIG1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7CkBAIC00
NjMsNCArNDc3LDMzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6aGFuZGxlQ29va2llSGVh
ZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlCiAgICAgfQogfQogCit2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmJsb2NrQ29va2llcygpCit7CisgICAgbV9ibG9ja2luZ0Nv
b2tpZXMgPSB0cnVlOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnVuYmxvY2tDb29r
aWVzKCkKK3sKKyAgICBtX2Jsb2NraW5nQ29va2llcyA9IGZhbHNlOworfQorCitib29sIE5ldHdv
cmtEYXRhVGFza0N1cmw6OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyA9IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVz
czsKKworICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG1fc2Vzc2lvbi0+
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2Zy
YW1lSUQsIG1fcGFnZUlELCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsK
KworICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE5ldHdvcmtEYXRhVGFza0N1cmw6Omlz
VGhpcmRQYXJ0eVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIHJldHVybiAhV2ViQ29yZTo6YXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwocmVx
dWVzdC51cmwoKSwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA1MmQwODViNDRjMTdlNjBmNjEzM2Zi
YTBlMGNkNjkzM2VlM2FmMjU1Li4xMmNmOGZiZTM3YjZjOGNjZDIwOGMzYjY4YmUwYzVkOWEzZDg2
NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTI3LDggKzI3LDExIEBACiAKICNpbmNsdWRlICJOZXR3
b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxSZXF1ZXN0Q2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEN1cmxSZXF1ZXN0OwpAQCAtMzgsOSArNDEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0
YVRhc2ssIHB1YmxpYyBXZWJDb3JlOjpDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3Vs
ZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCisgICAg
c3RhdGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ3VybChzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRF
bmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDdXJsKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJh
bWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZm
LCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSk7CiAgICAgfQogCiAgICAgfk5ldHdvcmtEYXRh
VGFza0N1cmwoKTsKQEAgLTU0LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUmV1c2VkUmVx
dWVzdAogICAgIH07CiAKLSAgICBOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9uJiwg
TmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgTmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vz
c2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpOwogCiAgICAgdm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3VtZSgpIG92ZXJyaWRlOwpAQCAtODIsNiArODUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGVuZENvb2tpZUhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhh
bmRsZUNvb2tpZUhlYWRlcnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6Q3VybFJlc3BvbnNlJik7CiAKKyAgICBib29sIGlzVGhpcmRQYXJ0eVJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBibG9ja0Nv
b2tpZXMoKTsKKyAgICB2b2lkIHVuYmxvY2tDb29raWVzKCk7CisKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxSZXF1ZXN0
PiBtX2N1cmxSZXF1ZXN0OwpAQCAtODksNiArOTcsMTQgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdXRoRmFpbHVyZUNvdW50
IHsgMCB9OwogICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWU7CisKKyAgICBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgbV9mcmFtZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1f
cGFnZUlEOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29s
IG1fYmxvY2tpbmdDb29raWVzIHsgZmFsc2UgfTsKKyNlbmRpZgorICAgIFdlYkNvcmU6OlNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcgeyBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zzo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRl
eCBiYzI4ODNhZTEzZTViMDI5M2M1MTY4NzU5YzU4NWMzZDRkNmM0ZmI0Li5jZjZlYjRkNzI0MDEw
OWM1ZjU4OWUwZDNlNWQwMjI1ZWIxYzM0OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtNDMsNiAr
NDMsMTQgQEAgTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2UKICAgICBpZiAoIXBhcmFtZXRlcnMuY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkKICAgICAgICAgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCktPnNldENvb2tpZURhdGFiYXNlKG1ha2VVbmlxdWVSZWY8Q29va2llSmFyREI+
KHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlKSk7CiAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCktPnNldFByb3h5U2V0dGluZ3MoV1RGTW92ZShwYXJhbWV0ZXJzLnByb3h5
U2V0dGluZ3MpKTsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3Rvcnk7CisgICAgbV9zaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0ID8gU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdDo6WWVzIDogU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6Tm87CisgICAgbV9lbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZZXMgOiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlOjpObzsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMu
bWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVk
KTsKKyNlbmRpZgogfQogCiBOZXR3b3JrU2Vzc2lvbkN1cmw6On5OZXR3b3JrU2Vzc2lvbkN1cmwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKaW5kZXggYjVhNWYwNDQ2ZTdiYjYxMjQ0NWRlZDA2NDliMDY4YzljOTYy
NzcxZi4uYmU1MDMwNzk3NDAyZDAwYmEwZTBiYzM3MWU1MmM4YzFkNDdiMWNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV0tTZWN1cml0eU9yaWdpblJlZi5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC04MTks
MyArODIwLDE4IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJCdW5kbGVJZGVudGlmaWVy
SW5OZXR3b3JrUHJvY2VzcyhXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Z1bmN0aW9uIGNhbGxiYWNrKQoreworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModG9JbXBsKHBhZ2VSZWYpLT5pZGVudGlm
aWVyKCksIFtjb250ZXh0LCBjYWxsYmFja10gKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykgewor
ICAgICAgICBhdXRvIGRvbWFpbkFycmF5UmVmID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKKyAg
ICAgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgICAgICBXS0FycmF5QXBw
ZW5kSXRlbShkb21haW5BcnJheVJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKKworICAgICAgICBjYWxsYmFjayhj
b250ZXh0LCBkb21haW5BcnJheVJlZik7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNv
bnRleHQsIFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4
IDc4Nzg3MmFlMjdmOGEzYjRkMjJhN2U1OTJjOGY1YTFmOWE4NTkwY2EuLjZhMGNjZDg3YzY4MjYw
ZjE4NGJmMGExNjA0NzliZGFmM2I0YjdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xNjIsNiArMTYyLDkg
QEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JP
cmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmUKIAogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHVpbnQ2NF90IHF1b3RhKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblNldFBlck9yaWdpblN0b3JhZ2VR
dW90YSk7CiAKK3R5cGVkZWYgdm9pZCgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNGdW5jdGlvbikodm9pZCogY29udGV4dCwgV0tBcnJheVJlZiBkb21haW5zKTsK
K1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLUGFnZVJlZiBwYWdlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0Z1bmN0aW9uIGNhbGxiYWNrKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVD
bGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24p
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBmNTU2YTRlMGEw
ZDAxNWU2N2Q4OGVkNzA5ODQyYWZhNmRjNDI2YWUuLjUyYzlmOTQwMmMzYWViYzM2NmViOWMzZGE4
MjBiYTMwZDc3MmI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzI0LDYgKzIzMjQsOSBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VR
dW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9
IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCA9IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQ7CisjZW5kaWYKICAgICBwbGF0Zm9ybVNldE5ldHdvcmtQYXJh
bWV0ZXJzKHBhcmFtZXRlcnMpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTIzMDFkMWZhM2IxY2I2
ZWMwYjJhYzQwY2M5ZjA1ZWJiZGJlNjkwMy4uYTE2NWY2MTViNmZhNmI2MGQ1MjUwZmFkODYzODli
OGE2Y2YyMGZlNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA2LTA1ICBUYWthc2hpIEtvbW9yaSAgPFRha2Fz
aGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25z
IHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVx
dWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIGN1cmwgcG9ydC4K
KworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLworCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0OjpHZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMpOgorCiAyMDIwLTA2LTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVUlQcm9jZXNzIG1heSBjcmFzaCBhZnRl
ciBpdHMgcHJld2FybWVkIFdlYlByb2Nlc3MgZ2V0cyB0ZXJtaW5hdGVkCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGU2Njk3M2I3NDVkZWU4YmFjZjcxN2Nk
ODI2Y2JhODdjYmZhOGY0OTkuLjU5NmI4YjY2MjBjMjJhZWUzOTg3YjFlMTM2N2QzMWM3MmMyZjQ0
OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMTY1
LDggKzMxNjUsNDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzKCkKIHsKIH0KIAorc3RydWN0IEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJh
Y2tDb250ZXh0IHsKKyAgICBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4
dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBoYW5kbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRy
b2xsZXIpCisgICAgICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKKyAg
ICB7CisgICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+IGNvbXBsZXRpb25IYW5kbGVy
OworICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07Cit9OworCit2b2lkIGdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzQ2FsbGJhY2sodm9pZCogdXNlckRhdGEsIFdLQXJyYXlSZWYgZG9tYWluTGlzdCkK
K3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8R2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBy
ZXN1bHREb21haW5zOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgV0tBcnJheUdldFNpemUoZG9t
YWluTGlzdCk7IGkrKykgeworICAgICAgICBhdXRvIGRvbWFpbiA9ICByZWludGVycHJldF9jYXN0
PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoZG9tYWluTGlzdCwgaSkpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6dmVjdG9yPGNoYXI+KFdLU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShkb21haW4pKTsKKyAgICAgICAgYXV0byBzdHJpbmdMZW5ndGggPSBXS1N0
cmluZ0dldFVURjhDU3RyaW5nKGRvbWFpbiwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisKKyAgICAgICAgcmVzdWx0RG9tYWlucy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChidWZmZXIu
ZGF0YSgpLCBzdHJpbmdMZW5ndGggLSAxKSk7CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPmNv
bXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb250ZXh0LT5jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdERvbWFpbnMpKTsKKworICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNv
bnRleHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwogdm9pZCBUZXN0Q29udHJv
bGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogeworICAgIGF1dG8gZGF0YVN0b3Jl
ID0gV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShwbGF0Zm9ybUNvbnRleHQoKSk7CisgICAg
R2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcywg
W3RoaXNdIChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdURk1vdmUoZG9tYWlu
cykpOworICAgIH0pOworCisgICAgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoZGF0YVN0b3JlLCBtX21haW5XZWJWaWV3LT5wYWdlKCksICZjb250ZXh0LCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRv
bmUsIG5vVGltZW91dCk7CiB9CiAKIHN0cnVjdCBMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxi
YWNrQ29udGV4dCB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTg3ZjU0YTdlZjY5YjUyNzI2ZjRkNzAwNWM0YWMzOTE2ZWM1
OWY5Ni4uOWU2OGRmZWNmY2YzYmRkNWVkMDZmNTQyMjFiYTI5MTEwYzU4ZjlhMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA2LTA1ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3Jp
QHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8g
aW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIGN1cmwgcG9ydC4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLworCisgICAgICAgICog
cGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNi0wNCAgSmFjayBM
ZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGlu
IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKSB3aGVuIGVuZGluZyBwb3NpdGlvbiBp
cyBkaXNjb25uZWN0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWly
by9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA3ZGUyMDhkODNmZjhlNDI2OWI4MjRmYjE4N2IzZWQ0NWYxNGI2MDRl
Li5mZTlhMzE1ZTJjYmE2MWVmM2ZiMGM1YThlZTgwYmRmNDc0ZmFhYjM2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExNzUsOSArMTE3
NSw0NSBAQCBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS9uby1yZWZlcnJlci13aGVuLWRvd25n
cmFkZS8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVmZXJyZXItcG9saWN5L3Vuc2FmZS11cmwvY3Jv
c3Mtb3JpZ2luLWh0dHAtaHR0cC5odG1sIFsgU2tpcCBdIAogaHR0cC90ZXN0cy9yZWZlcnJlci1w
b2xpY3kvdW5zYWZlLXVybC9jcm9zcy1vcmlnaW4taHR0cC5odHRwcy5odG1sIFsgU2tpcCBdIAog
Ci0jIEFsbCB0aW1pbmcgb3V0Ci1odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBT
a2lwIF0KKyMgUmVzb3VyY2VMb2FkU3RhdGlzdGljcworaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZXhl
bXB0RG9tYWlucyBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Fk
ZC1ibG9ja2luZy10by1yZWRpcmVjdC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJlZGlyZWN0Lmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24t
ZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2Nvb2tpZS1kZWxldGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJh
c2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tp
ZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9kZWxldGUtc2NyaXB0LWFjY2Vzc2libGUtY29v
a2llcy1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZGVsZXRlLXNjcmlwdC1hY2Nlc3NpYmxlLWNvb2tpZXMuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5vdC1yZW1vdmUtYmxvY2tpbmctaW4t
cmVkaXJlY3QtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2RvLW5vdC1yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFNraXAg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3Ry
aWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVz
aXRlLXN0cmljdC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVz
LWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRh
dGEtcmVtb3ZlZC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcGluZy10by1wcmV2YWxlbnQtcmVzb3VyY2UtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BpbmctdG8tcHJldmFsZW50LXJlc291cmNl
Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtcmVzb3VyY2Utd2l0aC11c2VyLWludGVyYWN0aW9uLXRpbWVvdXQtZGF0YWJhc2UuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1yZXNv
dXJjZS13aXRoLXVzZXItaW50ZXJhY3Rpb24tdGltZW91dC5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGhvdXQtdXNl
ci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LXJlc291cmNlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFs
bC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1m
cm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWItYXBwbGljYXRpb24tZXhl
bXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXBy
ZXZhbGVudC13aXRoLWludGVyYWN0aW9uLWRhdGFiYXNlLnBocCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8t
cHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24ucGhwIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2lu
Zy1lcGhlbWVyYWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1lcGhlbWVyYWwuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNv
b2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJh
Y3Rpb24tb25seS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGltZS1kYXRh
YmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNl
ci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9ydGVkLW9uY2Utd2l0aGluLXNob3J0LXBlcmlvZC1vZi10
aW1lLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2Vy
LWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yZW1vdmFsLWRhdGFiYXNl
Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWlu
dGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yZW1vdmFsLmh0bWwgWyBTa2lw
IF0KIAorIyBBbGwgdGltaW5nIG91dAogaHR0cC90ZXN0cy9zZWN1cml0eSBbIFNraXAgXQogaHR0
cC90ZXN0cy9zZWN1cml0eS80MDEtbG9nb3V0LzQwMS1sb2dvdXQucGhwIFsgUGFzcyBdCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLmh0bWwg
WyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401426</attachid>
            <date>2020-06-09 01:58:37 -0700</date>
            <delta_ts>2020-06-10 12:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200609175837.patch</filename>
            <type>text/plain</type>
            <size>34684</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNkNDMxYTQwZDViZjBj
Y2ViYzQ5ZWVkYWQ4ZmMxZTAxNTc5Yzc0MS4uNTNjOTEwYmQyMGEwMmYxOGRkNTZmZTM1YzU5MjNh
MDlmYmEyMzQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA2LTA5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIEN1cmwgcG9ydC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLworCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZUphckRCOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6YWxsRG9tYWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisKIDIwMjAtMDYtMDggIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSG9yaXpvbnRhbGx5IHNj
cm9sbGluZyBlbGVtZW50cyBhcmUgYnJva2VuIHdoZW4gcmV2ZWFsZWQgYnkgdG9nZ2xpbmcgdmlz
aWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAwZmNjN2Q4MzU0ZjMxM2I2Y2M1YjMwNmNmM2QxNGUzYTY4ZjBj
ZDM3Li43YjdiM2M5Y2Q2M2MzM2YxYjk3OTdmNzYzZTRjNjI1MGQ2NDQ0ZTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM1IEBACisyMDIwLTA2LTA5ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29t
b3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVz
ZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQg
dG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIEN1cmwgcG9ydC4KKworICAg
ICAgICBJbiBOZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCB3ZSBjaGVjayBpZiB3ZSBzaG91bGQgYmxv
Y2sgY29va2llcyBhbmQgYmxvY2sgaWYgbmVlZGVkLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFU
YXNrQ3VybCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZUN1
cmxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tD
dXJsOjpibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJs
Ojp1bmJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6
OnNob3VsZEJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1
cmw6OmlzVGhpcmRQYXJ0eVJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Nlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DdXJs
OjpOZXR3b3JrU2Vzc2lvbkN1cmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMpOgorCiAyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgSVBDOjpDRlR5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYjg4N2Y4YTNkOWQ5NDNmMjYyYWEyY2RjOWU4YzliYzM2YzFiNDJiOC4u
OWMwNzU5MjAyZDQ0OTVhOTlhYzA1NzkxZWNjNWE2OWViMTczMDZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY5Niw2ICs2OTYsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwog
ICAgIGRvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAogICAgIGRvbS9Eb2N1bWVudEZ1bGxzY3JlZW4u
aWRsCiAgICAgZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAorICAgIGRvbS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuaWRsCiAgICAgZG9tL0RvY3VtZW50VG91Y2guaWRsCiAgICAgZG9tL0RvY3Vt
ZW50VHlwZS5pZGwKICAgICBkb20vRHJhZ0V2ZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYjIyOTQ5Yjk4
ZWMxY2U0YWQ0YzEwYmYxOTRjMDRjYjE5MzExZDFkNy4uZGJjNDIzZjk0OTA3YTIwMDNlNDQ5NTdl
ZGExZDJmMDAwMGVjMjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgorI2luY2x1ZGUgImNvb2tpZUph
ci5oIgogCiAjaW5jbHVkZSAiQ29va2llVXRpbC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAg
LTYzLDYgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICJDUkVBVEUgSU5ERVggSUYg
Tk9UIEVYSVNUUyBkb21haW5faW5kZXggT04gQ29va2llKGRvbWFpbik7IgogI2RlZmluZSBDUkVB
VEVfUEFUSF9JTkRFWF9TUUwgXAogICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBwYXRo
X2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisjZGVmaW5lIFNFTEVDVF9BTExfRE9NQUlOU19TUUwg
XAorICAgICJTRUxFQ1QgRElTVElOQ1QgZG9tYWluIEZST00gQ29va2llOyIKICNkZWZpbmUgQ0hF
Q0tfRVhJU1RTX0NPT0tJRV9TUUwgXAogICAgICJTRUxFQ1QgZG9tYWluIEZST00gQ29va2llIFdI
RVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKTsiCiAjZGVmaW5lIENIRUNLX0VY
SVNUU19IVFRQT05MWV9DT09LSUVfU1FMIFwKQEAgLTc2LDYgKzc5LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUgPSA/IEFORCBkb21h
aW4gPSA/OyIKICNkZWZpbmUgREVMRVRFX0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwgXAogICAgICJE
RUxFVEUgRlJPTSBDb29raWUgV0hFUkUgc2Vzc2lvbiA9IDE7IgorI2RlZmluZSBERUxFVEVfQ09P
S0lFU19CWV9ET01BSU5fU1FMIFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFp
biA9ID8gOyIKKyNkZWZpbmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQVF9IVFRQX09O
TFlfU1FMIFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIChkb21haW4gPSA/KSBBTkQg
KGh0dHBvbmx5ID0gMCk7IgogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9TUUwgXAogICAgICJE
RUxFVEUgRlJPTSBDb29raWU7IgogCkBAIC0xNjUsNiArMTcyLDggQEAgYm9vbCBDb29raWVKYXJE
Qjo6b3BlbkRhdGFiYXNlKCkKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KENIRUNLX0VYSVNU
U19IVFRQT05MWV9DT09LSUVfU1FMKTsKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVU
RV9DT09LSUVfQllfTkFNRV9ET01BSU5fUEFUSF9TUUwpOwogICAgIGNyZWF0ZVByZXBhcmVTdGF0
ZW1lbnQoREVMRVRFX0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwpOworICAgIGNyZWF0ZVByZXBh
cmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NRTCk7CisgICAgY3JlYXRlUHJl
cGFyZVN0YXRlbWVudChERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9T
UUwpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjksNyArNTM4LDcgQEAgYm9vbCBDb29r
aWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogICAgIHJldHVybiBjaGVj
a1NRTGl0ZVJldHVybkNvZGUoc3RhdGVtZW50LnN0ZXAoKSk7CiB9CiAKLWJvb2wgQ29va2llSmFy
REI6OnNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjpTb3VyY2Ugc291cmNlKQorYm9vbCBDb29raWVK
YXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIE9wdGlvbmFsPFNl
Y29uZHM+IGNhcHBlZExpZmV0aW1lKQogewogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU1MCw5ICs1NTksMzEg
QEAgYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbkFjY2VwdENvb2tpZSgqY29v
a2llLCBmaXJzdFBhcnR5LCB1cmwsIHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIGlmIChjYXBwZWRMaWZldGltZSAmJiBjb29raWUtPmV4cGlyZXMpIHsKKyAgICAgICAgQVNT
RVJUKCpjYXBwZWRMaWZldGltZSA+PSAwX3MpOworICAgICAgICBhdXRvIGNhcHBlZEV4cGlyZXMg
PSBXYWxsVGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7CisgICAgICAgIGlmIChjYXBwZWRF
eHBpcmVzIDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpjb29raWUtPmV4cGlyZXMgLyBXVEY6
Om1zUGVyU2Vjb25kKSkKKyAgICAgICAgICAgIGNvb2tpZS0+ZXhwaXJlcyA9IGNhcHBlZEV4cGly
ZXMuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKTsKKyAgICB9CisKICAgICByZXR1
cm4gc2V0Q29va2llKCpjb29raWUpOwogfQogCitIYXNoU2V0PFN0cmluZz4gQ29va2llSmFyREI6
OmFsbERvbWFpbnMoKQoreworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgU0VMRUNUX0FMTF9ET01BSU5TX1NRTCk7CisgICAgc3RhdGVtZW50LnByZXBhcmUoKTsKKwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBkb21haW5zOworICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgp
ID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgYXV0byBkb21haW4gPSBzdGF0ZW1lbnQuZ2V0Q29s
dW1uVGV4dCgwKTsKKyAgICAgICAgZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICB9CisKKyAgICBz
dGF0ZW1lbnQuZmluYWxpemUoKTsKKyAgICByZXR1cm4gZG9tYWluczsKK30KKwogYm9vbCBDb29r
aWVKYXJEQjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAg
LTU4OSw2ICs2MjAsMTMgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llcyhjb25zdCBT
dHJpbmcmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEluY2x1ZGVIdHRwT25s
eUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvJiBzdGF0ZW1lbnQg
PSBwcmVwYXJlZFN0YXRlbWVudChpbmNsdWRlSHR0cE9ubHlDb29raWVzID09IEluY2x1ZGVIdHRw
T25seUNvb2tpZXM6OlllcyA/IERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9TUUwgOiBERUxFVEVf
Q09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9TUUwpOworICAgIHN0YXRlbWVudC5i
aW5kVGV4dCgxLCBob3N0bmFtZSk7CisgICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShz
dGF0ZW1lbnQuc3RlcCgpKTsKK30KKwogYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2ll
cygpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgK
aW5kZXggMTEyZjYzMjEyOGIxYWE3MmI0NjM5YjYyYTNlYjVhNzllMzdjNWY4MC4uN2MwZWE0N2Vj
ZTRmZjBkNDcyY2U1OTVjOTFlYTFjZmE5MGIyNWNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTI1LDYgKzI1LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFy
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTYsMTMgKzU3LDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7
IG1fYWNjZXB0UG9saWN5ID0gcG9saWN5OyB9CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGFjY2Vw
dFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0UG9saWN5OyB9CiAKKyAgICBIYXNoU2V0
PFN0cmluZz4gYWxsRG9tYWlucygpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFy
Y2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBj
b25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1
cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBn
ZXRBbGxDb29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlKTsKKyAgICBib29sIHNl
dENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
Y29va2llLCBTb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gV1RGOjpu
dWxsb3B0KTsKICAgICBib29sIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKIAogICAgIGJvb2wg
ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IGJvb2wgZGVsZXRlQ29va2llcyhjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgSW5jbHVkZUh0dHBPbmx5
Q29va2llcyk7CiAgICAgYm9vbCBkZWxldGVBbGxDb29raWVzKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBDb29raWVKYXJEQihjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggYWQzZDEzOTcwYjNjNzJkNjBiZjU1OTA0YmU2
NGU2NmIxMDQ5ODNhOS4uZWQ2NGUzNmVjMWZmM2VmNGZjZWExZDhlZDM2ZGFjNTE0NTVmMGQwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtOTUsOSArOTUsMTQgQEAg
Q29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25z
dAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAg
ICBjb29raWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29r
aWVKYXJEQjo6U291cmNlOjpTY3JpcHQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBjbGllbnRTaWRl
Q29va2llQ2FwKFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eSB9LCAqcGFnZUlEKTsKKyNl
bHNlCisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQ7
CisjZW5kaWYKKyAgICBjb29raWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmws
IHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsKIH0K
IAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CkBAIC0xMzMsOSArMTM4LDEwIEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAg
ICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHVybCwgZmFs
c2UpLCBmYWxzZSB9OwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
cyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgLyogbWFpbkRv
Y3VtZW50VVJMICovKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29u
c3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgLyogbWFp
bkRvY3VtZW50VVJMICovKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0
byB1c2UuCisgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzKQorICAgICAgICBj
b29raWVEYXRhYmFzZSgpLnNldENvb2tpZShjb29raWUpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQpAQCAtMTY0LDkgKzE3
MCwxMCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoV2FsbFRpbWUpCiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGNvb2tpZUhvc3ROYW1lcyAqLywgSW5jbHVkZUh0dHBP
bmx5Q29va2llcykKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZC4KKyAgICBmb3IgKGF1dG8gaG9zdG5hbWUgOiBjb29raWVIb3N0
TmFtZXMpCisgICAgICAgIGNvb2tpZURhdGFiYXNlKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KGhvc3RuYW1lLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZUhvc3ROYW1lcykKQEAgLTE3OSw5ICsxODYsOSBAQCBWZWN0b3I8Q29va2llPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbENvb2tpZXMoKQogICAgIHJldHVybiBjb29raWVE
YXRhYmFzZSgpLmdldEFsbENvb2tpZXMoKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgLyogaG9zdG5hbWVz
ICovKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCisgICAgaG9zdG5hbWVzID0gY29va2llRGF0YWJhc2UoKS5hbGxEb21haW5zKCk7
CiB9CiAKIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2llcyhj
b25zdCBVUkwmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgwMTNhYzZkNjUyNWU5MmM1N2JhMTIwNTVhMjkyZDQxZGNmNzc4MWYu
LmZiYTg2ZGE0YzEzNDM3NjQzNDQzMGVjOGE2NDE4NGExNjAzY2Y5ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNr
U291cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1l
dGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2
aWdhdGlvbik7CiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKLSAgICByZXR1cm4gTmV0d29ya0RhdGFU
YXNrQ3VybDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJh
bWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmlu
Z1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1l
dGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJz
LmlzTWFpbkZyYW1lTmF2aWdhdGlvbik7CisgICAgcmV0dXJuIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMu
Y29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRp
b24sIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA0NGU5NDZiOWRiZGE1MjQxMDA1ZDUzNGI5
MWFmNzExYzFkOTdmZjUyLi4zMjQzMWUxNTI4YWRkYmFmODk5OTdhMGU1MmVhYjIxYjQ2ZDI1MTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC00NCw4ICs0NCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU5ldHdvcmtEYXRhVGFza0N1cmw6Ok5l
dHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVu
dGlhbHMsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBD
b250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorTmV0d29ya0RhdGFU
YXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dFdpdGhDcmVkZW50aWFscywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
JiBwYWdlSUQsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJl
cXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbikKKyAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQorICAgICwgbV9wYWdlSUQocGFnZUlE
KQorICAgICwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyhzaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKIHsKICAgICBpZiAobV9zY2hlZHVsZWRGYWlsdXJl
VHlwZSAhPSBOb0ZhaWx1cmUpCiAgICAgICAgIHJldHVybjsKQEAgLTY3LDYgKzcwLDEyIEBAIE5l
dHdvcmtEYXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFzCiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVz
dCkpCisgICAgICAgIGJsb2NrQ29va2llcygpOworI2VuZGlmCisgICAgcmVzdHJpY3RSZXF1ZXN0
UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3QpOworCiAgICAgbV9jdXJsUmVxdWVzdCA9
IGNyZWF0ZUN1cmxSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogICAgIGlmICghbV9pbml0aWFs
Q3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9jdXJsUmVxdWVzdC0+c2V0VXNlclBh
c3MobV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCksIG1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dv
cmQoKSk7CkBAIC0xMjQsNyArMTMzLDcgQEAgTmV0d29ya0RhdGFUYXNrOjpTdGF0ZSBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpzdGF0ZSgpIGNvbnN0CiAKIFJlZjxDdXJsUmVxdWVzdD4gTmV0d29ya0Rh
dGFUYXNrQ3VybDo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmVxdWVzdFN0YXR1cyBzdGF0dXMpCiB7Ci0gICAgaWYgKHN0YXR1cyA9PSBSZXF1ZXN0U3RhdHVz
OjpOZXdSZXF1ZXN0KQorICAgIGlmIChzdGF0dXMgPT0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVz
dCAmJiAhbV9ibG9ja2luZ0Nvb2tpZXMpCiAgICAgICAgIGFwcGVuZENvb2tpZUhlYWRlcihyZXF1
ZXN0KTsKIAogICAgIC8vIENyZWF0ZXMgYSBDdXJsUmVxdWVzdCBpbiBzdXNwZW5kZWQgc3RhdGUu
CkBAIC0yOTYsNiArMzA1LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oKQogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVENTKQorICAgIGlmICghbV9ibG9ja2luZ0Nvb2tpZXMgJiYgc2hvdWxk
QmxvY2tDb29raWVzKHJlcXVlc3QpKQorICAgICAgICBibG9ja0Nvb2tpZXMoKTsKKyNlbmRpZgog
ICAgIGF1dG8gcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpOwogICAgIG1f
Y2xpZW50LT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RG
TW92ZShyZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGlk
Q2hhbmdlQ3JlZGVudGlhbCwgaXNDcm9zc09yaWdpbl0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0KSB7CiAgICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IG1fc3RhdGUg
PT0gU3RhdGU6OkNhbmNlbGluZykKQEAgLTMwOCw2ICszMjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkKICAgICAgICAgICAgIG1fc3Rh
cnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgYXV0byByZXF1ZXN0Q29w
eSA9IG5ld1JlcXVlc3Q7CisgICAgICAgIHJlc3RyaWN0UmVxdWVzdFJlZmVycmVyVG9PcmlnaW5J
Zk5lZWRlZChyZXF1ZXN0Q29weSk7CiAgICAgICAgIG1fY3VybFJlcXVlc3QgPSBjcmVhdGVDdXJs
UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RDb3B5KSk7CiAgICAgICAgIGlmIChkaWRDaGFuZ2VDcmVk
ZW50aWFsICYmICFtX2luaXRpYWxDcmVkZW50aWFsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
bV9jdXJsUmVxdWVzdC0+c2V0VXNlclBhc3MobV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCksIG1f
aW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7CkBAIC00NjMsNCArNDc3LDMzIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ3VybDo6aGFuZGxlQ29va2llSGVhZGVycyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlCiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmJsb2NrQ29va2llcygpCit7CisgICAgbV9ibG9ja2luZ0Nvb2tpZXMgPSB0cnVlOworfQorCit2
b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnVuYmxvY2tDb29raWVzKCkKK3sKKyAgICBtX2Jsb2Nr
aW5nQ29va2llcyA9IGZhbHNlOworfQorCitib29sIE5ldHdvcmtEYXRhVGFza0N1cmw6OnNob3Vs
ZEJsb2NrQ29va2llcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIHNob3VsZEJs
b2NrQ29va2llcyA9IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzczsKKworICAgIGlmICghc2hvdWxk
QmxvY2tDb29raWVzICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAg
ICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBtX3No
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKKworICAgIGlmIChzaG91bGRCbG9j
a0Nvb2tpZXMpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIE5ldHdvcmtEYXRhVGFza0N1cmw6OmlzVGhpcmRQYXJ0eVJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiAhV2Vi
Q29yZTo6YXJlUmVnaXN0cmFibGVEb21haW5zRXF1YWwocmVxdWVzdC51cmwoKSwgcmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAppbmRleCA1MmQwODViNDRjMTdlNjBmNjEzM2ZiYTBlMGNkNjkzM2VlM2FmMjU1Li4x
MmNmOGZiZTM3YjZjOGNjZDIwOGMzYjY4YmUwYzVkOWEzZDg2NDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgK
QEAgLTI3LDggKzI3LDExIEBACiAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0N1cmxSZXF1ZXN0Q2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0
OwpAQCAtMzgsOSArNDEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0Rh
dGFUYXNrQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2ssIHB1YmxpYyBXZWJDb3Jl
OjpDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0
YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdl
YkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6
OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZm
LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0
YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCisgICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0
YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFU
YXNrQ3VybChzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRh
c2tDdXJsKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKSk7CiAgICAgfQogCiAgICAgfk5ldHdvcmtEYXRhVGFza0N1cmwoKTsKQEAgLTU0LDcg
KzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUmV1c2VkUmVxdWVzdAogICAgIH07CiAKLSAgICBO
ZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbik7
CisgICAgTmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYsICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
biwgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpOwogCiAgICAg
dm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOwpAQCAt
ODIsNiArODUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZENvb2tpZUhlYWRlcihXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRsZUNvb2tpZUhlYWRlcnMoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q3VybFJlc3BvbnNl
Jik7CiAKKyAgICBib29sIGlzVGhpcmRQYXJ0eVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBibG9ja0Nvb2tpZXMoKTsKKyAgICB2b2lkIHVu
YmxvY2tDb29raWVzKCk7CisKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9
OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBtX2N1cmxSZXF1ZXN0OwpAQCAt
ODksNiArOTcsMTQgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9hdXRoRmFpbHVyZUNvdW50IHsgMCB9OwogICAgIE1vbm90b25p
Y1RpbWUgbV9zdGFydFRpbWU7CisKKyAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9mcmFt
ZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOworCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBib29sIG1fYmxvY2tpbmdDb29raWVzIHsg
ZmFsc2UgfTsKKyNlbmRpZgorICAgIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgeyBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8gfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRleCBiYzI4ODNhZTEzZTViMDI5M2M1
MTY4NzU5YzU4NWMzZDRkNmM0ZmI0Li5jZjZlYjRkNzI0MDEwOWM1ZjU4OWUwZDNlNWQwMjI1ZWIx
YzM0OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtNDMsNiArNDMsMTQgQEAgTmV0d29ya1Nlc3Np
b25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBOZXR3b3JrU2UKICAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VG
aWxlLmlzRW1wdHkoKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNldENvb2tp
ZURhdGFiYXNlKG1ha2VVbmlxdWVSZWY8Q29va2llSmFyREI+KHBhcmFtZXRlcnMuY29va2llUGVy
c2lzdGVudFN0b3JhZ2VGaWxlKSk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNldFBy
b3h5U2V0dGluZ3MoV1RGTW92ZShwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MpKTsKKworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5kaXJlY3Rvcnk7CisgICAgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
aG91bGRJbmNsdWRlTG9jYWxob3N0ID8gU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIDogU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdDo6Tm87CisgICAgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5lbmFibGVEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
OjpZZXMgOiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObzsKKyAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3Vy
Y2U7CisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkKTsKKyNlbmRpZgogfQogCiBOZXR3
b3JrU2Vzc2lvbkN1cmw6On5OZXR3b3JrU2Vzc2lvbkN1cmwoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXgg
YjVhNWYwNDQ2ZTdiYjYxMjQ0NWRlZDA2NDliMDY4YzljOTYyNzcxZi4uYmU1MDMwNzk3NDAyZDAw
YmEwZTBiYzM3MWU1MmM4YzFkNDdiMWNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiV0tTZWN1cml0eU9yaWdpblJlZi5oIgogI2luY2x1ZGUgIldLU3RyaW5n
LmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC04MTksMyArODIwLDE4IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlQ2xlYXJCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2VzcyhXS1dl
YnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAg
IH0pOwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLUGFnZVJlZiBwYWdlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0Z1bmN0aW9uIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+Z2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXModG9JbXBsKHBhZ2VSZWYpLT5pZGVudGlmaWVyKCksIFtjb250ZXh0LCBjYWxs
YmFja10gKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykgeworICAgICAgICBhdXRvIGRvbWFpbkFy
cmF5UmVmID0gV0tNdXRhYmxlQXJyYXlDcmVhdGUoKTsKKyAgICAgICAgZm9yIChhdXRvIGRvbWFp
biA6IGRvbWFpbnMpCisgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShkb21haW5BcnJheVJl
ZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRh
dGEoKSkpLmdldCgpKTsKKworICAgICAgICBjYWxsYmFjayhjb250ZXh0LCBkb21haW5BcnJheVJl
Zik7CisgICAgfSk7CisjZWxzZQorICAgIGNhbGxiYWNrKGNvbnRleHQsIFdLTXV0YWJsZUFycmF5
Q3JlYXRlKCkpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDc4Nzg3MmFlMjdmOGEzYjRkMjJh
N2U1OTJjOGY1YTFmOWE4NTkwY2EuLjZhMGNjZDg3YzY4MjYwZjE4NGJmMGExNjA0NzliZGFmM2I0
YjdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xNjIsNiArMTYyLDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0
b3JlUmUKIAogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVpbnQ2NF90IHF1
b3RhKSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvblNldFBlck9yaWdpblN0b3JhZ2VRdW90YSk7CiAKK3R5cGVkZWYgdm9p
ZCgqV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGdW5jdGlvbiko
dm9pZCogY29udGV4dCwgV0tBcnJheVJlZiBkb21haW5zKTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Z1bmN0aW9uIGNhbGxiYWNr
KTsKKwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmll
bnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpOwog
CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlv
bnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBmNTU2YTRlMGEwZDAxNWU2N2Q4OGVkNzA5ODQyYWZh
NmRjNDI2YWUuLjUyYzlmOTQwMmMzYWViYzM2NmViOWMzZGE4MjBiYTMwZDc3MmI0ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0yMzI0LDYgKzIzMjQsOSBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBlck9y
aWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRl
cnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5T
dG9yYWdlUXVvdGEoKTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuZW5hYmxlZCA9IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7
CisjZW5kaWYKICAgICBwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwog
CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODEwOWM0YWQ0MGExMjg0MDQ3ZmU2Y2MwYTdlNjNhYjBmYzYy
YTVmOS4uMDNiMDc0MDFkNTNjNjE5MTY3NjY5YjNjYTJiNzQ4ODE2ZTNlM2Y5YiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIwLTA2LTA5ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgor
CisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NjkyCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWly
ZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIEN1cmwgcG9ydC4KKwor
ICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0OjpHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2Fs
bGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMpOgorCiAyMDIwLTA2LTA4ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5XSBDaGVjayAnYnVnLXNlYXJjaCcgcmV0dXJucyBh
IG5vbiBudWxsIHJlc3VsdCBiZWZvcmUgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAppbmRleCBlNjY5NzNiNzQ1ZGVlOGJhY2Y3MTdjZDgyNmNiYTg3Y2Jm
YThmNDk5Li41OTZiOGI2NjIwYzIyYWVlMzk4N2IxZTEzNjdkMzFjNzJjMmY0NDkxIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzE2NSw4ICszMTY1LDQ3
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7
CiB9CiAKK3N0cnVjdCBHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCB7
CisgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRy
b2xsZXImIGNvbnRyb2xsZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgaGFuZGxlcikKKyAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9sbGVyKQorICAg
ICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCisgICAgeworICAgIH0K
KworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJvbGxlcjsKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBib29s
IGRvbmUgeyBmYWxzZSB9OworfTsKKwordm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrKHZvaWQqIHVzZXJEYXRhLCBXS0FycmF5UmVmIGRvbWFpbkxpc3QpCit7CisgICAgYXV0
byogY29udGV4dCA9IHN0YXRpY19jYXN0PEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJh
Y2tDb250ZXh0Kj4odXNlckRhdGEpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0RG9tYWlu
czsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFdLQXJyYXlHZXRTaXplKGRvbWFpbkxpc3QpOyBp
KyspIHsKKyAgICAgICAgYXV0byBkb21haW4gPSAgcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGRvbWFpbkxpc3QsIGkpKTsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBzdGQ6OnZlY3RvcjxjaGFyPihXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoZG9tYWluKSk7CisgICAgICAgIGF1dG8gc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZyhkb21haW4sIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgICAg
IHJlc3VsdERvbWFpbnMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSwgc3Ry
aW5nTGVuZ3RoIC0gMSkpOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5jb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgY29udGV4dC0+Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHRE
b21haW5zKSk7CisKKyAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKIHsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IFdLQ29udGV4
dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZvcm1Db250ZXh0KCkpOworICAgIEdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMsIFt0aGlzXSAoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zKSB7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9
KTsKKworICAgIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKGRh
dGFTdG9yZSwgbV9tYWluV2ViVmlldy0+cGFnZSgpLCAmY29udGV4dCwgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVv
dXQpOwogfQogCiBzdHJ1Y3QgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0NvbnRleHQg
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGJmNWZiMzhhNjM3Y2NmNDA0N2IzYmJhOGRmZjZkZWFjNjM5MDg5YWUuLmRlODkx
ZDZkZDc1YjJmOGI0NzFjZDQ3ZjRhNjhjZmViYjc4YmFlMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0wNi0wOSAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4K
KworICAgICAgICBbQ3VybF0gSW1wbGVtZW50IGZ1bmN0aW9ucyB0byB1c2UgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBmdW5jdGlvbnMgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciBDdXJsIHBvcnQuCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy8KKworICAgICAgICAqIHBsYXRmb3JtL3dp
bmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDYtMDggIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSG9yaXpvbnRhbGx5IHNjcm9sbGluZyBl
bGVtZW50cyBhcmUgYnJva2VuIHdoZW4gcmV2ZWFsZWQgYnkgdG9nZ2xpbmcgdmlzaWJpbGl0eQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
N2RlMjA4ZDgzZmY4ZTQyNjliODI0ZmIxODdiM2VkNDVmMTRiNjA0ZS4uZjM1M2I2MDZmNzMyY2Rl
NzU3MDk1MDlmOWRhNGFlMTU1YTJlNDI1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTc1LDkgKzExNzUsMzcgQEAgaHR0cC90ZXN0
cy9yZWZlcnJlci1wb2xpY3kvbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUvIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUtdXJsL2Nyb3NzLW9yaWdpbi1odHRwLWh0
dHAuaHRtbCBbIFNraXAgXSAKIGh0dHAvdGVzdHMvcmVmZXJyZXItcG9saWN5L3Vuc2FmZS11cmwv
Y3Jvc3Mtb3JpZ2luLWh0dHAuaHR0cHMuaHRtbCBbIFNraXAgXSAKIAotIyBBbGwgdGltaW5nIG91
dAotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFsgU2tpcCBdCisjIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MKK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFBhc3Mg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2V4ZW1wdERvbWFpbnMgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVk
aXJlY3QtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLWRhdGFiYXNlLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24u
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMt
d2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWVzLXdpdGgtYW5kLXdpdGhv
dXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC1kYXRhYmFzZS5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJl
bW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZy
YW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9u
LXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9waW5nLXRvLXByZXZhbGVudC1yZXNvdXJjZS1kYXRhYmFz
ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGluZy10
by1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0Lmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25lLXdlYi1h
cHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24tZGF0YWJhc2UuaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUt
d2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNpdGUtZGF0YS1kZWxldGlvbi5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24t
b24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi1kYXRhYmFzZS5waHAg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lv
bi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRoLWludGVyYWN0aW9uLnBocCBbIFNraXAg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9u
Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1w
YXJ0eS1jb29raWUtYmxvY2tpbmctZXBoZW1lcmFsLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tp
bmctZXBoZW1lcmFsLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWlu
dGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRoaW4tc2hvcnQt
cGVyaW9kLW9mLXRpbWUtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tb25seS1yZXBvcnRlZC1vbmNlLXdpdGhp
bi1zaG9ydC1wZXJpb2Qtb2YtdGltZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRh
dGEtcmVtb3ZhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEt
cmVtb3ZhbC5odG1sIFsgU2tpcCBdCiAKKyMgQWxsIHRpbWluZyBvdXQKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvNDAxLWxvZ291dC80MDEtbG9nb3V0
LnBocCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNv
b2tpZS1ibG9ja2luZy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401571</attachid>
            <date>2020-06-10 12:48:55 -0700</date>
            <delta_ts>2020-06-12 11:24:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200611044854.patch</filename>
            <type>text/plain</type>
            <size>35278</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uODc3ZDNiMTVhYzlhZTFlYTQ5OTg5NGQ1NDY5MTY0
MzE5MDg3YWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA2LTExICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIEN1cmwgcG9ydC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLworCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZUphckRCOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6YWxsRG9tYWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisKIDIwMjAtMDYtMTAgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJhc2VBdWRpb1NoYXJlZFVuaXQg
ZG9lcyBub3QgbmVlZCB0byByZXN0YXJ0IGl0cyBhdWRpbyB1bml0IGF0IHJlc3VtZSB0aW1lLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBlYzM3MTg5Yzg3ZWI2MGUzZTU5YWRlOTAzNTYwYmMwOTNlNmQzNTEzLi5iZTcw
NzIwNWNlZWRhNDljZDJhZDg5MWI1Mjc4MWNjNDE3NDNlM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM1IEBACisyMDIwLTA2LTExICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnku
Y29tPgorCisgICAgICAgIFtDdXJsXSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVt
ZW50IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIEN1cmwgcG9ydC4KKworICAgICAgICBJbiBO
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCB3ZSBjaGVjayBpZiB3ZSBzaG91bGQgYmxvY2sgY29va2ll
cyBhbmQgYmxvY2sgaWYgbmVlZGVkLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmNyZWF0ZUN1cmxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpibG9j
a0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp1bmJsb2Nr
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OnNob3VsZEJs
b2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0N1cmw6OmlzVGhp
cmRQYXJ0eVJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3Jr
U2Vzc2lvbkN1cmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorCiAy
MDIwLTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2ZXJ0IHIyNTk3NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjg4N2Y4YTNk
OWQ5NDNmMjYyYWEyY2RjOWU4YzliYzM2YzFiNDJiOC4uOWMwNzU5MjAyZDQ0OTVhOTlhYzA1Nzkx
ZWNjNWE2OWViMTczMDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY5Niw2ICs2OTYsNyBA
QCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9Eb2N1bWVudEZyYWdtZW50
LmlkbAogICAgIGRvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAgICAgZG9tL0RvY3VtZW50T3JT
aGFkb3dSb290LmlkbAorICAgIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaWRsCiAgICAgZG9t
L0RvY3VtZW50VG91Y2guaWRsCiAgICAgZG9tL0RvY3VtZW50VHlwZS5pZGwKICAgICBkb20vRHJh
Z0V2ZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKaW5kZXggYjIyOTQ5Yjk4ZWMxY2U0YWQ0YzEwYmYxOTRjMDRjYjE5
MzExZDFkNy4uZGJjNDIzZjk0OTA3YTIwMDNlNDQ5NTdlZGExZDJmMDAwMGVjMjEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b29raWVKYXJEQi5oIgorI2luY2x1ZGUgImNvb2tpZUphci5oIgogCiAjaW5jbHVkZSAiQ29va2ll
VXRpbC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTYzLDYgKzY0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBkb21haW5faW5kZXgg
T04gQ29va2llKGRvbWFpbik7IgogI2RlZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAogICAg
ICJDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsi
CisjZGVmaW5lIFNFTEVDVF9BTExfRE9NQUlOU19TUUwgXAorICAgICJTRUxFQ1QgRElTVElOQ1Qg
ZG9tYWluIEZST00gQ29va2llOyIKICNkZWZpbmUgQ0hFQ0tfRVhJU1RTX0NPT0tJRV9TUUwgXAog
ICAgICJTRUxFQ1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRv
bWFpbiBHTE9CID8pKTsiCiAjZGVmaW5lIENIRUNLX0VYSVNUU19IVFRQT05MWV9DT09LSUVfU1FM
IFwKQEAgLTc2LDYgKzc5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAiREVMRVRFIEZS
T00gQ29va2llIFdIRVJFIG5hbWUgPSA/IEFORCBkb21haW4gPSA/OyIKICNkZWZpbmUgREVMRVRF
X0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwgXAogICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUg
c2Vzc2lvbiA9IDE7IgorI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKKyAg
ICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFpbiA9ID8gOyIKKyNkZWZpbmUgREVMRVRF
X0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQVF9IVFRQX09OTFlfU1FMIFwKKyAgICAiREVMRVRFIEZS
T00gQ29va2llIFdIRVJFIChkb21haW4gPSA/KSBBTkQgKGh0dHBvbmx5ID0gMCk7IgogI2RlZmlu
ZSBERUxFVEVfQUxMX0NPT0tJRV9TUUwgXAogICAgICJERUxFVEUgRlJPTSBDb29raWU7IgogCkBA
IC0xNjUsNiArMTcyLDggQEAgYm9vbCBDb29raWVKYXJEQjo6b3BlbkRhdGFiYXNlKCkKICAgICBj
cmVhdGVQcmVwYXJlU3RhdGVtZW50KENIRUNLX0VYSVNUU19IVFRQT05MWV9DT09LSUVfU1FMKTsK
ICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09LSUVfQllfTkFNRV9ET01BSU5f
UEFUSF9TUUwpOwogICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJRV9CWV9O
QU1FX0RPTUFJTl9TUUwpOworICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoREVMRVRFX0NPT0tJ
RVNfQllfRE9NQUlOX1NRTCk7CisgICAgY3JlYXRlUHJlcGFyZVN0YXRlbWVudChERUxFVEVfQ09P
S0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9TUUwpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC01MjksNyArNTM4LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0
IENvb2tpZSYgY29va2llKQogICAgIHJldHVybiBjaGVja1NRTGl0ZVJldHVybkNvZGUoc3RhdGVt
ZW50LnN0ZXAoKSk7CiB9CiAKLWJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUph
ckRCOjpTb3VyY2Ugc291cmNlKQorYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYm9keSwgQ29va2ll
SmFyREI6OlNvdXJjZSBzb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQog
ewogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTU1MCw5ICs1NTksMzEgQEAgYm9vbCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoIWNhbkFjY2VwdENvb2tpZSgqY29va2llLCBmaXJzdFBhcnR5LCB1cmwsIHNv
dXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmIChjYXBwZWRMaWZldGltZSAm
JiBjb29raWUtPmV4cGlyZXMpIHsKKyAgICAgICAgQVNTRVJUKCpjYXBwZWRMaWZldGltZSA+PSAw
X3MpOworICAgICAgICBhdXRvIGNhcHBlZEV4cGlyZXMgPSBXYWxsVGltZTo6bm93KCkgKyAqY2Fw
cGVkTGlmZXRpbWU7CisgICAgICAgIGlmIChjYXBwZWRFeHBpcmVzIDwgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKCpjb29raWUtPmV4cGlyZXMgLyBXVEY6Om1zUGVyU2Vjb25kKSkKKyAgICAgICAg
ICAgIGNvb2tpZS0+ZXhwaXJlcyA9IGNhcHBlZEV4cGlyZXMuc2Vjb25kc1NpbmNlRXBvY2goKS5t
aWxsaXNlY29uZHMoKTsKKyAgICB9CisKICAgICByZXR1cm4gc2V0Q29va2llKCpjb29raWUpOwog
fQogCitIYXNoU2V0PFN0cmluZz4gQ29va2llSmFyREI6OmFsbERvbWFpbnMoKQoreworICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgU0VMRUNUX0FMTF9ET01BSU5TX1NR
TCk7CisgICAgc3RhdGVtZW50LnByZXBhcmUoKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBkb21h
aW5zOworICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAg
ICAgYXV0byBkb21haW4gPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgZG9t
YWlucy5hZGQoZG9tYWluKTsKKyAgICB9CisKKyAgICBzdGF0ZW1lbnQuZmluYWxpemUoKTsKKyAg
ICByZXR1cm4gZG9tYWluczsKK30KKwogYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFpc0VuYWJs
ZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTU4OSw2ICs2MjAsMTMgQEAgYm9vbCBD
b29raWVKYXJEQjo6ZGVsZXRlQ29va2llcyhjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5
Q29va2llcykKK3sKKyAgICBhdXRvJiBzdGF0ZW1lbnQgPSBwcmVwYXJlZFN0YXRlbWVudChpbmNs
dWRlSHR0cE9ubHlDb29raWVzID09IEluY2x1ZGVIdHRwT25seUNvb2tpZXM6OlllcyA/IERFTEVU
RV9DT09LSUVTX0JZX0RPTUFJTl9TUUwgOiBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBU
X0hUVFBfT05MWV9TUUwpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBob3N0bmFtZSk7Cisg
ICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuc3RlcCgpKTsKK30KKwog
Ym9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiB7CiAgICAgaWYgKCFpc0VuYWJs
ZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggMTEyZjYzMjEyOGIxYWE3MmI0
NjM5YjYyYTNlYjVhNzllMzdjNWY4MC4uN2MwZWE0N2VjZTRmZjBkNDcyY2U1OTVjOTFlYTFjZmE5
MGIyNWNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29va2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtNTYsMTMgKzU3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjY2VwdFBv
bGljeShDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7IG1fYWNjZXB0UG9saWN5ID0gcG9saWN5
OyB9CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGFjY2VwdFBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWNjZXB0UG9saWN5OyB9CiAKKyAgICBIYXNoU2V0PFN0cmluZz4gYWxsRG9tYWlucygpOwog
ICAgIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0
cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+
JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7Ci0gICAgYm9v
bCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZSwgU291cmNlKTsKKyAgICBib29sIHNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llLCBTb3VyY2UsIE9wdGlvbmFs
PFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gV1RGOjpudWxsb3B0KTsKICAgICBib29sIHNldENv
b2tpZShjb25zdCBDb29raWUmKTsKIAogICAgIGJvb2wgZGVsZXRlQ29va2llKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wgZGVsZXRlQ29va2llcyhjb25z
dCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAgYm9vbCBkZWxl
dGVBbGxDb29raWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb29raWVKYXJEQihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggYWQzZDEzOTcwYjNjNzJkNjBiZjU1OTA0YmU2NGU2NmIxMDQ5ODNhOS4uMTJiZDI2ZDIw
YmUwMDA0NmM1ODhhOWEzYTAzZGI0YzIyMTI3Mjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtOTUsOSArOTUsMTQgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURh
dGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBjb29raWVEYXRhYmFzZSgpLnNldENv
b2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQp
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgT3B0aW9uYWw8U2Vj
b25kcz4gY2FwcGVkTGlmZXRpbWUgPSBjbGllbnRTaWRlQ29va2llQ2FwKFJlZ2lzdHJhYmxlRG9t
YWluIHsgZmlyc3RQYXJ0eSB9LCBwYWdlSUQpOworI2Vsc2UKKyAgICBPcHRpb25hbDxTZWNvbmRz
PiBjYXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGNvb2tpZURhdGFi
YXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3Vy
Y2U6OlNjcmlwdCwgY2FwcGVkTGlmZXRpbWUpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKQEAgLTEzMyw5ICsxMzgs
MTAgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vz
c2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+Jiwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1lbnRVUkwgKi8pCiB7Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2ll
KGNvb2tpZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29u
c3QgQ29va2llJiBjb29raWUpCkBAIC0xNjQsOSArMTcwLDEwIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSkKICAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyog
Y29va2llSG9zdE5hbWVzICovLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzKQordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBpbmNsdWRlSHR0
cE9ubHlDb29raWVzKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLgorICAg
IGZvciAoYXV0byBob3N0bmFtZSA6IGNvb2tpZUhvc3ROYW1lcykKKyAgICAgICAgY29va2llRGF0
YWJhc2UoKS5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUsIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzKQpAQCAt
MTc5LDkgKzE4Niw5IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
QWxsQ29va2llcygpCiAgICAgcmV0dXJuIGNvb2tpZURhdGFiYXNlKCkuZ2V0QWxsQ29va2llcygp
OwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoSGFzaFNldDxTdHJpbmc+JiAvKiBob3N0bmFtZXMgKi8pCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFt
ZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBob3N0bmFtZXMg
PSBjb29raWVEYXRhYmFzZSgpLmFsbERvbWFpbnMoKTsKIH0KIAogVmVjdG9yPENvb2tpZT4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXggODAxM2FjNmQ2
NTI1ZTkyYzU3YmExMjA1NWEyOTJkNDFkY2Y3NzgxZi4uZmJhODZkYTRjMTM0Mzc2NDM0NDMwZWM4
YTY0MTg0YTE2MDNjZjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8TmV0d29ya0RhdGFUYXNr
PiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29y
a0RhdAogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGUoc2Vzc2lvbiwgY2xp
ZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRl
cnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsKICNlbmRpZgogI2lmIFVT
RShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGUoc2Vzc2lvbiwg
Y2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKTsK
KyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwg
cGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2Vi
UGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNv
bnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFyYW1ldGVycy5zaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
CmluZGV4IDQ0ZTk0NmI5ZGJkYTUyNDEwMDVkNTM0YjkxYWY3MTFjMWQ5N2ZmNTIuLjAwZTFhOTcx
YjFiMWU3YjkxOGJjZGU2ZDI4Nzk0ZmJmYWI5MWQ5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTQ0LDggKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50U25pZmYsIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5GcmFtZU5hdmlnYXRpb24pCitOZXR3b3JrRGF0YVRhc2tDdXJsOjpOZXR3b3JrRGF0YVRhc2tD
dXJsKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXImIHBhZ2VJRCwgU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQogICAgIDogTmV0
d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgICwgbV9mcmFtZUlE
KGZyYW1lSUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX3Nob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KQogewogICAgIGlmIChtX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjcsNiArNzAsMTIgQEAgTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29y
a0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXMKICAg
ICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0KSkKKyAgICAgICAgYmxvY2tDb29raWVz
KCk7CisjZW5kaWYKKyAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQo
cmVxdWVzdCk7CisKICAgICBtX2N1cmxSZXF1ZXN0ID0gY3JlYXRlQ3VybFJlcXVlc3QoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgaWYgKCFtX2luaXRpYWxDcmVkZW50aWFsLmlzRW1wdHkoKSkgewog
ICAgICAgICBtX2N1cmxSZXF1ZXN0LT5zZXRVc2VyUGFzcyhtX2luaXRpYWxDcmVkZW50aWFsLnVz
ZXIoKSwgbV9pbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpKTsKQEAgLTEyNCw3ICsxMzMsNyBA
QCBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlIE5ldHdvcmtEYXRhVGFza0N1cmw6OnN0YXRlKCkgY29u
c3QKIAogUmVmPEN1cmxSZXF1ZXN0PiBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXF1ZXN0U3RhdHVzIHN0YXR1cykKIHsK
LSAgICBpZiAoc3RhdHVzID09IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpCisgICAgaWYgKHN0
YXR1cyA9PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0ICYmICFtX2Jsb2NraW5nQ29va2llcykK
ICAgICAgICAgYXBwZW5kQ29va2llSGVhZGVyKHJlcXVlc3QpOwogCiAgICAgLy8gQ3JlYXRlcyBh
IEN1cmxSZXF1ZXN0IGluIHN1c3BlbmRlZCBzdGF0ZS4KQEAgLTI5Niw2ICszMDUsMTAgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbigpCiAgICAg
ICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUQ1MpCisgICAg
aWYgKCFtX2Jsb2NraW5nQ29va2llcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCkpCisg
ICAgICAgIGJsb2NrQ29va2llcygpOworI2VuZGlmCiAgICAgYXV0byByZXNwb25zZSA9IFJlc291
cmNlUmVzcG9uc2UobV9yZXNwb25zZSk7CiAgICAgbV9jbGllbnQtPndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkaWRDaGFuZ2VDcmVkZW50aWFsLCBpc0Nyb3Nz
T3JpZ2luXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKICAgICAgICAgaWYg
KG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nKQpAQCAt
MzA4LDYgKzMyMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oKQogICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKIAogICAgICAgICBhdXRvIHJlcXVlc3RDb3B5ID0gbmV3UmVxdWVzdDsKKyAgICAgICAg
cmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3RDb3B5KTsKICAg
ICAgICAgbV9jdXJsUmVxdWVzdCA9IGNyZWF0ZUN1cmxSZXF1ZXN0KFdURk1vdmUocmVxdWVzdENv
cHkpKTsKICAgICAgICAgaWYgKGRpZENoYW5nZUNyZWRlbnRpYWwgJiYgIW1faW5pdGlhbENyZWRl
bnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2N1cmxSZXF1ZXN0LT5zZXRVc2VyUGFz
cyhtX2luaXRpYWxDcmVkZW50aWFsLnVzZXIoKSwgbV9pbml0aWFsQ3JlZGVudGlhbC5wYXNzd29y
ZCgpKTsKQEAgLTQ2Myw0ICs0NzcsMzcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpoYW5k
bGVDb29raWVIZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmUKICAgICB9
CiB9CiAKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6YmxvY2tDb29raWVzKCkKK3sKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIG1fYmxvY2tpbmdDb29raWVzID0g
dHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnVuYmxvY2tDb29r
aWVzKCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIG1fYmxv
Y2tpbmdDb29raWVzID0gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBOZXR3b3JrRGF0YVRhc2tD
dXJsOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M7CisKKyAgICBp
ZiAoIXNob3VsZEJsb2NrQ29va2llcyAmJiBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpKQorICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3Bh
Z2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CisKKyAgICBpZiAo
c2hvdWxkQmxvY2tDb29raWVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBOZXR3b3JrRGF0YVRhc2tDdXJsOjppc1RoaXJkUGFydHlS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBy
ZXR1cm4gIVdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKHJlcXVlc3QudXJsKCks
IHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNTJkMDg1YjQ0YzE3ZTYwZjYxMzNmYmEwZTBjZDY5MzNl
ZTNhZjI1NS4uMDRmMDgxYWRkOTI1M2YyMjk2YzAyNmQ5NTQ4ZjliOWE5N2M2NDRmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oCkBAIC0yNyw4ICsyNywxMSBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNr
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUmVxdWVzdENsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
dXJsUmVxdWVzdDsKQEAgLTM4LDkgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtEYXRhVGFza0N1cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrLCBwdWJs
aWMgV2ViQ29yZTo6Q3VybFJlcXVlc3RDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgIHN0YXRpYyBSZWY8
TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBXZWJDb3Jl
OjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0N1cmwoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
Ziwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0RhdGFUYXNrQ3VybChzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJ
RCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykpOwogICAgIH0KIAogICAgIH5OZXR3b3JrRGF0YVRhc2tDdXJsKCk7
CkBAIC01NCw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJldXNlZFJlcXVlc3QKICAgICB9
OwogCi0gICAgTmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24pOworICAgIE5ldHdvcmtEYXRhVGFza0N1cmwoTmV0d29ya1Nlc3Npb24mLCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmLCAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciYsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KTsKIAogICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN1bWUoKSBvdmVy
cmlkZTsKQEAgLTgyLDYgKzg1LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRDb29raWVI
ZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVDb29raWVI
ZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkN1
cmxSZXNwb25zZSYpOwogCisgICAgYm9vbCBpc1RoaXJkUGFydHlSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgYmxvY2tDb29raWVzKCk7Cisg
ICAgdm9pZCB1bmJsb2NrQ29va2llcygpOworCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpT
dXNwZW5kZWQgfTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gbV9jdXJsUmVx
dWVzdDsKQEAgLTg5LDYgKzk3LDEzIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fYXV0aEZhaWx1cmVDb3VudCB7IDAgfTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOworCisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIG1fZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKKwor
ICAgIGJvb2wgbV9ibG9ja2luZ0Nvb2tpZXMgeyBmYWxzZSB9OworCisgICAgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nOjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCmlu
ZGV4IGJjMjg4M2FlMTNlNWIwMjkzYzUxNjg3NTljNTg1YzNkNGQ2YzRmYjQuLmNmNmViNGQ3MjQw
MTA5YzVmNTg5ZTBkM2U1ZDAyMjVlYjFjMzQ5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCkBAIC00Myw2
ICs0MywxNCBAQCBOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZQogICAgIGlmICghcGFyYW1ldGVycy5j
b29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKS0+c2V0Q29va2llRGF0YWJhc2UobWFrZVVuaXF1ZVJlZjxDb29raWVKYXJE
Qj4ocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpKTsKICAgICBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKS0+c2V0UHJveHlTZXR0aW5ncyhXVEZNb3ZlKHBhcmFtZXRlcnMucHJv
eHlTZXR0aW5ncykpOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeTsKKyAgICBtX3Nob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBwYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPyBTaG91bGRJbmNs
dWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpObzsKKyAgICBtX2Vu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGU6Ok5vOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZh
bGVudFJlc291cmNlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJs
ZWQpOworI2VuZGlmCiB9CiAKIE5ldHdvcmtTZXNzaW9uQ3VybDo6fk5ldHdvcmtTZXNzaW9uQ3Vy
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVE
YXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcAppbmRleCBiNWE1ZjA0NDZlN2JiNjEyNDQ1ZGVkMDY0OWIwNjhjOWM5
NjI3NzFmLi5iZTUwMzA3OTc0MDJkMDBiYTBlMGJjMzcxZTUyYzhjMWQ0N2IxY2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXS1NlY3VyaXR5T3JpZ2luUmVm
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKQEAgLTgx
OSwzICs4MjAsMTggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckJ1bmRsZUlkZW50aWZp
ZXJJbk5ldHdvcmtQcm9jZXNzKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
R2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh0b0ltcGwocGFnZVJlZiktPmlkZW50
aWZpZXIoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKSB7
CisgICAgICAgIGF1dG8gZG9tYWluQXJyYXlSZWYgPSBXS011dGFibGVBcnJheUNyZWF0ZSgpOwor
ICAgICAgICBmb3IgKGF1dG8gZG9tYWluIDogZG9tYWlucykKKyAgICAgICAgICAgIFdLQXJyYXlB
cHBlbmRJdGVtKGRvbWFpbkFycmF5UmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGRvbWFpbi51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQsIGRvbWFpbkFycmF5UmVmKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY2FsbGJhY2so
Y29udGV4dCwgV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5k
ZXggNzg3ODcyYWUyN2Y4YTNiNGQyMmE3ZTU5MmM4ZjVhMWY5YTg1OTBjYS4uNmEwY2NkODdjNjgy
NjBmMTg0YmYwYTE2MDQ3OWJkYWYzYjRiN2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTE2Miw2ICsxNjIs
OSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZv
ck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZQogCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uU2V0UGVyT3JpZ2luU3RvcmFn
ZVF1b3RhKTsKIAordHlwZWRlZiB2b2lkKCpXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0Z1bmN0aW9uKSh2b2lkKiBjb250ZXh0LCBXS0FycmF5UmVmIGRvbWFpbnMp
OworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tQYWdlUmVmIHBhZ2VS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzRnVuY3Rpb24gY2FsbGJhY2spOworCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZik7CiAKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlv
bikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMGY1NTZhNGUw
YTBkMDE1ZTY3ZDg4ZWQ3MDk4NDJhZmE2ZGM0MjZhZS4uNTJjOWY5NDAyYzNhZWJjMzY2ZWI5YzNk
YTgyMGJhMzBkNzcyYjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIzMjQsNiArMjMyNCw5IEBA
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMo
KQogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyT3JpZ2luU3RvcmFn
ZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
ID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwogCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkID0gbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKKyNlbmRpZgogICAgIHBsYXRmb3JtU2V0TmV0d29ya1Bh
cmFtZXRlcnMocGFyYW1ldGVycyk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMjY2ZjkxZjc1ZDA0
M2E4MmZjZWQxYTljZGIzMWIzYzZkZGM4Mjg5Li4yNjhjMjhlZGIxNGNjYjY0Mzc2YzIxYzBlZDUw
ZTNiYTExZjc0NTYzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMTEgIFRha2FzaGkgS29tb3JpICA8VGFr
YXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBmdW5jdGlv
bnMgdG8gdXNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGFyZSBy
ZXF1aXJlZCB0byBpbXBsZW1lbnQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBmb3IgQ3VybCBwb3J0
LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6R2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQ6OkdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0KToKKyAgICAgICAgKFdUUjo6Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyk6CisKIDIwMjAtMDYtMTAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjI1
OTc3MApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA3OGQw
Nzk4NzE0OWVkNTBlOGU4MWYwNDRkYjA1MzAxZDBjOGJlYTI0Li4yNTNjNmJiNDczMDU2ZjhkZTMy
NTlhMjVhZDNiMDQzOGFlMWQyNzI3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcApAQCAtMzE2OCw4ICszMTY4LDQ3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiB9CiAKK3N0cnVjdCBHZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCB7CisgICAgR2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgaGFuZGxlcikKKyAgICAgICAgOiB0
ZXN0Q29udHJvbGxlcihjb250cm9sbGVyKQorICAgICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaGFuZGxlcikpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0
Q29udHJvbGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworfTsKKwordm9p
ZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKHZvaWQqIHVzZXJEYXRhLCBXS0Fy
cmF5UmVmIGRvbWFpbkxpc3QpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PEdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEpOworCisg
ICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0RG9tYWluczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IFdLQXJyYXlHZXRTaXplKGRvbWFpbkxpc3QpOyBpKyspIHsKKyAgICAgICAgYXV0byBkb21haW4g
PSAgcmVpbnRlcnByZXRfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGRv
bWFpbkxpc3QsIGkpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OnZlY3RvcjxjaGFyPihX
S1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZG9tYWluKSk7CisgICAgICAgIGF1dG8g
c3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhkb21haW4sIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgICAgIHJlc3VsdERvbWFpbnMuYXBwZW5kKFN0cmlu
Zzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSwgc3RyaW5nTGVuZ3RoIC0gMSkpOworICAgIH0KKwor
ICAgIGlmIChjb250ZXh0LT5jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29udGV4dC0+Y29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHREb21haW5zKSk7CisKKyAgICBjb250ZXh0LT5k
b25lID0gdHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKIHsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUocGxhdGZv
cm1Db250ZXh0KCkpOworICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250
ZXh0IGNvbnRleHQoKnRoaXMsIFt0aGlzXSAoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKSB7Cisg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICB9KTsKKworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKGRhdGFTdG9yZSwgbV9tYWluV2ViVmlldy0+cGFn
ZSgpLCAmY29udGV4dCwgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFjayk7CisgICAg
cnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCiBzdHJ1Y3QgTG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnNDYWxsYmFja0NvbnRleHQgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzMjhmNThjZjY5MThjM2Vj
Mzc0ZjY3YjhhMTA5YTlmMzJlOGM0MGIuLjgxYTU2YTQ3NWE0ZjU5N2EyYTNjYzEyN2NlZmRlMzM1
NmFjNTNhYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNi0xMSAgVGFrYXNoaSBLb21v
cmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gSW1wbGVtZW50
IGZ1bmN0aW9ucyB0byB1c2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzY5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbnMgd2hp
Y2ggYXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGZvciBD
dXJsIHBvcnQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy8KKworICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvLXdrMS9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAt
MDYtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFhIUiByZXF1ZXN0IHdpdGggc2FtZSBVUkwgYXMgbWFpbiByZXNvdXJjZSB3aWxs
IGhpZGUgdGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8td2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjODc5ZDNjMzE1NzAzYTRh
OGMzMTY0OTNlYzQxYWEwYzU2NzIyNDhlLi5lYmIyYjU4YmYyNDA5OGU1ZmJkOGI1ZWRiMTA4YTI1
YmJlNzkxNDBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby13azEv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby13azEv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzA5LDMgKzMwOSw2IEBAIHdlYmtpdC5vcmcvYi8xOTE0OTgg
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9nZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUuaHRt
bCBbCiAKICMgU2tpcCBJc0xvZ2dlZEluCiBodHRwL3Rlc3RzL2lzLWxvZ2dlZC1pbi8gWyBTa2lw
IF0KKworIyBTa2lwIFJlc291cmNlTG9hZFN0YXRpc3RpY3MKK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2RlMjA4ZDgzZmY4ZTQyNjliODI0ZmIxODdiM2VkNDVm
MTRiNjA0ZS4uZjM1M2I2MDZmNzMyY2RlNzU3MDk1MDlmOWRhNGFlMTU1YTJlNDI1ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTc1
LDkgKzExNzUsMzcgQEAgaHR0cC90ZXN0cy9yZWZlcnJlci1wb2xpY3kvbm8tcmVmZXJyZXItd2hl
bi1kb3duZ3JhZGUvIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUt
dXJsL2Nyb3NzLW9yaWdpbi1odHRwLWh0dHAuaHRtbCBbIFNraXAgXSAKIGh0dHAvdGVzdHMvcmVm
ZXJyZXItcG9saWN5L3Vuc2FmZS11cmwvY3Jvc3Mtb3JpZ2luLWh0dHAuaHR0cHMuaHRtbCBbIFNr
aXAgXSAKIAotIyBBbGwgdGltaW5nIG91dAotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIFsgU2tpcCBdCisjIFJlc291cmNlTG9hZFN0YXRpc3RpY3MKK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2V4ZW1wdERvbWFpbnMgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1ibG9ja2luZy10by1yZWRpcmVjdC5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRl
bGV0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9u
LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2lu
Zy1pbi1yZWRpcmVjdC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvZG8tbm90LXJlbW92ZS1ibG9ja2luZy1pbi1yZWRpcmVjdC5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0
ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Ut
c2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0
bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9waW5nLXRvLXBy
ZXZhbGVudC1yZXNvdXJjZS1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGluZy10by1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbCBbIFNraXAg
XQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1z
YW1lLXNpdGUtc3RyaWN0Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9zdGFuZGFsb25lLXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRh
dGEtZGVsZXRpb24tZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0YW5kYWxvbmUtd2ViLWFwcGxpY2F0aW9uLWV4ZW1wdC1mcm9tLXdlYnNp
dGUtZGF0YS1kZWxldGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1p
bnRlcmFjdGlvbi1kYXRhYmFzZS5waHAgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLXByZXZhbGVudC13aXRo
LWludGVyYWN0aW9uLnBocCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZXBoZW1lcmFsLWRh
dGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctZXBoZW1lcmFsLmh0bWwgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
b24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVw
b3J0ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUtZGF0YWJhc2UuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24t
b25seS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGltZS5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1y
ZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBv
cnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgU2tpcCBdCiAKKyMgQWxsIHRp
bWluZyBvdXQKIGh0dHAvdGVzdHMvc2VjdXJpdHkgWyBTa2lwIF0KIGh0dHAvdGVzdHMvc2VjdXJp
dHkvNDAxLWxvZ291dC80MDEtbG9nb3V0LnBocCBbIFBhc3MgXQogaHR0cC90ZXN0cy9zZWN1cml0
eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401753</attachid>
            <date>2020-06-12 11:24:25 -0700</date>
            <delta_ts>2020-06-12 12:47:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207692-20200613032425.patch</filename>
            <type>text/plain</type>
            <size>35312</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDgzOTlkN2JlNzE0OTNj
OGEwOTFiMTM0Y2Q4OWJkNzg4MzE4ODZhOC4uN2RlM2UwODUxOGYyZmY0M2FjNzk0ZjJkYTk3NjYx
NzdmYWY4MDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA2LTEzICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJsXSBJ
bXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRG9uIE9sbXN0ZWFkLgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlv
bnMgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IGZvciBDdXJsIHBvcnQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy8KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVKYXJEQjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpz
ZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmFsbERvbWFpbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURP
TSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorCiAyMDIwLTA2LTEyICBUZXRzdWhhcnUg
T2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CiAKICAgICAgICAgRmlsZVJlYWRl
ci5lcnJvciBzaG91bGQgYmUgRE9NRXhjZXB0aW9uIG5vdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZWFhYWJlOTA0
OTBiZWE1Mjg0NjdlNDk3MmNjMGVjY2YxMDhkY2JlLi4yZTkzYzZhYjcwY2QwOGI0MjNkMTQ3MjVl
OGQxOTRmZTZkZjlkYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA2LTEzICBU
YWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFtDdXJs
XSBJbXBsZW1lbnQgZnVuY3Rpb25zIHRvIHVzZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjkyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRG9uIE9sbXN0ZWFkLgorCisgICAgICAgIEltcGxlbWVudCBmdW5j
dGlvbnMgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIGltcGxlbWVudCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIGZvciBDdXJsIHBvcnQuCisKKyAgICAgICAgSW4gTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
d2UgY2hlY2sgaWYgd2Ugc2hvdWxkIGJsb2NrIGNvb2tpZXMgYW5kIGJsb2NrIGlmIG5lZWRlZC4K
KworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLworCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0N1cmw6Ok5ldHdvcmtEYXRhVGFza0N1cmwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tDdXJsOjpjcmVhdGVDdXJsUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6YmxvY2tDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6dW5ibG9ja0Nvb2tpZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRCbG9ja0Nvb2tpZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjppc1RoaXJkUGFydHlSZXF1ZXN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKwogMjAyMC0wNi0xMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VzZXJTY3Jp
cHQgaW5pdGlhbGl6ZXIgU1BJIHdpdGggYWx0ZXJuYXRpdmUgbmFtZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNjM3MjAwOGE4Y2MxNmM4ODhjYThlYmNiMDQ1ZjhmZTEyNjY0M2I2Ny4uOTA5M2Jl
OWZlMTE4NjhhZmUxNDk3NjFmNDU3ZTUwMWVkZmRlYTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTY5Niw2ICs2OTYsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbAogICAgIGRvbS9Eb2N1bWVudEZ1bGxzY3JlZW4uaWRsCiAg
ICAgZG9tL0RvY3VtZW50T3JTaGFkb3dSb290LmlkbAorICAgIGRvbS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaWRsCiAgICAgZG9tL0RvY3VtZW50VG91Y2guaWRsCiAgICAgZG9tL0RvY3VtZW50VHlw
ZS5pZGwKICAgICBkb20vRHJhZ0V2ZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYjIyOTQ5Yjk4ZWMxY2U0
YWQ0YzEwYmYxOTRjMDRjYjE5MzExZDFkNy4uZGJjNDIzZjk0OTA3YTIwMDNlNDQ5NTdlZGExZDJm
MDAwMGVjMjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb29raWVKYXJEQi5oIgorI2luY2x1ZGUgImNvb2tpZUphci5oIgog
CiAjaW5jbHVkZSAiQ29va2llVXRpbC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTYzLDYg
KzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVY
SVNUUyBkb21haW5faW5kZXggT04gQ29va2llKGRvbWFpbik7IgogI2RlZmluZSBDUkVBVEVfUEFU
SF9JTkRFWF9TUUwgXAogICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNUUyBwYXRoX2luZGV4
IE9OIENvb2tpZShwYXRoKTsiCisjZGVmaW5lIFNFTEVDVF9BTExfRE9NQUlOU19TUUwgXAorICAg
ICJTRUxFQ1QgRElTVElOQ1QgZG9tYWluIEZST00gQ29va2llOyIKICNkZWZpbmUgQ0hFQ0tfRVhJ
U1RTX0NPT0tJRV9TUUwgXAogICAgICJTRUxFQ1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgo
ZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKTsiCiAjZGVmaW5lIENIRUNLX0VYSVNUU19I
VFRQT05MWV9DT09LSUVfU1FMIFwKQEAgLTc2LDYgKzc5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUgPSA/IEFORCBkb21haW4gPSA/
OyIKICNkZWZpbmUgREVMRVRFX0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwgXAogICAgICJERUxFVEUg
RlJPTSBDb29raWUgV0hFUkUgc2Vzc2lvbiA9IDE7IgorI2RlZmluZSBERUxFVEVfQ09PS0lFU19C
WV9ET01BSU5fU1FMIFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFpbiA9ID8g
OyIKKyNkZWZpbmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQVF9IVFRQX09OTFlfU1FM
IFwKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIChkb21haW4gPSA/KSBBTkQgKGh0dHBv
bmx5ID0gMCk7IgogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9TUUwgXAogICAgICJERUxFVEUg
RlJPTSBDb29raWU7IgogCkBAIC0xNjUsNiArMTcyLDggQEAgYm9vbCBDb29raWVKYXJEQjo6b3Bl
bkRhdGFiYXNlKCkKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KENIRUNLX0VYSVNUU19IVFRQ
T05MWV9DT09LSUVfU1FMKTsKICAgICBjcmVhdGVQcmVwYXJlU3RhdGVtZW50KERFTEVURV9DT09L
SUVfQllfTkFNRV9ET01BSU5fUEFUSF9TUUwpOwogICAgIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQo
REVMRVRFX0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwpOworICAgIGNyZWF0ZVByZXBhcmVTdGF0
ZW1lbnQoREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX1NRTCk7CisgICAgY3JlYXRlUHJlcGFyZVN0
YXRlbWVudChERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9TUUwpOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjksNyArNTM4LDcgQEAgYm9vbCBDb29raWVKYXJE
Qjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogICAgIHJldHVybiBjaGVja1NRTGl0
ZVJldHVybkNvZGUoc3RhdGVtZW50LnN0ZXAoKSk7CiB9CiAKLWJvb2wgQ29va2llSmFyREI6OnNl
dENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGJvZHksIENvb2tpZUphckRCOjpTb3VyY2Ugc291cmNlKQorYm9vbCBDb29raWVKYXJEQjo6
c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgYm9keSwgQ29va2llSmFyREI6OlNvdXJjZSBzb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+
IGNhcHBlZExpZmV0aW1lKQogewogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU1MCw5ICs1NTksMzEgQEAgYm9v
bCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbkFjY2VwdENvb2tpZSgqY29va2llLCBm
aXJzdFBhcnR5LCB1cmwsIHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlm
IChjYXBwZWRMaWZldGltZSAmJiBjb29raWUtPmV4cGlyZXMpIHsKKyAgICAgICAgQVNTRVJUKCpj
YXBwZWRMaWZldGltZSA+PSAwX3MpOworICAgICAgICBhdXRvIGNhcHBlZEV4cGlyZXMgPSBXYWxs
VGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7CisgICAgICAgIGlmIChjYXBwZWRFeHBpcmVz
IDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpjb29raWUtPmV4cGlyZXMgLyBXVEY6Om1zUGVy
U2Vjb25kKSkKKyAgICAgICAgICAgIGNvb2tpZS0+ZXhwaXJlcyA9IGNhcHBlZEV4cGlyZXMuc2Vj
b25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKTsKKyAgICB9CisKICAgICByZXR1cm4gc2V0
Q29va2llKCpjb29raWUpOwogfQogCitIYXNoU2V0PFN0cmluZz4gQ29va2llSmFyREI6OmFsbERv
bWFpbnMoKQoreworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgU0VM
RUNUX0FMTF9ET01BSU5TX1NRTCk7CisgICAgc3RhdGVtZW50LnByZXBhcmUoKTsKKworICAgIEhh
c2hTZXQ8U3RyaW5nPiBkb21haW5zOworICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNR
TElURV9ST1cpIHsKKyAgICAgICAgYXV0byBkb21haW4gPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgwKTsKKyAgICAgICAgZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICB9CisKKyAgICBzdGF0ZW1l
bnQuZmluYWxpemUoKTsKKyAgICByZXR1cm4gZG9tYWluczsKK30KKwogYm9vbCBDb29raWVKYXJE
Qjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTU4OSw2
ICs2MjAsMTMgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llcyhjb25zdCBTdHJpbmcm
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEluY2x1ZGVIdHRwT25seUNvb2tp
ZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKK3sKKyAgICBhdXRvJiBzdGF0ZW1lbnQgPSBwcmVw
YXJlZFN0YXRlbWVudChpbmNsdWRlSHR0cE9ubHlDb29raWVzID09IEluY2x1ZGVIdHRwT25seUNv
b2tpZXM6OlllcyA/IERFTEVURV9DT09LSUVTX0JZX0RPTUFJTl9TUUwgOiBERUxFVEVfQ09PS0lF
U19CWV9ET01BSU5fRVhDRVBUX0hUVFBfT05MWV9TUUwpOworICAgIHN0YXRlbWVudC5iaW5kVGV4
dCgxLCBob3N0bmFtZSk7CisgICAgcmV0dXJuIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1l
bnQuc3RlcCgpKTsKK30KKwogYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiB7
CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXgg
MTEyZjYzMjEyOGIxYWE3MmI0NjM5YjYyYTNlYjVhNzllMzdjNWY4MC4uN2MwZWE0N2VjZTRmZjBk
NDcyY2U1OTVjOTFlYTFjZmE5MGIyNWNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTYsMTMgKzU3LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSB7IG1fYWNj
ZXB0UG9saWN5ID0gcG9saWN5OyB9CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGFjY2VwdFBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXB0UG9saWN5OyB9CiAKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gYWxsRG9tYWlucygpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBjb25zdCBP
cHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNv
bnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBnZXRBbGxD
b29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlKTsKKyAgICBib29sIHNldENvb2tp
ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
LCBTb3VyY2UsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lID0gV1RGOjpudWxsb3B0
KTsKICAgICBib29sIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKIAogICAgIGJvb2wgZGVsZXRl
Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wg
ZGVsZXRlQ29va2llcyhjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgSW5jbHVkZUh0dHBPbmx5Q29va2ll
cyk7CiAgICAgYm9vbCBkZWxldGVBbGxDb29raWVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBD
b29raWVKYXJEQihjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggYWQzZDEzOTcwYjNjNzJkNjBiZjU1OTA0YmU2NGU2NmIx
MDQ5ODNhOS4uMTJiZDI2ZDIwYmUwMDA0NmM1ODhhOWEzYTAzZGI0YzIyMTI3Mjc5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtOTUsOSArOTUsMTQgQEAgQ29va2ll
SmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAg
IHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAordm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
ZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3QKIHsKLSAgICBjb29r
aWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJE
Qjo6U291cmNlOjpTY3JpcHQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBjbGllbnRTaWRlQ29va2ll
Q2FwKFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eSB9LCBwYWdlSUQpOworI2Vsc2UKKyAg
ICBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdDsKKyNlbmRp
ZgorICAgIGNvb2tpZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUs
IENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCwgY2FwcGVkTGlmZXRpbWUpOwogfQogCiB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKQEAgLTEzMyw5ICsxMzgsMTAgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1
cm4geyBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZh
bHNlIH07CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0
IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1lbnRV
UkwgKi8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0
b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiwgY29uc3QgVVJMJiAvKiBtYWluRG9jdW1l
bnRVUkwgKi8pCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4K
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGNvb2tpZURh
dGFiYXNlKCkuc2V0Q29va2llKGNvb2tpZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCkBAIC0xNjQsOSArMTcwLDEwIEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShXYWxsVGltZSkKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgLyogY29va2llSG9zdE5hbWVzICovLCBJbmNsdWRlSHR0cE9ubHlDb29r
aWVzKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5
Q29va2llcyBpbmNsdWRlSHR0cE9ubHlDb29raWVzKQogewotICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkLgorICAgIGZvciAoYXV0byBob3N0bmFtZSA6IGNvb2tpZUhvc3ROYW1lcykK
KyAgICAgICAgY29va2llRGF0YWJhc2UoKS5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5h
bWUsIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29v
a2llSG9zdE5hbWVzKQpAQCAtMTc5LDkgKzE4Niw5IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0QWxsQ29va2llcygpCiAgICAgcmV0dXJuIGNvb2tpZURhdGFiYXNl
KCkuZ2V0QWxsQ29va2llcygpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiAvKiBob3N0bmFtZXMgKi8pCit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKKyAgICBob3N0bmFtZXMgPSBjb29raWVEYXRhYmFzZSgpLmFsbERvbWFpbnMoKTsKIH0KIAog
VmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVS
TCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKaW5kZXggODAxM2FjNmQ2NTI1ZTkyYzU3YmExMjA1NWEyOTJkNDFkY2Y3NzgxZi4uZmJhODZk
YTRjMTM0Mzc2NDM0NDMwZWM4YTY0MTg0YTE2MDNjZjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNjAsNyArNjAsNyBAQCBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdAogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpj
cmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLmNv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9u
KTsKICNlbmRpZgogI2lmIFVTRShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tDdXJs
OjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWlu
RnJhbWVOYXZpZ2F0aW9uKTsKKyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3JlYXRl
KHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbiwgcGFy
YW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDQ0ZTk0NmI5ZGJkYTUyNDEwMDVkNTM0YjkxYWY3MTFj
MWQ5N2ZmNTIuLjAwZTFhOTcxYjFiMWU3YjkxOGJjZGU2ZDI4Nzk0ZmJmYWI5MWQ5MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKQEAgLTQ0LDggKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya0RhdGFUYXNrQ3VybDo6TmV0d29ya0Rh
dGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENvbnRlbnRT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCitOZXR3b3JrRGF0YVRhc2tDdXJs
OjpOZXR3b3JrRGF0YVRhc2tDdXJsKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0
YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENy
ZWRlbnRpYWxzLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXImIHBhZ2VJ
RCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIENvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIENvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
KQorICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCisgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisgICAg
LCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKQogewogICAgIGlmIChtX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9
IE5vRmFpbHVyZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjcsNiArNzAsMTIgQEAgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6TmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUYXMKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0KSkKKyAg
ICAgICAgYmxvY2tDb29raWVzKCk7CisjZW5kaWYKKyAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJl
clRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7CisKICAgICBtX2N1cmxSZXF1ZXN0ID0gY3JlYXRl
Q3VybFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgaWYgKCFtX2luaXRpYWxDcmVkZW50
aWFsLmlzRW1wdHkoKSkgewogICAgICAgICBtX2N1cmxSZXF1ZXN0LT5zZXRVc2VyUGFzcyhtX2lu
aXRpYWxDcmVkZW50aWFsLnVzZXIoKSwgbV9pbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpKTsK
QEAgLTEyNCw3ICsxMzMsNyBAQCBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlIE5ldHdvcmtEYXRhVGFz
a0N1cmw6OnN0YXRlKCkgY29uc3QKIAogUmVmPEN1cmxSZXF1ZXN0PiBOZXR3b3JrRGF0YVRhc2tD
dXJsOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXF1ZXN0
U3RhdHVzIHN0YXR1cykKIHsKLSAgICBpZiAoc3RhdHVzID09IFJlcXVlc3RTdGF0dXM6Ok5ld1Jl
cXVlc3QpCisgICAgaWYgKHN0YXR1cyA9PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0ICYmICFt
X2Jsb2NraW5nQ29va2llcykKICAgICAgICAgYXBwZW5kQ29va2llSGVhZGVyKHJlcXVlc3QpOwog
CiAgICAgLy8gQ3JlYXRlcyBhIEN1cmxSZXF1ZXN0IGluIHN1c3BlbmRlZCBzdGF0ZS4KQEAgLTI5
Niw2ICszMDUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUQ1MpCisgICAgaWYgKCFtX2Jsb2NraW5nQ29va2llcyAmJiBzaG91bGRCbG9ja0Nv
b2tpZXMocmVxdWVzdCkpCisgICAgICAgIGJsb2NrQ29va2llcygpOworI2VuZGlmCiAgICAgYXV0
byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSk7CiAgICAgbV9jbGllbnQt
PndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkaWRDaGFuZ2VD
cmVkZW50aWFsLCBpc0Nyb3NzT3JpZ2luXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6Q2FuY2VsaW5nKQpAQCAtMzA4LDYgKzMyMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oKQogICAgICAgICAgICAgbV9zdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICBhdXRvIHJlcXVlc3RDb3B5ID0gbmV3
UmVxdWVzdDsKKyAgICAgICAgcmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09yaWdpbklmTmVlZGVk
KHJlcXVlc3RDb3B5KTsKICAgICAgICAgbV9jdXJsUmVxdWVzdCA9IGNyZWF0ZUN1cmxSZXF1ZXN0
KFdURk1vdmUocmVxdWVzdENvcHkpKTsKICAgICAgICAgaWYgKGRpZENoYW5nZUNyZWRlbnRpYWwg
JiYgIW1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2N1cmxS
ZXF1ZXN0LT5zZXRVc2VyUGFzcyhtX2luaXRpYWxDcmVkZW50aWFsLnVzZXIoKSwgbV9pbml0aWFs
Q3JlZGVudGlhbC5wYXNzd29yZCgpKTsKQEAgLTQ2Myw0ICs0NzcsMzcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpoYW5kbGVDb29raWVIZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmUKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6YmxvY2tD
b29raWVzKCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIG1f
YmxvY2tpbmdDb29raWVzID0gdHJ1ZTsKKyNlbmRpZgorfQorCit2b2lkIE5ldHdvcmtEYXRhVGFz
a0N1cmw6OnVuYmxvY2tDb29raWVzKCkKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIG1fYmxvY2tpbmdDb29raWVzID0gZmFsc2U7CisjZW5kaWYKK30KKworYm9v
bCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3N0b3JlZENyZWRlbnRp
YWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxT
dGF0ZWxlc3M7CisKKyAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcyAmJiBtX3Nlc3Npb24tPm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3Nl
c3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVz
dCwgbV9mcmFtZUlELCBtX3BhZ2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZyk7CisKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBOZXR3b3JrRGF0YVRhc2tD
dXJsOjppc1RoaXJkUGFydHlSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyAgICByZXR1cm4gIVdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0Vx
dWFsKHJlcXVlc3QudXJsKCksIHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggNTJkMDg1YjQ0YzE3ZTYw
ZjYxMzNmYmEwZTBjZDY5MzNlZTNhZjI1NS4uMDRmMDgxYWRkOTI1M2YyMjk2YzAyNmQ5NTQ4Zjli
OWE5N2M2NDRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC0yNyw4ICsyNywxMSBAQAogCiAjaW5jbHVk
ZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsUmVxdWVzdENsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdDsKQEAgLTM4LDkgKzQxLDkgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0N1cmwgZmluYWwgOiBwdWJsaWMgTmV0
d29ya0RhdGFUYXNrLCBwdWJsaWMgV2ViQ29yZTo6Q3VybFJlcXVlc3RDbGllbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
KQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVO
YXZpZ2F0aW9uLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0N1cmwoc2Vzc2lvbiwgY2xpZW50LCByZXF1
ZXN0LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ3VybChzZXNzaW9uLCBjbGllbnQsIHJlcXVl
c3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRl
bnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBz
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpOwogICAgIH0KIAogICAgIH5OZXR3
b3JrRGF0YVRhc2tDdXJsKCk7CkBAIC01NCw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJl
dXNlZFJlcXVlc3QKICAgICB9OwogCi0gICAgTmV0d29ya0RhdGFUYXNrQ3VybChOZXR3b3JrU2Vz
c2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBi
b29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pOworICAgIE5ldHdvcmtEYXRhVGFza0N1cmwoTmV0
d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0
YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nKTsKIAogICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXN1bWUoKSBvdmVycmlkZTsKQEAgLTgyLDYgKzg1LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhcHBlbmRDb29raWVIZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dm9pZCBoYW5kbGVDb29raWVIZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OkN1cmxSZXNwb25zZSYpOwogCisgICAgYm9vbCBpc1RoaXJkUGFydHlS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
YmxvY2tDb29raWVzKCk7CisgICAgdm9pZCB1bmJsb2NrQ29va2llcygpOworCiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpDdXJs
UmVxdWVzdD4gbV9jdXJsUmVxdWVzdDsKQEAgLTg5LDYgKzk3LDEzIEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fYXV0aEZhaWx1
cmVDb3VudCB7IDAgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOworCisgICAgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIG1fZnJhbWVJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKKworICAgIGJvb2wgbV9ibG9ja2luZ0Nvb2tpZXMgeyBmYWxzZSB9Owor
CisgICAgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgbV9zaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuY3BwCmluZGV4IGJjMjg4M2FlMTNlNWIwMjkzYzUxNjg3NTljNTg1YzNkNGQ2
YzRmYjQuLmNmNmViNGQ3MjQwMTA5YzVmNTg5ZTBkM2U1ZDAyMjVlYjFjMzQ5MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lv
bkN1cmwuY3BwCkBAIC00Myw2ICs0MywxNCBAQCBOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtT
ZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZQogICAg
IGlmICghcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQog
ICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2V0Q29va2llRGF0YWJhc2UobWFrZVVu
aXF1ZVJlZjxDb29raWVKYXJEQj4ocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZp
bGUpKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2V0UHJveHlTZXR0aW5ncyhXVEZN
b3ZlKHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncykpOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeTsKKyAg
ICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBwYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2Nh
bGhvc3QgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0OjpObzsKKyAgICBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJsZURlYnVnTW9k
ZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vOworICAgIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5tYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmVuYWJsZWQpOworI2VuZGlmCiB9CiAKIE5ldHdvcmtTZXNzaW9uQ3VybDo6
fk5ldHdvcmtTZXNzaW9uQ3VybCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBiNWE1ZjA0NDZlN2JiNjEy
NDQ1ZGVkMDY0OWIwNjhjOWM5NjI3NzFmLi5iZTUwMzA3OTc0MDJkMDBiYTBlMGJjMzcxZTUyYzhj
MWQ0N2IxY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJX
S1NlY3VyaXR5T3JpZ2luUmVmLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCIKQEAgLTgxOSwzICs4MjAsMTggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVD
bGVhckJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKFdLV2Vic2l0ZURhdGFTdG9yZVIK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24gY2Fs
bGJhY2spCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh0b0lt
cGwocGFnZVJlZiktPmlkZW50aWZpZXIoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoVmVjdG9yPFN0
cmluZz4mJiBkb21haW5zKSB7CisgICAgICAgIGF1dG8gZG9tYWluQXJyYXlSZWYgPSBXS011dGFi
bGVBcnJheUNyZWF0ZSgpOworICAgICAgICBmb3IgKGF1dG8gZG9tYWluIDogZG9tYWlucykKKyAg
ICAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGRvbWFpbkFycmF5UmVmLCBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFpbi51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOwor
CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQsIGRvbWFpbkFycmF5UmVmKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY2FsbGJhY2soY29udGV4dCwgV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisjZW5k
aWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmgKaW5kZXggNzg3ODcyYWUyN2Y4YTNiNGQyMmE3ZTU5MmM4ZjVhMWY5YTg1
OTBjYS4uNmEwY2NkODdjNjgyNjBmMTg0YmYwYTE2MDQ3OWJkYWYzYjRiN2FhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKQEAgLTE2Miw2ICsxNjIsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVH
ZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZQogCiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEpIFdLX0NfQVBJX0RF
UFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
U2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKTsKIAordHlwZWRlZiB2b2lkKCpXS1dlYnNpdGVEYXRh
U3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Z1bmN0aW9uKSh2b2lkKiBjb250ZXh0LCBX
S0FycmF5UmVmIGRvbWFpbnMpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRnVuY3Rpb24gY2FsbGJhY2spOworCiBXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lv
bnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CiAKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggMGY1NTZhNGUwYTBkMDE1ZTY3ZDg4ZWQ3MDk4NDJhZmE2ZGM0MjZhZS4uNTJjOWY5
NDAyYzNhZWJjMzY2ZWI5YzNkYTgyMGJhMzBkNzcyYjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTIzMjQsNiArMjMyNCw5IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3Rh
ID0gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwog
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5l
bmFibGVkID0gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKKyNlbmRpZgogICAgIHBs
YXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlNWRlMzQ2Njk3NDMzMGNjYjhmZDgxZjU4YzQxMjU3NzVkY2FkODUzLi5hZWYxYTY1M2E5
MTU1YjM5NmI5YjU1Y2YxYmVjYWFhM2Q4NWU0Y2RhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMTMgIFRh
a2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxd
IEltcGxlbWVudCBmdW5jdGlvbnMgdG8gdXNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEb24gT2xtc3RlYWQuCisKKyAgICAgICAgSW1wbGVtZW50IGZ1bmN0
aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZm9yIEN1cmwgcG9ydC4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLworCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OkdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tD
b250ZXh0OjpHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCk6CisgICAg
ICAgIChXVFI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2spOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMpOgorCiAyMDIw
LTA2LTEyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2Mjk0Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjc1MzM0ODkyMGJhZTdiMmU2Y2FkOWNkZjY0M2EyZGQ5
NjcyNTNlMi4uOTA4ZWU3YzY5MWNhYjA2NDgyZjYxODJiNjVkMzFjNTI0YmI5ZjIzZiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMxNjgsOCArMzE2OCw0
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQog
ewogfQogCitzdHJ1Y3QgR2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0NvbnRleHQg
eworICAgIEdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250
cm9sbGVyJiBjb250cm9sbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGhhbmRsZXIpCisgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikKKyAg
ICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQorICAgIHsKKyAgICB9
CisKKyAgICBUZXN0Q29udHJvbGxlciYgdGVzdENvbnRyb2xsZXI7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgYm9v
bCBkb25lIHsgZmFsc2UgfTsKK307CisKK3ZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFjayh2b2lkKiB1c2VyRGF0YSwgV0tBcnJheVJlZiBkb21haW5MaXN0KQoreworICAgIGF1
dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxi
YWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdERvbWFp
bnM7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXS0FycmF5R2V0U2l6ZShkb21haW5MaXN0KTsg
aSsrKSB7CisgICAgICAgIGF1dG8gZG9tYWluID0gIHJlaW50ZXJwcmV0X2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChkb21haW5MaXN0LCBpKSk7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gc3RkOjp2ZWN0b3I8Y2hhcj4oV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGRvbWFpbikpOworICAgICAgICBhdXRvIHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRG
OENTdHJpbmcoZG9tYWluLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKworICAgICAg
ICByZXN1bHREb21haW5zLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHN0
cmluZ0xlbmd0aCAtIDEpKTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Y29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIGNvbnRleHQtPmNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
RG9tYWlucykpOworCisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiB7CisgICAgYXV0byBkYXRhU3RvcmUgPSBXS0NvbnRl
eHRHZXRXZWJzaXRlRGF0YVN0b3JlKHBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBHZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzLCBbdGhpc10gKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucykgeworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV1RGTW92ZShkb21haW5zKSk7CisgICAg
fSk7CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVHZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhk
YXRhU3RvcmUsIG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJmNvbnRleHQsIGdldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzQ2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1l
b3V0KTsKIH0KIAogc3RydWN0IExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tDb250ZXh0
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlODRlZTZmNmI3NGE5MWUwZmJhY2E0MGMxMjEwMDU3YmE1MWQ3NTAzLi40ZmNm
MzAzZGQ5ZjNhMzQ0N2RjN2EzOTBhZWU3ZjJhZGQwOTQ4MmVlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjAtMDYtMTMgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+
CisKKyAgICAgICAgW0N1cmxdIEltcGxlbWVudCBmdW5jdGlvbnMgdG8gdXNlIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBEb24gT2xtc3RlYWQuCisKKyAgICAg
ICAgSW1wbGVtZW50IGZ1bmN0aW9ucyB3aGljaCBhcmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MgZm9yIEN1cmwgcG9ydC4KKworICAgICAgICBUZXN0czogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLworCisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8td2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8v
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNi0xMiAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5j
ZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiAocjI2MjM5Nyk6IFsgTWFjIHdr
MiBdIGluc3BlY3Rvci9jYW52YXMvY3JlYXRlLWNvbnRleHQtd2ViZ3B1Lmh0bWwgaXMgZmxha3kg
ZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvLXdrMS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8td2sxL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggYzg3OWQzYzMxNTcwM2E0YThjMzE2NDkzZWM0MWFhMGM1NjcyMjQ4
ZS4uZWJiMmI1OGJmMjQwOThlNWZiZDhiNWVkYjEwOGEyNWJiZTc5MTQwYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8td2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8td2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMw
OSwzICszMDksNiBAQCB3ZWJraXQub3JnL2IvMTkxNDk4IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvZ2V0U2VyaWFsaXplZENlcnRpZmljYXRlLmh0bWwgWwogCiAjIFNraXAgSXNMb2dnZWRJ
bgogaHR0cC90ZXN0cy9pcy1sb2dnZWQtaW4vIFsgU2tpcCBdCisKKyMgU2tpcCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGJjOTc5ZjA2ZTcyMjYxZGZiMWYzMjI5MTRlM2Y3YWY3YWY0NjU2MzEuLjA4NGYwNzVhNWEyMjVi
OTdhMDlmYzQwMmE0MWZiM2JkNmJkY2RlMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE3NSw5ICsxMTc1LDM3IEBAIGh0dHAvdGVz
dHMvcmVmZXJyZXItcG9saWN5L25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlLyBbIFNraXAgXQog
aHR0cC90ZXN0cy9yZWZlcnJlci1wb2xpY3kvdW5zYWZlLXVybC9jcm9zcy1vcmlnaW4taHR0cC1o
dHRwLmh0bWwgWyBTa2lwIF0gCiBodHRwL3Rlc3RzL3JlZmVycmVyLXBvbGljeS91bnNhZmUtdXJs
L2Nyb3NzLW9yaWdpbi1odHRwLmh0dHBzLmh0bWwgWyBTa2lwIF0gCiAKLSMgQWxsIHRpbWluZyBv
dXQKLWh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFNraXAgXQorIyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBQYXNz
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9leGVtcHREb21haW5zIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvYWRkLWJsb2NraW5nLXRvLXJl
ZGlyZWN0LWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9hZGQtYmxvY2tpbmctdG8tcmVkaXJlY3QuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1kZWxldGlvbi1kYXRhYmFzZS5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9u
Lmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWVz
LXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llcy13aXRoLWFuZC13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2RvLW5vdC1yZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QtZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2RvLW5vdC1y
ZW1vdmUtYmxvY2tpbmctaW4tcmVkaXJlY3QuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmljdC1iYXNlZC1v
bi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcGluZy10by1wcmV2YWxlbnQtcmVzb3VyY2UtZGF0YWJh
c2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bpbmct
dG8tcHJldmFsZW50LXJlc291cmNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RhbmRhbG9uZS13ZWIt
YXBwbGljYXRpb24tZXhlbXB0LWZyb20td2Vic2l0ZS1kYXRhLWRlbGV0aW9uLWRhdGFiYXNlLmh0
bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdGFuZGFsb25l
LXdlYi1hcHBsaWNhdGlvbi1leGVtcHQtZnJvbS13ZWJzaXRlLWRhdGEtZGVsZXRpb24uaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N3aXRjaC1zZXNzaW9u
LW9uLW5hdmlnYXRpb24tdG8tcHJldmFsZW50LXdpdGgtaW50ZXJhY3Rpb24tZGF0YWJhc2UucGhw
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1wcmV2YWxlbnQtd2l0aC1pbnRlcmFjdGlvbi5waHAgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlv
bi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLWVwaGVtZXJhbC1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2Nr
aW5nLWVwaGVtZXJhbC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1p
bnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQt
dXNlci1pbnRlcmFjdGlvbi5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1vbmx5LXJlcG9ydGVkLW9uY2Utd2l0aGluLXNob3J0
LXBlcmlvZC1vZi10aW1lLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRo
aW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1k
YXRhLXJlbW92YWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1kYXRh
LXJlbW92YWwuaHRtbCBbIFNraXAgXQogCisjIEFsbCB0aW1pbmcgb3V0CiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5LzQwMS1sb2dvdXQvNDAxLWxvZ291
dC5waHAgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1j
b29raWUtYmxvY2tpbmcuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>