<?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>200567</bug_id>
          
          <creation_ts>2019-08-09 03:09:23 -0700</creation_ts>
          <short_desc>Blob registries should be keyed by session IDs</short_desc>
          <delta_ts>2019-08-20 11:55:56 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=199320</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>200571</dependson>
    
    <dependson>200572</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559840</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 03:09:23 -0700</bug_when>
    <thetext>Blob registries should be keyed by session IDs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559842</commentid>
    <comment_count>1</comment_count>
      <attachid>375903</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 03:17:55 -0700</bug_when>
    <thetext>Created attachment 375903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559845</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 04:05:05 -0700</bug_when>
    <thetext>Plan is to split the patch in smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559846</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-09 04:05:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/54120212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559902</commentid>
    <comment_count>4</comment_count>
      <attachid>375903</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-09 09:08:24 -0700</bug_when>
    <thetext>Comment on attachment 375903
Patch

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

This looks great!  Not sure about the media change in the middle though.  And it needs to pass all the tests.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:-1597
&gt; -#if ENABLE(MEDIA_STREAM)

This change needs an explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559913</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 09:32:12 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 375903 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375903&amp;action=review
&gt; 
&gt; This looks great!  Not sure about the media change in the middle though. 
&gt; And it needs to pass all the tests.

Sure, I am splitting the patch in smaller pieces so that this is more reviewable.
Ultimately, this patch should be reduced to NetworkProcess related code.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:-1597
&gt; &gt; -#if ENABLE(MEDIA_STREAM)
&gt; 
&gt; This change needs an explanation.

This is handled as part of bug 200570.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559951</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-09 11:17:18 -0700</bug_when>
    <thetext>Also, I think we should make the NetworkSession own a BlobRegistryImpl rather than having another map with SessionID as the key.  We can do that after the big switch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559996</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-09 13:42:11 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Also, I think we should make the NetworkSession own a BlobRegistryImpl
&gt; rather than having another map with SessionID as the key.  We can do that
&gt; after the big switch, though.

Yep, this is in the patch.
We should do that for other maps, like IDB and SW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560382</commentid>
    <comment_count>8</comment_count>
      <attachid>376056</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 05:48:57 -0700</bug_when>
    <thetext>Created attachment 376056
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560384</commentid>
    <comment_count>9</comment_count>
      <attachid>376057</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 06:10:33 -0700</bug_when>
    <thetext>Created attachment 376057
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560386</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-12 06:12:00 -0700</bug_when>
    <thetext>Attachment 376057 did not pass style-queue:


ERROR: Source/WebCore/platform/network/BlobRegistry.h:71:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560390</commentid>
    <comment_count>11</comment_count>
      <attachid>376061</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 07:24:42 -0700</bug_when>
    <thetext>Created attachment 376061
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560391</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-12 07:27:14 -0700</bug_when>
    <thetext>Attachment 376061 did not pass style-queue:


ERROR: Source/WebCore/platform/network/BlobRegistry.h:71:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560394</commentid>
    <comment_count>13</comment_count>
      <attachid>376063</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 08:10:04 -0700</bug_when>
    <thetext>Created attachment 376063
GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560396</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-12 08:13:20 -0700</bug_when>
    <thetext>Attachment 376063 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/ResourceRequest.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:71:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560423</commentid>
    <comment_count>15</comment_count>
      <attachid>376069</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-12 09:29:52 -0700</bug_when>
    <thetext>Created attachment 376069
Win fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560426</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-12 09:32:31 -0700</bug_when>
    <thetext>Attachment 376069 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/ResourceRequest.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:71:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560538</commentid>
    <comment_count>17</comment_count>
      <attachid>376069</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-12 13:33:01 -0700</bug_when>
    <thetext>Comment on attachment 376069
Win fix

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

&gt; Source/WebKitLegacy/win/WebCoreSupport/WebPlatformStrategies.cpp:81
&gt; -    return new BlobRegistryImpl;
&gt; +    return new WebBlobRegistry;

r=me
We should look into the uses of isBlobRegistryImpl and see if they&apos;re still needed, now that the networking is all done in the network process in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560719</commentid>
    <comment_count>18</comment_count>
      <attachid>376142</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-13 00:38:59 -0700</bug_when>
    <thetext>Created attachment 376142
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560720</commentid>
    <comment_count>19</comment_count>
      <attachid>376143</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-13 00:49:13 -0700</bug_when>
    <thetext>Created attachment 376143
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560721</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 00:51:14 -0700</bug_when>
    <thetext>Attachment 376143 did not pass style-queue:


ERROR: Source/WebCore/platform/network/soup/ResourceRequest.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/network/BlobRegistry.h:71:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560752</commentid>
    <comment_count>21</comment_count>
      <attachid>376143</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 03:06:23 -0700</bug_when>
    <thetext>Comment on attachment 376143
Patch for landing

Clearing flags on attachment: 376143

Committed r248593: &lt;https://trac.webkit.org/changeset/248593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560753</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 03:06:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560754</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-13 03:44:18 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #17)
&gt; Comment on attachment 376069 [details]
&gt; Win fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376069&amp;action=review
&gt; 
&gt; &gt; Source/WebKitLegacy/win/WebCoreSupport/WebPlatformStrategies.cpp:81
&gt; &gt; -    return new BlobRegistryImpl;
&gt; &gt; +    return new WebBlobRegistry;
&gt; 
&gt; r=me
&gt; We should look into the uses of isBlobRegistryImpl and see if they&apos;re still
&gt; needed, now that the networking is all done in the network process in
&gt; WebKit2.

I removed it from BlobRegistry but not fro BlobRegistryImpl.
Will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560759</commentid>
    <comment_count>24</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-13 04:15:12 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #23)
&gt; (In reply to Alex Christensen from comment #17)
&gt; &gt; Comment on attachment 376069 [details]
&gt; &gt; Win fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=376069&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKitLegacy/win/WebCoreSupport/WebPlatformStrategies.cpp:81
&gt; &gt; &gt; -    return new BlobRegistryImpl;
&gt; &gt; &gt; +    return new WebBlobRegistry;
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; We should look into the uses of isBlobRegistryImpl and see if they&apos;re still
&gt; &gt; needed, now that the networking is all done in the network process in
&gt; &gt; WebKit2.
&gt; 
&gt; I removed it from BlobRegistry but not fro BlobRegistryImpl.
&gt; Will fix it.

Actually, I also removed it in BlobRegistryImpl in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560879</commentid>
    <comment_count>25</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-08-13 11:43:46 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/248593/webkit

broke http/tests/workers/service/service-worker-cache-api.https.html

History:
http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fworkers%2Fservice%2Fservice-worker-cache-api.https.html

It is crashing on Debug builds and timing out on some release builds.

I was able to reproduce this locally by just running the test on debug against 248593 which crashed and 248592 which passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560961</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-13 14:27:19 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #25)
&gt; It looks like the changes in https://trac.webkit.org/changeset/248593/webkit
&gt; 
&gt; broke http/tests/workers/service/service-worker-cache-api.https.html
&gt; 
&gt; History:
&gt; http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Ftests%2Fworkers%2Fservice%2Fservice-
&gt; worker-cache-api.https.html
&gt; 
&gt; It is crashing on Debug builds and timing out on some release builds.
&gt; 
&gt; I was able to reproduce this locally by just running the test on debug
&gt; against 248593 which crashed and 248592 which passed.

This should be fixed by patch from bug 200671 that I land tomorrow morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563164</commentid>
    <comment_count>27</comment_count>
      <attachid>376143</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2019-08-20 11:51:12 -0700</bug_when>
    <thetext>Comment on attachment 376143
Patch for landing

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

&gt; Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp:375
&gt; +    auto resolvedFormData = formData.resolveBlobReferences(blobRegistry().blobRegistryImpl());

I may be missing something, but AFAIU blobRegistryImpl() is non-null only in WebKitLegacy, while this function is called from NetworkProcess (via createHTTPBodyNSInputStream). Is it correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563169</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-20 11:55:56 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #27)
&gt; Comment on attachment 376143 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376143&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp:375
&gt; &gt; +    auto resolvedFormData = formData.resolveBlobReferences(blobRegistry().blobRegistryImpl());
&gt; 
&gt; I may be missing something, but AFAIU blobRegistryImpl() is non-null only in
&gt; WebKitLegacy, while this function is called from NetworkProcess (via
&gt; createHTTPBodyNSInputStream). Is it correct?

NetworkResourceLoader makes sure to resolve blob references at construction time, see NetworkConnectionToWebProcess::resolveBlobReferences.
That way, createHTTPBodyNSInputStream does not need to deal with blobs in WK2.

Agreed the code is not straightforward.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375903</attachid>
            <date>2019-08-09 03:17:55 -0700</date>
            <delta_ts>2019-08-12 05:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200567-20190809121752.patch</filename>
            <type>text/plain</type>
            <size>183367</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFiNjQ0ZDJlMDlmMmJl
MDk0OWYwZDc4MjJmM2ZhN2ExZjRhYjQwYi4uYWU0OWI5MGNmZTEzM2JiNmNhNTRlMDNhYThmMTk2
YWIwMjVjOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAxOS0wOC0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVz
IHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgc2Vzc2lvbiBJRHMgaW4gQmxvYi4KKyAgICAg
ICAgVGhpcyBhbGxvd3MgZG9pbmcgYWxsIGJsb2IgVVJMIG1hbmlwdWxhdGlvbiB3aXRoIGEgc2Vz
c2lvbklELgorICAgICAgICBNYWtlIGJsb2IgcmVnaXN0cnkgcm91dGluZXMgdGFrZSBhIHNlc3Np
b25JRC4KKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmls
ZVN5c3RlbTo6Z2V0RmlsZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9iRnJvbURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2IpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6On5GZXRjaExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RhcnRM
b2FkaW5nQmxvYlVSTCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNyZWF0ZVJlY29yZGluZ0RhdGFCbG9iKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3RlclVSTCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5Lmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6Zm9yRWFjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVk
aWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5Lmg6IFJlbW92
ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQp
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJl
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpzZXNzaW9uSUQgY29uc3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIpOgor
ICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpEYXRhVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpm
aWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5o
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0b3BNZWRpYUNhcHR1cmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERh
dGFUcmFuc2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5w
dXRFdmVudERhdGFUcmFuc2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9TcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29uc3QpOgorICAgICAgICAqIGVkaXRp
bmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpp
bnB1dEV2ZW50RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIGVkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZv
ckltYWdlQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmF0
dGFjaG1lbnRGb3JEYXRhKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXN0b3JlQXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudCk6CisgICAgICAg
ICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JVUkxSZWdpc3RyeTo6
cmVnaXN0ZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYjo6fkJsb2IpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmRlc2VyaWFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKiBmaWxl
YXBpL0Jsb2IuaWRsOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5pZGw6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAg
ICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRl
UHVibGljVVJMKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIGh0bWwvRmls
ZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZERpcmVjdG9yeUZpbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3QpOgorICAg
ICAgICAqIGh0bWwvRmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlz
dENyZWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpyZWdpc3RlclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UpOgorICAgICAgICAo
V2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6c3RvcCk6CisgICAgICAgICogaHRtbC9QdWJsaWNV
UkxNYW5hZ2VyLmg6CisgICAgICAgICogaHRtbC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGxv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6
OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
QmxvYlJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0
cnlJbXBsOjpmaWxlc0luQmxvYiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRCbG9iUmVzb2x2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9y
bURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIVFRQQm9keUNG
UmVhZFN0cmVhbSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcklu
dGVybmFsczo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorCiAyMDE5LTA4LTA3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCVmFsdWU6Om1fc2Vzc2lvbklE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGI3NjQwZDdjYmM4Mjc3NTcyNTNjYjM0NWJiNzFiNWFmMjlkNzI5NTEuLjBl
YzJhMmMwN2Q2MjY0NTRiYTIzMDk2M2EzNjZhNDZkNmRjNTMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTUgQEAKKzIwMTktMDgtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEJsb2IgcmVnaXN0cmllcyBzaG91bGQgYmUga2V5ZWQgYnkgc2Vzc2lvbiBJRHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYmxv
YiByZWdpc3RyeSB0byBOZXR3b3JrU2Vzc2lvbiBzbyB0aGF0IGl0IGlzIHBhcnRpdGlvbmVkIGJ5
IHNlc3Npb24gSUQuCisgICAgICAgIEluIGNhc2Ugc2Vzc2lvbiBJRCBpcyBtaXNzaW5nLCB1c2Ug
dGhlIGNvbm5lY3Rpb24gYXMga2V5IHRvIGdldCB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVz
b2x2ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJs
b2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAo
V2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAg
ICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmg6CisKIDIwMTktMDgtMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRlc3QgZm9yIGJlaGF2aW9yIGludHJvZHVjZWQgaW4g
cjI0ODE3NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDU3MGIxNWIyNTQ4MTYzYzJj
OTA4NzAxMWFhZTVmYjRlNGI3NGRmMDQuLmNlZTIxYjAxMjJlYWYyNDQ2MmI4YzkwNjU4OTlkZTBm
MzU3N2E4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wOC0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
QmxvYiByZWdpc3RyaWVzIHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgIElnbm9yZSBzZXNzaW9uSUQgcGFyYW1ldGVy
IGZvciBXSzEuCisKIDIwMTktMDgtMDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIENvbnNpc3RlbnRseSB1c2UgT2JqLUMgYm9vbGVhbiBsaXRlcmFscwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDRiZDJlMDAzOWMxZDk5M2JmNmY2OGUzOTQxZWUyOTY1YWUxNzliMjYuLjlmNGExMGI3
MTFiZjM2M2YwYThhMjM0YzllMzI3MWY1MmVlNzZmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZp
cnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUo
ZnVsbFBhdGgpKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZTo6Y3Jl
YXRlKGNvbnRleHQtPnNlc3Npb25JRCgpLCBmdWxsUGF0aCkpOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBl
NmM5MDYyNzc4YTk4OWI1NzU0OWE1NDg5ZjZhYmZlNDg3Y2UzODk5Li44ZWNhMTNiMWM4ZjliZWQ0
ZDE1YWRjOTVkN2U4ZDk2MGEwNzEwMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4g
RmV0Y2hCb2R5OjpleHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKICAg
ICB9KTsKIH0KIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShG
b3JtRGF0YSYgZm9ybURhdGEpCitPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZv
cm1EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRm9ybURhdGEmIGZvcm1EYXRhKQogewog
ICAgIEFTU0VSVCghZm9ybURhdGEuaXNFbXB0eSgpKTsKIApAQCAtODgsNyArODgsNyBAQCBPcHRp
b25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKEZvcm1EYXRhJiBmb3JtRGF0
YSkKICAgICBhdXRvIHVybCA9IGZvcm1EYXRhLmFzQmxvYlVSTCgpOwogICAgIGlmICghdXJsLmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQcm9wZXJseSBzZXQgbWltZSB0eXBlIGFuZCBz
aXplIG9mIHRoZSBibG9iLgotICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxvYiA9IEJsb2I6OmRl
c2VyaWFsaXplKHVybCwgeyB9LCAwLCB7IH0pOworICAgICAgICBSZWY8Y29uc3QgQmxvYj4gYmxv
YiA9IEJsb2I6OmRlc2VyaWFsaXplKHNlc3Npb25JRCwgdXJsLCB7IH0sIDAsIHsgfSk7CiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkgeyBXVEZNb3ZlKGJsb2IpIH07CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBjM2Y5NmZmNGFmZmYyMGQxMTM2
NDQzM2ExZjJhY2Y2YWQxZDlmYjczLi5iMjdlMGE1MTg3YWU4YmY4NGJkNzkxN2M3ZTcxMDU4ZTEx
Yjk4NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IGV4
dHJhY3QoSW5pdCYmLCBTdHJpbmcmKTsKICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9ybURhdGEo
Rm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5
PiBmcm9tRm9ybURhdGEoUEFMOjpTZXNzaW9uSUQsIEZvcm1EYXRhJik7CiAKICAgICB2b2lkIGxv
YWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDMwMmRmZjYwYWRhZmVmZjc2MzFkZmI4OTY0OGI2MTY4MThjYjljYjYuLjdm
MDVlN2FjMTlhMDU4ODlkOTY4ZmU2ZTE0OGM1N2Q5ZWZjN2FmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zNSwxMSAr
MzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFJlZjxCbG9i
PiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxv
YkZyb21EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAg
IFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgpOwogICAgIG1lbWNweSh2YWx1ZS5kYXRhKCks
IGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwg
Y29udGVudFR5cGUpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBXVEZNb3Zl
KHZhbHVlKSwgY29udGVudFR5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkUHJl
cGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC02
NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAgICAgICAgIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIGRhdGEsIGxlbmd0aCk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpCbG9iOgotICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+
KGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKS5nZXQoKSk7CisgICAgICAg
IHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oYmxv
YkZyb21EYXRhKHByb21pc2UtPnNlc3Npb25JRCgpLCBkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBl
KS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpU
eXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKFdURk1vdmUocHJvbWlz
ZSksIHRleHRGcm9tVVRGOChkYXRhLCBsZW5ndGgpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVy
KFdURk1vdmUocHJvbWlzZSksIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9iOgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0
aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KHRha2VBc0Jsb2IoKS5nZXQoKSk7Cisg
ICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9i
Pj4odGFrZUFzQmxvYihwcm9taXNlLT5zZXNzaW9uSUQoKSkuZ2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBUeXBlOjpKU09OOgogICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09O
KFdURk1vdmUocHJvbWlzZSksIHRha2VBc1RleHQoKSk7CkBAIC0xNzcsMTMgKzE3NywxMyBAQCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVm
ZmVyKCkKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLVJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYigpCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+KCksIG1fY29udGVudFR5
cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIG1fY29udGVudFR5cGUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8g
bW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1
cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1f
YnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICBy
ZXR1cm4gYmxvYkZyb21EYXRhKHNlc3Npb25JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVu
dFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4
IDFhY2ZlMDA5M2U1MDg1ZjkzNzU5YzUwNTdhN2JmYmRlNWUwZmI5MDcuLmRhYWNmMjY2Y2VmNzIz
ODkzMjM1NTcwODBjZjczOWZkNTAzYmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgog
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxv
YigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRUeXBl
KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
OyB9CkBAIC03NSw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFzTG9hZGluZygpIHsg
bV9pc0xvYWRpbmcgPSB0cnVlOyB9CiAKIHByaXZhdGU6CisgICAgUmVmPEJsb2I+IHRha2VBc0Js
b2IoUEFMOjpTZXNzaW9uSUQpOworCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29u
dGVudFR5cGU7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDczYjUyOTYy
OWNlYjUwYzc1ODFmYTI1ZGMyNzFiMGM2ZmJhN2RmYjAuLmFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2
NTgwYWRiYzg2MGE4MWY4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgaWYg
KGlzQm9keU51bGxPck9wYXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50
ZXJmYWNlPEJsb2I+PihCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50
VHlwZSkpKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihC
bG9iOjpjcmVhdGUocHJvbWlzZS0+c2Vzc2lvbklEKCksIFZlY3Rvcjx1aW50OF90PiB7IH0sIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1f
Y29udGVudFR5cGUpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1
cmJlZE9yTG9ja2VkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHAKaW5kZXggYzBkYmY1ZmU1NzhmMWY1OWI2ZjRjMWIwN2FiYzAxZTdkMjUxZDc3OS4u
ZDY4OGMzN2QzODc1OWJmMmUwNjBmNmYxNWY2MWI2ODU4NDk0MTU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogRmV0Y2hMb2FkZXI6On5GZXRjaExvYWRlcigpCiB7CiAgICAgaWYg
KCFtX3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV91cmxGb3JS
ZWFkaW5nKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTU4LDEzICs1OCwxNCBAQCB2b2lk
IEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBCbG9iJiBibG9iKQogCiB2b2lkIEZldGNoTG9hZGVyOjpzdGFydExvYWRpbmdCbG9iVVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKKyAg
ICBtX3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vzc2lvbklEKCk7CiAgICAgbV91cmxGb3JSZWFkaW5n
ID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgaWYgKG1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbCh7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIFVSTCgpLCAiQ291bGQgbm90IGNy
ZWF0ZSBVUkwgZm9yIEJsb2IiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9y
aWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgY29udGV4dC5zZWN1cml0eU9yaWdp
bigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcklkZW50aWZp
ZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDQwMTFiMzczOGM5NzliYjk3OGFkZmRj
ZmNiYTg1NGNhZThjNWRmZmYuLjA4NTdkNTJmOTZhMDY5MGRhOTFlNWZlYThhYmY0NTNkYmQ1YjNl
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTY3
LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBGZXRjaEJvZHlDb25zdW1lciogbV9jb25zdW1lcjsK
ICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV91cmxGb3JSZWFkaW5n
OworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGQ1YWZkNDQ1OTcxYTg0NTBhYjM4NWE1MDAyMGViNmUy
MTk2MTI5MmYuLjI0NDc4MjVkNDhiY2JjNDJlYmUyMjUzODMwZTdjMDhiODBjYmRjNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci5jcHAKQEAgLTE1Nyw4ICsxNTcsOCBAQCBSZWY8QmxvYj4gTWVkaWFSZWNvcmRlcjo6Y3Jl
YXRlUmVjb3JkaW5nRGF0YUJsb2IoKQogewogICAgIGF1dG8gZGF0YSA9IG1fcHJpdmF0ZS0+ZmV0
Y2hEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKCk7
Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgqZGF0YSwgbV9wcml2YXRlLT5taW1lVHlwZSgpKTsK
KyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
c3Npb25JRCgpKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2Vzc2lvbklEKCksICpkYXRhLCBtX3ByaXZhdGUtPm1pbWVUeXBlKCkpOwogfQogCiB2
b2lkIE1lZGlhUmVjb3JkZXI6OmRpZEFkZE9yUmVtb3ZlVHJhY2soKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAKaW5kZXggOThjNjYzYjZmYzZkYmRhMjkzNmE3ZGEyNjg5NmRmMDAzMjMzYmRiOS4uZWJkODE1
MjE1MWVjMWU3ZDNlM2U2NmM2Y2NhNDMzMzU2YTcwZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIE1lZGlhU291cmNlUmVnaXN0cnkmIE1lZGlhU291cmNlUmVnaXN0
cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgTWVkaWFTb3Vy
Y2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHVybCwg
VVJMUmVnaXN0cmFibGUmIHJlZ2lzdHJhYmxlKQordm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiB1cmwsIFVSTFJl
Z2lzdHJhYmxlJiByZWdpc3RyYWJsZSkKIHsKICAgICBBU1NFUlQoJnJlZ2lzdHJhYmxlLnJlZ2lz
dHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdp
biosIGNvbnN0IFVSTCYgdXJsLCBVUkxSZWdpc3QKICAgICBtX21lZGlhU291cmNlcy5zZXQodXJs
LnN0cmluZygpLCAmc291cmNlKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQordm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChhdXRvIHNvdXJjZSA9IG1fbWVkaWFT
b3VyY2VzLnRha2UodXJsLnN0cmluZygpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5kZXggMDMzNjc0ZjI2
ZDM0NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NS4uNzYxNGFiOGViMmUwY2RkNGQ0MjVhYWZm
YmQ1YTc0YTY2NzY1NWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBNZWRpYVNvdXJjZVJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgbWVkaWEg
c291cmNlLgotICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
LCBVUkxSZWdpc3RyYWJsZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5yZWdpc3RlclVSTChjb25z
dCBVUkwmKSBvdmVycmlkZTsKLSAgICBVUkxSZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJikgZmluYWw7CisgICAgdm9pZCB1
bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmKSBmaW5hbDsK
KyAgICBVUkxSZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgogICAgIE1lZGlhU291cmNlUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggNWViOGNhNWEw
MWE3ZTQ0ZDE3OGU0N2FmNWJhZDJmMDBjZDhiMTAyNC4uYWIxMzk5NjhmMDNiZmI2ZjliOGQ4OTA4
YTNjM2E3MWFlMGY0MWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
RXZlbnQuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKQEAgLTQ4LDYgKzQ3LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtKTsKIAorc3RhdGljIEhhc2hTZXQ8TWVkaWFTdHJl
YW0qPiYgYWxsTWVkaWFTdHJlYW1zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxNZWRpYVN0cmVhbSo+PiBzdHJlYW1zOworICAgIHJldHVybiBzdHJlYW1zOworfQorCit2
b2lkIE1lZGlhU3RyZWFtOjpmb3JFYWNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoTWVkaWFTdHJlYW0m
KT4mIGNhbGxiYWNrKQoreworICAgIGZvciAoYXV0byogc3RyZWFtIDogYWxsTWVkaWFTdHJlYW1z
KCkpCisgICAgICAgIGNhbGxiYWNrKCpzdHJlYW0pOworfQorCiBSZWY8TWVkaWFTdHJlYW0+IE1l
ZGlhU3RyZWFtOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBNZWRp
YVN0cmVhbTo6Y3JlYXRlKGRvY3VtZW50LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShkb2N1
bWVudC5sb2dnZXIoKSwgeyB9KSk7CkBAIC05Miw3ICsxMDMsNyBAQCBNZWRpYVN0cmVhbTo6TWVk
aWFTdHJlYW0oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9y
JiB0cmFjawogCiAgICAgc2V0SXNBY3RpdmUobV9wcml2YXRlLT5hY3RpdmUoKSk7CiAgICAgbV9w
cml2YXRlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6c2hh
cmVkKCkucmVnaXN0ZXJTdHJlYW0oKnRoaXMpOworICAgIGFsbE1lZGlhU3RyZWFtcygpLmFkZCh0
aGlzKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIApAQCAtMTA1LDcgKzExNiw3IEBAIE1l
ZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxNZWRpYVN0cmVh
bVByaXZhdGU+JiYgc3RyZWFtUHJpCiAKICAgICBzZXRJc0FjdGl2ZShtX3ByaXZhdGUtPmFjdGl2
ZSgpKTsKICAgICBtX3ByaXZhdGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICBNZWRpYVN0cmVh
bVJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdpc3RlclN0cmVhbSgqdGhpcyk7CisgICAgYWxsTWVkaWFT
dHJlYW1zKCkuYWRkKHRoaXMpOwogCiAgICAgZm9yIChhdXRvJiB0cmFja1ByaXZhdGUgOiBtX3By
aXZhdGUtPnRyYWNrcygpKSB7CiAgICAgICAgIGF1dG8gdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNr
OjpjcmVhdGUoZG9jdW1lbnQsICp0cmFja1ByaXZhdGUpOwpAQCAtMTIwLDcgKzEzMSw3IEBAIE1l
ZGlhU3RyZWFtOjp+TWVkaWFTdHJlYW0oKQogICAgIC8vIFNldCBpc0FjdGl2ZSB0byBmYWxzZSBp
bW1lZGlhdGVseSBzbyBhbnkgY2FsbGJhY2tzIHRyaWdnZXJlZCBieSBzaHV0dGluZyBkb3duLCBl
LmcuCiAgICAgLy8gbWVkaWFTdGF0ZSgpLCBhcmUgc2hvcnQgY2lyY3VpdGVkLgogICAgIG1faXNB
Y3RpdmUgPSBmYWxzZTsKLSAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpzaGFyZWQoKS51bnJlZ2lz
dGVyU3RyZWFtKCp0aGlzKTsKKyAgICBhbGxNZWRpYVN0cmVhbXMoKS5yZW1vdmUodGhpcyk7CiAg
ICAgbV9wcml2YXRlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgZm9yIChhdXRvJiB0cmFj
ayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpCiAgICAgICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CkBAIC0zODQsMTEgKzM5NSw2IEBAIHZvaWQgTWVkaWFTdHJlYW06OnVwZGF0ZUFjdGl2
ZVN0YXRlKCkKICAgICBzZXRJc0FjdGl2ZShhY3RpdmUpOwogfQogCi1VUkxSZWdpc3RyeSYgTWVk
aWFTdHJlYW06OnJlZ2lzdHJ5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1SZWdp
c3RyeTo6c2hhcmVkKCk7Ci19Ci0KIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgTWVkaWFTdHJlYW06
OnRyYWNrVmVjdG9yRm9yVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIGZpbHRlclR5cGUp
IGNvbnN0CiB7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggYjllN2U3
NWNiMGYwM2IzN2FjMjNhNmM0OTliZjU1YWU1NzdkZDkyMC4uMjdkODVjMGM4YzU5NWRiOTI4ZmJh
YWY5YTc1NDdiNzlmNTkwZDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDksOCArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgTWVkaWFTdHJlYW0gZmluYWwKLSAgICA6IHB1
YmxpYyBVUkxSZWdpc3RyYWJsZQotICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEKKyAgICA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIK
ICAgICAsIHB1YmxpYyBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2VydmVyCkBAIC03NCw2ICs3Myw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoRG9jdW1lbnQm
LCBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiYmKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgp
OwogCisgICAgc3RhdGljIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jdGlvbjx2b2lkKE1lZGlhU3Ry
ZWFtJik+Jik7CisKICAgICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUtPmlk
KCk7IH0KIAogICAgIHZvaWQgYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOwpAQCAtMTAzLDkg
KzEwNCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPjo6cmVm
OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+OjpkZXJlZjsKIAotICAgIC8vIFVS
TFJlZ2lzdHJhYmxlCi0gICAgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KICAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVPYnNl
cnZlcihPYnNlcnZlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjQxNWZmYWJhNWM5YTg0ODEzNGU1MjIzMzRkZDNhNjAxZWMyYmYyZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NZWRpYVN0cmVhbVJlZ2lz
dHJ5JiBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpzaGFyZWQoKQotewotICAgIC8vIFNpbmNlIFdlYldv
cmtlcnMgY2Fubm90IG9idGFpbiBNZWRpYVNvdXJjZSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24g
dGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPE1lZGlhU3RyZWFtUmVnaXN0cnk+IGluc3RhbmNlOwotICAgIHJldHVy
biBpbnN0YW5jZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYgdXJsLCBVUkxSZWdpc3RyYWJsZSYgc3RyZWFtKQot
ewotICAgIEFTU0VSVCgmc3RyZWFtLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBtX21lZGlhU3RyZWFtcy5zZXQodXJsLnN0cmluZygpLCBzdGF0
aWNfY2FzdDxNZWRpYVN0cmVhbSo+KCZzdHJlYW0pKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgbV9tZWRpYVN0cmVhbXMucmVtb3ZlKHVybC5zdHJpbmcoKSk7Ci19
Ci0KLVVSTFJlZ2lzdHJhYmxlKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1
cm4gbV9tZWRpYVN0cmVhbXMuZ2V0KHVybCk7Ci19Ci0KLU1lZGlhU3RyZWFtKiBNZWRpYVN0cmVh
bVJlZ2lzdHJ5Ojpsb29rVXAoY29uc3QgVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4obG9va3VwKHVybC5zdHJpbmcoKSkpOwotfQotCi1zdGF0
aWMgVmVjdG9yPE1lZGlhU3RyZWFtKj4mIG1lZGlhU3RyZWFtcygpCi17Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVN0cmVhbSo+PiBzdHJlYW1zOwotICAgIHJldHVybiBz
dHJlYW1zOwotfQotCi12b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdGVyU3RyZWFtKE1l
ZGlhU3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgbWVkaWFTdHJlYW1zKCkuYXBwZW5kKCZzdHJlYW0p
OwotfQotCi12b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnVucmVnaXN0ZXJTdHJlYW0oTWVkaWFT
dHJlYW0mIHN0cmVhbSkKLXsKLSAgICBhdXRvJiBhbGxTdHJlYW1zID0gbWVkaWFTdHJlYW1zKCk7
Ci0gICAgc2l6ZV90IHBvcyA9IGFsbFN0cmVhbXMuZmluZCgmc3RyZWFtKTsKLSAgICBpZiAocG9z
ICE9IG5vdEZvdW5kKQotICAgICAgICBhbGxTdHJlYW1zLnJlbW92ZShwb3MpOwotfQotCi12b2lk
IE1lZGlhU3RyZWFtUmVnaXN0cnk6OmZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE1l
ZGlhU3RyZWFtJik+JiBjYWxsYmFjaykgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8mIHN0cmVhbSA6
IG1lZGlhU3RyZWFtcygpKQotICAgICAgICBjYWxsYmFjaygqc3RyZWFtKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
Z2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZDIzZDJkNzkwZjBkNGYy
NzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotCi0jaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVN0cmVhbTsKLWNsYXNzIE1l
ZGlhU3RyZWFtUHJpdmF0ZTsKLQotY2xhc3MgTWVkaWFTdHJlYW1SZWdpc3RyeSBmaW5hbCA6IHB1
YmxpYyBVUkxSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPE1lZGlhU3RyZWFtUmVnaXN0cnk+OwotCi0gICAgLy8gUmV0dXJucyBhIHNpbmdsZSBpbnN0
YW5jZSBvZiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LgotICAgIHN0YXRpYyBNZWRpYVN0cmVhbVJlZ2lz
dHJ5JiBzaGFyZWQoKTsKLQotICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0
byB0aGUgc3BlY2lmaWVkIHN0cmVhbSBkYXRhLgotICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKLQotICAgIFVSTFJlZ2lzdHJh
YmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHJl
Z2lzdGVyU3RyZWFtKE1lZGlhU3RyZWFtJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU3RyZWFtKE1l
ZGlhU3RyZWFtJik7Ci0KLSAgICBNZWRpYVN0cmVhbSogbG9va1VwKGNvbnN0IFVSTCYpIGNvbnN0
OwotCi0gICAgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYVN0cmVh
bSYpPiYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIE1lZGlhU3RyZWFtUmVnaXN0cnkoKSA9IGRl
ZmF1bHQ7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVN0cmVhbT4+IG1fbWVkaWFT
dHJlYW1zOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggNzU0ZTQ2OGM5MjE1NmU5NzNiY2RmYjQ2MWFj
NTNmNmRkNTU1NWQ2Ny4uYWMzMjE5YTA2NmNlZjY1M2JhMWVkYmQyODI1M2ZiYWZkODYzN2UxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRS
ZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIAogICAg
IHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAg
ICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpLCBlbXB0eVN0cmluZygp
KSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6
CiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGYxMzc5MWM2MjBhN2E2MDY3
ZjRjM2RhYjVmZDQzYjM4YTc3ZDNmZTIuLmQ3NGU2ZDkxOTAyM2JmYjA5NzQwOGE0ODc2ZTc2NGYz
MDU4ZDc0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiAgICAgc3dpdGNoIChtX2Jp
bmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUg
c2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgICAgICBkaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEp
LCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5n
KCkpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgV1RGTW92ZShiaW5h
cnlEYXRhKSwgZW1wdHlTdHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50
b1N0cmluZygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlC
dWZmZXI6CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlC
dWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOWVjNGNhZjFjYTE2Y2JmY2VmOTFhMTUy
ZDE0Y2VmZDI2YmJjZTllYy4uOTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NjUs
NyArNDY1LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsK
IAotICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKHVybCwgdHlwZSwgc2l6ZSwg
eyB9KSk7CisgICAgICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY29udGV4dC5zZXNz
aW9uSUQoKSwgdXJsLCB0eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlk
Z2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlNGViNzJjMGFiZDdi
YzQ1MmE5ZjAwNTY1YzBkYTI0YzBmYzIyYzliLi44OGIwZjg0MTZiMzhjYmM5M2FlMTVmZWI3OTAz
ZDM3YWZkOTZkZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTYyLDcgKzE2Miw2IEBAIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNFbnVtZXJhdGlvblJlcXVlc3QuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlc1JlcXVlc3QuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAotTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiYzlhYzI3MTdiZjYzNDFkZDA2MGY0NWMyYzkxMGJhNDJmYTc4YTAzLi43MTc5
NDRlNWY0NDgyOGZmYWRkYjgwNmI5ZWE1NjVjOGQxZGM5YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDcsNyArMTQ3LDYg
QEAKIAkJMDc4NDYzODUxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUw
MEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi87IH07CiAJCTA3ODdDNDZBMUJGQkRGNkYwMDZE
Q0Q3RiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4N0M0NjgxQkZCREY2RjAwNkRDRDdG
IC8qIEpTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3OEUwOTE1
MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlh
U3RyZWFtLmggKi87IH07Ci0JCTA3OEUwOTE3MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVh
bVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzIyMUI1MzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1SZWdpc3RyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3OEUwOTE4MTdE
MTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUI1NTE3Q0VDMzI3MDA4NDhFNTEgLyogTWVk
aWFTdHJlYW1UcmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3OEUwOTE5MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIx
QjU4MTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzhFMDkxRTE3RDE0RDFD
MDA0MjBBQTEgLyogUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjIxQjY0MTdDRUMzMjcwMDg0OEU1MSAvKiBSVENEYXRhQ2hh
bm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00MDE4LDcgKzQwMTcsNiBAQAogCQlDRDVGRjQ5QzIxNjJFNENGMDA0QkQ4NkYgLyogSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMkY3NUE5QTg2RUEwM0RBRjI0Qjc5NzEgLyogSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q1RkY0OUQyMTYyRTREQjAwNEJEODZGIC8qIElT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDg3MUM2MDFGQjUyQjY1MDBGMEI5NjUgLyogSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDRDVGRjQ5RTIxNjJFNEU4MDA0QkQ4NkYgLyogSVNPT3JpZ2luYWxGb3JtYXRC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODcx
QzY3MUZCNTJCNjgwMEYwQjk2NSAvKiBJU09PcmlnaW5hbEZvcm1hdEJveC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNENjFGRTY4MTc5NEFBREIw
MDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUE5NDJFMjE1QjVDRTIyMDBENTI1RDEgLyogTWVkaWFT
b3VyY2VSZWdpc3RyeS5oICovOyB9OwogCQlDRDYyRkI5NjFBRjAxOEU3MDAxMkVEN0QgLyogR2Vu
ZXJpY1Rhc2tRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q2MkZCOTQxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNrUXVldWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDY0MUVCMzE4
MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyog
TWVkaWFTb3VyY2VQcml2YXRlLmggKi87IH07CiAJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAv
KiBTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJp
dmF0ZS5oICovOyB9OwpAQCAtNTI2OSw4ICs1MjY3LDYgQEAKIAkJMDcyMjFCNEMxN0NFQzMyNzAw
ODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcy
MjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MjIxQjRFMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gTWVkaWFTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwNzIyMUI1MjE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyMjFCNTMxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTdHJlYW1SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzIyMUI1NDE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyMjFCNTUxN0NFQzMyNzAwODQ4RTUxIC8qIE1l
ZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFT
dHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzIyMUI1NjE3Q0VD
MzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MjYyLDYgKzcyNTgsOCBAQAogCQk0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENNZWRpYUVuZHBvaW50Lmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4
MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA7
IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE3NjkwMDMyMkZDRDhGMjAwQjE1NzZEIC8qIE1lZGlhU291cmNlUmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VSZWdpc3RyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTc2OTAwNDIyRkNEOEYyMDBCMTU3NkQg
LyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE3REE0Q0UxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE3REE0Q0YxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm5hbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtMTIwMjksOCArMTIwMjcsNiBAQAogCQlCMTBCNjk3RDE0MEMxNzQw
MDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViVlRUVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjEwQjY5N0Ux
NDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJWVFRUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMTBCNjk3RjE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZUVFRva2VuaXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMUE5NDJFMTE1QjVDRTIyMDBENTI1RDEgLyog
TWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjFBOTQyRTIxNUI1Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VSZWdpc3RyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogVGV4
dFRyYWNrTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRUcmFja0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxQUQ0RTcy
MTNBMTJBNDYwMDg0NkIyNyAvKiBUZXh0VHJhY2tMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjY5LDggKzE1NjY1LDYgQEAKIAkJCQkwNzIy
MUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTA3MjIxQjRE
MTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3MjIxQjRFMTdDRUMz
MjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5pZGwgKi8sCi0JCQkJMDcyMjFCNTIxN0NFQzMyNzAw
ODQ4RTUxIC8qIE1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwICovLAotCQkJCTA3MjIxQjUzMTdDRUMz
MjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LmggKi8sCiAJCQkJMDcyMjFCNTQxN0NF
QzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2suY3BwICovLAogCQkJCTA3MjIxQjU1MTdD
RUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggKi8sCiAJCQkJMDcyMjFCNTYxN0NF
QzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2suaWRsICovLApAQCAtMjM3NzAsOCArMjM3
NjQsOCBAQAogCQkJCUNEM0E0OTU1MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5jcHAg
Ki8sCiAJCQkJQ0QzQTQ5NTYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi8sCiAJ
CQkJQ0QzQTQ5NTcxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmlkbCAqLywKLQkJCQlC
MUE5NDJFMTE1QjVDRTIyMDBENTI1RDEgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgKi8sCi0J
CQkJQjFBOTQyRTIxNUI1Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLywK
KwkJCQk0MTc2OTAwNDIyRkNEOEYyMDBCMTU3NkQgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAg
Ki8sCisJCQkJNDE3NjkwMDMyMkZDRDhGMjAwQjE1NzZEIC8qIE1lZGlhU291cmNlUmVnaXN0cnku
aCAqLywKIAkJCQlDREQ3MDg5NDE4MzU5RjZFMDAyQjNEQzYgLyogU2FtcGxlTWFwLmNwcCAqLywK
IAkJCQlDREQ3MDg5NTE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggKi8sCiAJCQkJQ0Qz
QTQ5NTgxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5jcHAgKi8sCkBAIC0zMDcxNSwx
NCArMzA3MDksMTIgQEAKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2ODUg
LyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0REQzFF
N0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQ0Q2MUZFNjgxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE1MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NEMxN0QxNzA5NjAwNDIwQUExIC8q
IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDY3MUE3ODE1OUJCMDcwMDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEY1NDk4MTdGMTJGNkIwMDE2OUUw
NCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc4RTA5MzcxN0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMDc4RTA5MTcxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3Ry
ZWFtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUzQ0MwMUZFMUM3M0MwMDQ4M0Mx
RCAvKiBNZWRpYVN0cmVhbVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE4MTdE
MTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDkxOTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VE
ZWZlcnJlZC5oCmluZGV4IGI0YWFiNzhmNDdhNjkwMDMwZmU1ZGFiNWI3ODc2Nzg3ZTU2MmJiNzEu
LjM2ODE4MjAyMWQ3NjcxNWExODZiNWQ1OWQ0YzUzMzViYTIyY2Q1MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaApAQCAtMjgsOCAr
MjgsMTAgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlRGVmZXJyZWQuaD4KKyNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM2LDYgKzEz
OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2hlblNldHRsZWQoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+JiYpOwogCisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
Z2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCk7IH0K
KwogcHJpdmF0ZToKICAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYgZGVmZXJyZWQsIE1vZGUgbW9kZSkKICAg
ICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+KGdsb2JhbE9iamVjdCwg
ZGVmZXJyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhNDJmZWM2MWU0NWE0ZjRhOGJiOGQ5NDczYjM4M2RlODI1
YmFkOWM2Li40YjRlMTFjMjIxMGM4NjMwODg2N2Q5NTRmMWJjNjY4ZTYwNjMyMDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTIwOTEsNyArMjA5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaWxlUGF0aCA9
IHBhdGgtPnN0cmluZygpOwogCiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0KQotICAg
ICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVy
bC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFz
dE1vZGlmaWVkKTsKKyAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2Vzc2lvbklEKCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yODU3LDcgKzI4NTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIW1f
aXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAg
ICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoVVJMKFVSTCgpLCB1
cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JV
UkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVl
KEJsb2I6OmRlc2VyaWFsaXplKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2Jq
ZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgVVJMKFVSTCgpLCB1
cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JV
UkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0cmlu
Z1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKQEAgLTM1
NjksMTMgKzM1NjksMTIgQEAgVmVjdG9yPFN0cmluZz4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpi
bG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICAvLyBGSVhN
RTogR2V0IHRoZSByaWdodCBibG9iIHJlZ2lzdHJ5IGZyb20gdGhlIGdpdmVuIHNlc3Npb25JRC4K
LSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxz
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11
dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNl
c3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8m
JiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgICAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggOWFhZGIwZjg2ZDhmOGRhYWY3Y2E3NmEyMzVmMzc3M2Zk
ODlkNmU0MC4uY2I3NTIzMjgwYzdiMzI1YzY2Y2RlNjQ2YzE1YmY1YTkxMzE3NDViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTY4LDggKzY4LDkgQEAgcHJpdmF0ZToKIAog
I2VuZGlmCiAKLURhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2FyZCwgVHlwZSB0eXBlKQotICAgIDogbV9z
dG9yZU1vZGUobW9kZSkKK0RhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgU3RvcmVNb2RlIG1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBw
YXN0ZWJvYXJkLCBUeXBlIHR5cGUpCisgICAgOiBtX3Nlc3Npb25JRChkb2N1bWVudC5zZXNzaW9u
SUQoKSkKKyAgICAsIG1fc3RvcmVNb2RlKG1vZGUpCiAgICAgLCBtX3Bhc3RlYm9hcmQoV1RGTW92
ZShwYXN0ZWJvYXJkKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgICwgbV90eXBlKHR5
cGUpCkBAIC04Myw5ICs4NCw5IEBAIERhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9k
ZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2FyCiAjZW5kaWYKIH0K
IAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgc3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBTdG9yZU1v
ZGUgc3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkKQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoc3Rv
cmVNb2RlLCBXVEZNb3ZlKHBhc3RlYm9hcmQpKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBh
ZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgc3RvcmVNb2RlLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1
bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJh
bnNmZXI7CiB9CkBAIC0zNDgsNyArMzQ5LDcgQEAgVmVjdG9yPFJlZjxGaWxlPj4gRGF0YVRyYW5z
ZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdAogICAgIGJvb2wgYWRk
ZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gZmFsc2U7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmls
ZXM7CiAgICAgaWYgKCghZm9yRHJhZygpIHx8IGZvckZpbGVEcmFnKCkpICYmIG1fcGFzdGVib2Fy
ZC0+ZmlsZUNvbnRlbnRTdGF0ZSgpICE9IFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGU6Ok5v
RmlsZU9ySW1hZ2VEYXRhKSB7Ci0gICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBy
ZWFkZXI7CisgICAgICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXIgeyBtX3Nl
c3Npb25JRCB9OwogICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKICAgICAgICAg
ZmlsZXMgPSBXVEZNb3ZlKHJlYWRlci5maWxlcyk7CiAgICAgICAgIGFkZGVkRmlsZXNGcm9tUGFz
dGVib2FyZCA9ICFmaWxlcy5pc0VtcHR5KCk7CkBAIC00MTMsMTIgKzQxNCwxMiBAQCBib29sIERh
dGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1
cm4gIXR5cGUuaXNOdWxsKCkgJiYgdHlwZXMoKS5jb250YWlucyh0eXBlKTsKIH0KIAotUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmlu
ZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQorUmVmPERhdGFUcmFuc2Zlcj4g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7CiAg
ICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
OwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCBwbGFpblRleHQp
OwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkb25s
eSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwg
V1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwogfQogCiB2b2lkIERhdGFU
cmFuc2Zlcjo6Y29tbWl0VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2ZVBhc3RlYm9hcmQp
CkBAIC00NjMsMjkgKzQ2NCwyOSBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVs
ZW1lbnQqLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JEcmFnKCkKK1JlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFnQW5kRHJv
cERhdGEpKTsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JE
cmFnU3RhcnRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+
KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRv
cHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwog
fQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09w
ZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKLSAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6
U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/
IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBE
YXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIGRy
YWdnaW5nRmlsZXMgPyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERyb3BE
YXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc291cmNlT3BlcmF0
aW9uKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9y
aWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsK
IH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ry
b3BUYXJnZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4m
JiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGlu
Z0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBU
eXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVm
KCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJv
dGVjdGVkLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CiAgICAgZGF0YVRyYW5zZmVyLT5t
X29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2Fy
ZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgK
aW5kZXggMDBlOWVmNDYxMjJmMWFiZjg1Yzc4ZGEwYWZhYjEyZjgyYTk3ZTQyNy4uNmFlY2FjOGZm
NDk0MjU0NTVjZGY3YmEzN2JiZDE3ZTY4MmY3ZGQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKKyNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDggKzQ3LDggQEAgcHVibGljOgogICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RuZC5odG1sI2RyYWctZGF0YS1z
dG9yZS1tb2RlCiAgICAgZW51bSBjbGFzcyBTdG9yZU1vZGUgeyBJbnZhbGlkLCBSZWFkV3JpdGUs
IFJlYWRvbmx5LCBQcm90ZWN0ZWQgfTsKIAotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoRG9jdW1lbnQmLCBTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9y
SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4
dCk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShj
b25zdCBEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYp
OworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0
IERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRl
eHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkRhdGFUcmFuc2ZlcigpOwogCkBAIC04NiwxMCAr
ODcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
KTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNm
ZXI+IGNyZWF0ZUZvckRyYWcoKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRl
Rm9yRHJhZ1N0YXJ0RXZlbnQoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zl
cj4gY3JlYXRlRm9yRHJvcChEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
LCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHN0YXRpYyBSZWY8RGF0
YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoRG9jdW1lbnQmLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVz
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1
bWVudCYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnU3RhcnRF
dmVudChjb25zdCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVh
dGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYs
IERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpOwogCiAgICAgYm9vbCBkcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcm9wRWZmZWN0ID09ICJ1bmluaXRpYWxpemVkIjsgfQogCkBAIC0xMTIsNyArMTEz
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQ
YXN0ZSwgRHJhZ0FuZERyb3BEYXRhLCBEcmFnQW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07Ci0g
ICAgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBU
eXBlID0gVHlwZTo6Q29weUFuZFBhc3RlKTsKKyAgICBEYXRhVHJhbnNmZXIoY29uc3QgRG9jdW1l
bnQmLCBTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6
OkNvcHlBbmRQYXN0ZSk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZm9y
RHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcERhdGEgfHwg
bV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRmlsZXM7IH0KQEAgLTEyOSw2ICsxMzAsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKEFkZEZpbGVzVHlwZSkgY29uc3Q7CiAg
ICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29u
c3Q7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9vcmln
aW5JZGVudGlmaWVyOwogICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZWQ4ZDkzNDI5OTA2MjE0ZGFkMjhiZjk2NmM2ZmRjYmQ0NTIzM2Y4Ny4uNTMxMTEzOTRlOTAx
YTM2YjhkNGJiMTY1ZDJjNTUyZDI0OWI3MDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xMjQsNiArMTI0LDcgQEAKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAi
TWljcm90YXNrcy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
QEAgLTMwNiwxMSArMzA3LDYgQEAKICNpbmNsdWRlICJYU0xUUHJvY2Vzc29yLmgiCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNp
bmNsdWRlICJNZWRpYVN0cmVhbVJlZ2lzdHJ5LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShXRUJH
TCkKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNlbmRpZgpAQCAtNTczMiw3
ICs1NzI4LDcgQEAgYm9vbCBEb2N1bWVudDo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dl
ZCgpIGNvbnN0CiAKICNlbmRpZgogCi1TdHJpbmcgRG9jdW1lbnQ6Om9yaWdpbklkZW50aWZpZXJG
b3JQYXN0ZWJvYXJkKCkKK1N0cmluZyBEb2N1bWVudDo6b3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQoKSBjb25zdAogewogICAgIGF1dG8gb3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKS50b1N0
cmluZygpOwogICAgIGlmIChvcmlnaW4gIT0gIm51bGwiKQpAQCAtNzY2NCw3ICs3NjYwLDcgQEAg
dm9pZCBEb2N1bWVudDo6bm90aWZ5TWVkaWFDYXB0dXJlT2ZWaXNpYmlsaXR5Q2hhbmdlZCgpCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgRG9jdW1lbnQ6OnN0b3BNZWRpYUNhcHR1cmUo
KQogewotICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZCgpLmZvckVhY2goW3RoaXNdKE1l
ZGlhU3RyZWFtJiBzdHJlYW0pIHsKKyAgICBNZWRpYVN0cmVhbTo6Zm9yRWFjaChbdGhpc10oYXV0
byYgc3RyZWFtKSB7CiAgICAgICAgIGlmIChzdHJlYW0uZG9jdW1lbnQoKSA9PSB0aGlzKQogICAg
ICAgICAgICAgc3RyZWFtLmVuZENhcHR1cmVUcmFja3MoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggMzQ5MTNjNTdjYmY1YzE4YzIyYTIxZGNkNzYyN2VkY2MwZTc0ZTA1MC4uZjk3
ZGJlNzUxYmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY0RPTVRyZWVWZXJz
aW9uKCkgeyBtX2RvbVRyZWVWZXJzaW9uID0gKytzX2dsb2JhbFRyZWVWZXJzaW9uOyB9CiAgICAg
dWludDY0X3QgZG9tVHJlZVZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVWZXJzaW9u
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKSBjb25zdDsKIAogICAgIC8vIFhQYXRoRXZhbHVhdG9yIG1ldGhvZHMKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8WFBhdGhFeHByZXNzaW9uPj4gY3JlYXRlRXhw
cmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+
JiYpOwpAQCAtMTY4OCw3ICsxNjg4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2RvbVRy
ZWVWZXJzaW9uOwogICAgIHN0YXRpYyB1aW50NjRfdCBzX2dsb2JhbFRyZWVWZXJzaW9uOwogCi0g
ICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKKyAgICBtdXRhYmxlIFN0cmluZyBtX3VuaXF1
ZUlkZW50aWZpZXI7CiAKICAgICBIYXNoU2V0PE5vZGVJdGVyYXRvcio+IG1fbm9kZUl0ZXJhdG9y
czsKICAgICBIYXNoU2V0PFJhbmdlKj4gbV9yYW5nZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXggMDQxZjlk
MTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZi4uNTJiNjlhNTcyYTY1NjkwODdjOTNh
MmExOGNkMzI1MDIyOWY2YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBAQCBTdHJp
bmcgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZl
bnREYXRhVHJhbnNmZXIoKSBjb25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFyZWFPclRl
eHRJbnB1dCgpKQotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJpYWxpemVk
Tm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV90ZXh0LCBzZXJpYWxpemVGcmFn
bWVudCgqbV90ZXh0RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05v
ZGUpKTsKIAogICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFU
cmFuc2ZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCBlODBkZWMwNWY1MDQxMGZlYTBlZjVkOTUxZDdiMDRmMzMz
YTIxMjFjLi4wZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtMTMyNiw3ICsxMzI2LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogICAgIGlmIChpc0VkaXRp
bmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpOwogCi0gICAgcmV0dXJuIERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2RvY3VtZW50RnJhZ21lbnRQbGFpblRleHQsIG1fZG9j
dW1lbnRGcmFnbWVudEhUTUxNYXJrdXApOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0
ZUZvcklucHV0RXZlbnQoZG9jdW1lbnQoKSwgbV9kb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0LCBt
X2RvY3VtZW50RnJhZ21lbnRIVE1MTWFya3VwKTsKIH0KIAogYm9vbCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6c2hvdWxkUmVtb3ZlRW5kQlIoTm9kZSogZW5kQlIsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDdkYjNmOWI0NWQ4
YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UuLjM3MThhYTQ5MWVkNjZhYjgzZmI4MWQ3YjRi
ZjkzMDdkZGY0NWY1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMo
KSBjb25zdAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6
aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0VkaXRpbmdUZXh0
QXJlYU9yVGV4dElucHV0KCkpCi0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
cklucHV0RXZlbnQobV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9jb3JyZWN0aW9u
RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsKKyAgICAg
ICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChkb2N1bWVudCgpLCBt
X2NvcnJlY3Rpb24sIHNlcmlhbGl6ZUZyYWdtZW50KCptX2NvcnJlY3Rpb25GcmFnbWVudCwgU2Vy
aWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSkpOwogCiAgICAgcmV0dXJuIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAwMWY1M2RiYTAzYmVhYzc5N2Q3NmFh
OGFlNTY2ZDJmZDEyNWM4MjNkLi5mMzU4NzQzMjBiMTkwNTNlMTAwNmRiZTZlZjY2ZTc3ZmYzMzFh
Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQyNSw3
ICs0MjUsNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50
RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbFRleHQ7CiAgICAg
TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhodG1s
VGV4dCwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0LCAwLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQubGVu
Z3RoKCksIEVudGl0eU1hc2tJbkhUTUxQQ0RBVEEpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvcklucHV0RXZlbnQobV9jdXJyZW50VGV4dFRvSW5zZXJ0LCBodG1sVGV4dC50b1N0
cmluZygpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRv
Y3VtZW50KCksIG1fY3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmcoKSk7CiB9
CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRl
eCBmNjhhMDBlZmFlN2E3YmI0OTU4OWQwZmZlMjczMWJiZTZlODQyYjBjLi42NGRlOTFkM2U2YTg1
NDhhNTM2ZGQ5YTk0MzFiY2U5MmY4NGVkZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zNSwxMiArMzUs
MTIgQEAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjp+V2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6
cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgZmlsZXMuYXBwZW5k
KEZpbGU6OmNyZWF0ZShmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUo
c2Vzc2lvbklELCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxl
OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSksIGZpbGVuYW1lKSk7Cisg
ICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBidWZm
ZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCBmZTQ0NzZi
ZmYyZmI0NjA1MDZhMzc5Yjk0N2UxNGVlMGE4ZjAxNjVhLi5mYWU5YjA1MWFjNDI0Y2NlYTMyY2Vk
NjljMTlmNWRjZWM4M2Y4OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTMyLDExICszMiwxNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxlOwogCiBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgeworICAgIGV4cGxpY2l0IFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgICAg
IDogc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICB7CisgICAgfQorCiAgICAgfldlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKKyAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDcxNTljZDkyMzg1MTQyZTEyOTNmNTBmYWQ3ZWJjYTFlYzMzNDU3MzQu
LmExMzEzMDcxNGNkMzMwYTY2OGRkOGUwY2JmZDc2NzYzM2U4ODg4NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC0yNTksNyArMjU5LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgZnJhbWUu
ZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVV
bmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFt
ZSwgV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZv
cklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICBh
dXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAg
ICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZShi
dWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgp
LCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOwogICAgICAgICAgICAgaW1hZ2UtPnNldEF0
dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICAgICAgaWYgKHBy
ZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51
bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBS
ZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJh
bWUmIGZyYW1lLCBEb2N1CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShhdHRhY2htZW50KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250
ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNobWVudC0+
c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBi
dWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgfQog
ICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJh
bWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2luYWxFbGVt
ZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2Vu
dGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgaW1hZ2Ug
PSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpOwotICAg
ICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQo
KSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKKyAgICAgICAg
ICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJs
b2I6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBpbmZvLmRhdGEsIGlu
Zm8uY29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVs
ZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgp
LCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM3Myw3ICszNzMsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUu
ZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVV
bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5m
by5maWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RG
TW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZv
LmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0
ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShC
bG9iOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShpbmZv
LmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1l
KSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7
CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBX
VEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDE1LDcgKzQx
NSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IGJsb2JVUkxNYXA7CiAgICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291
cmNlPiYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAg
ICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJl
c291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGRv
Y3VtZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWlt
ZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZS0+
dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0
aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9IHN1YnJl
c291cmNlLT51cmwoKTsKICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8gYmxv
YiA9IEJsb2I6OmNyZWF0ZShzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5
cGUoKSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlvbkRvY3Vt
ZW50LnNlc3Npb25JRCgpLCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+bWltZVR5
cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
ZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJl
c291cmNlVVJMLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00OTEsNyArNDkxLDcgQEAg
c3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2JCdWZm
ZXI7CiAgICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3RoKCkpOwog
ICAgICAgICBibG9iQnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9i
OjpjcmVhdGUoV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CisgICAgICAgIGF1dG8gYmxvYiA9
IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlvbkRvY3VtZW50LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJs
b2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJhbWVCbG9iVVJMID0gRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAgICAgICAg
IGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmluZygpLCBzdWJmcmFtZUJsb2JVUkwpOwpA
QCAtNjg4LDcgKzY4OCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgaWYgKHNob3Vs
ZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAgICAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwgZG9jdW1lbnQsIFdURk1v
dmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIGVsc2UK
LSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChkb2N1bWVu
dCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZShidWZmZXIu
Z2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgICAgICBhZGRG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgp
LCBidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAg
ICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzA5LDcgKzcwOSw3IEBAIHN0YXRpYyBSZWY8SFRN
TEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRN
TE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CiAgICAgaWYgKCFzdXBwb3J0c0NsaWVu
dFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0Rmls
ZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxh
eUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3Jl
YXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50
OwogICAgIH0KIApAQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0
dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgcGF0aCwKIAog
ICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9u
KGNvbnRlbnRUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChk
b2N1bWVudCwgRmlsZTo6Y3JlYXRlKHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lvbklEKCks
IHBhdGgpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0
dGFjaG1lbnQpKTsKICAgICAgICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAg
ICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Ondp
ZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CkBAIC03
NjUsNyArNzY1LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEo
RnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KICAgICAgICAgZmlsZU5hbWUg
PSBuYW1lOwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFt
ZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOworICAgICAg
ICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQt
PnNlc3Npb25JRCgpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmlsZU5hbWUp
KTsKICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03NzMsNyArNzczLDcg
QEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1l
LCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFi
bGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGF0dGFjaG1lbnRUeXBlKSkgewogICAgICAg
ICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpz
cmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKEJs
b2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxl
TmFtZSkpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQs
IEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCBidWZmZXIs
IFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkpKSk7CiAgICAgICAg
IGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAg
ICAgaWYgKHByZWZlcnJlZFNpemUud2lkdGgpCiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmlu
Zzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKaW5kZXggMjAzY2M0N2FhNmQ2ZjU0MTQ4N2Y1NGE0NjY5ODMyZjNiNWRmNTc1ZS4uZmI0Mzcx
NjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcApAQCAtOTgzLDkgKzk4Myw5IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVBdHRhY2htZW50
RWxlbWVudHNJbkZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQogICAgICAgICBh
dXRvIGF0dGFjaG1lbnRQYXRoID0gYXR0YWNobWVudC0+YXR0YWNobWVudFBhdGgoKTsKICAgICAg
ICAgYXV0byBibG9iVVJMID0gYXR0YWNobWVudC0+YmxvYlVSTCgpOwogICAgICAgICBpZiAoIWF0
dGFjaG1lbnRQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKGF0dGFjaG1lbnRQYXRoKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBhdHRh
Y2htZW50UGF0aCkpOwogICAgICAgICBlbHNlIGlmICghYmxvYlVSTC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmRlc2VyaWFsaXplKHsgfSwgYmxvYlVS
TCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgYXR0YWNobWVudC0+YXR0YWNobWVudFRp
dGxlKCkpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6ZGVzZXJpYWxp
emUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgeyB9LCBibG9iVVJMLCBhdHRhY2ht
ZW50LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkpOwog
CiAgICAgICAgIC8vIFJlbW92ZSB0ZW1wb3JhcnkgYXR0cmlidXRlcyB0aGF0IHdlcmUgcHJldmlv
dXNseSBhZGRlZCBpbiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9tQXR0cmli
dXRlcy4KICAgICAgICAgYXR0YWNobWVudC0+cmVtb3ZlQXR0cmlidXRlKHdlYmtpdGF0dGFjaG1l
bnRpZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMTRjNTE3MmI3ZTk1NDIzZGFj
YTI4ZDU0ZmY1ZGJkNmYzY2NhZWU5OC4uOGRhYTBjMTFjNmZkOTIxMzk2ZmQ1NzgxMzljN2JjMDM3
ZGZjNWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC00OCwyMiArNDgsMjIgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2IpOwogCiBjbGFzcyBCbG9iVVJMUmVnaXN0cnkg
ZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmLCBVUkxSZWdp
c3RyYWJsZSYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0cnkmIHJl
Z2lzdHJ5KCk7CiB9OwogCiAKLXZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUm
IGJsb2IpCit2b2lkIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBi
bG9iKQogewogICAgIEFTU0VSVCgmYmxvYi5yZWdpc3RyeSgpID09IHRoaXMpOwotICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChvcmlnaW4sIHB1YmxpY1VSTCwgc3Rh
dGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZXNzaW9uSUQoKSwgY29udGV4dC5zZWN1cml0eU9y
aWdpbigpLCBwdWJsaWNVUkwsIHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwoKSk7CiB9CiAK
LXZvaWQgQmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQordm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1cmwpOwogfQogCiBVUkxSZWdpc3Ry
eSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC03MiwxOSArNzIsMjIgQEAgVVJMUmVn
aXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvcikKK0Jsb2I6OkJsb2IoVW5p
bml0aWFsaXplZENvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKIH0KIAotQmxvYjo6QmxvYigpCi0gICAgOiBtX3NpemUo
MCkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQorICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJs
b2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CisgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJM
LCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAg
ICA6IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJs
b2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAg
OiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHBy
b3BlcnR5QmFnLnR5cGUpKQogICAgICwgbV9zaXplKC0xKQogewpAQCAtOTcsMTEgKzEwMCwxMiBA
QCBCbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywg
Y29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcgogICAgICAgICApOwogICAgIH0KIAotICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVy
LmZpbmFsaXplKCksIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCks
IG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgOiBtX3R5cGUoY29udGVudFR5cGUpCitCbG9i
OjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCisgICAgLCBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUo
KSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKQEAgLTExMCw0OSArMTE0LDUzIEBAIEJs
b2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRzLmFw
cGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JV
Ukw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5
cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Np
b25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9
CiAKLUJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKK0Jsb2I6OkJsb2IoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV90eXBlKGNv
bnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQogewogICAgIFZlY3RvcjxCbG9i
UGFydD4gYmxvYlBhcnRzOwogICAgIGJsb2JQYXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92ZShk
YXRhKSkpOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgp
OwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFs
VVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5j
aW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImIGJsb2IpCi0gICAgOiBtX2lu
dGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCisgICAgOiBtX3Nlc3Npb25J
RChibG9iLm1fc2Vzc2lvbklEKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpKQogICAgICwgbV90eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJs
b2Iuc2l6ZSgpKQogewotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOworICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9p
bnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAotQmxv
Yjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCkKLSAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CisgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXpl
KHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7CiAgICAgaWYgKGZpbGVCYWNrZWRQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNy
Y1VSTCk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCht
X3Nlc3Npb25JRCwgbnVsbHB0ciwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKICAgICBlbHNlCi0g
ICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSk7
CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNr
ZWRQYXRoLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICA6IG1f
dHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQorICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6
ZSgtMSkgLy8gc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQuCiB7
CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobV9pbnRlcm5h
bFVSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJM
LCBzdGFydCwgZW5kKTsKIH0KIAogQmxvYjo6fkJsb2IoKQogewotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOworICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFs
VVJMKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAppbmRleCBjZGM4ODk1Zjk2ZTAxZTJjNTQwZDk3NjBhMzljOTMwYzg4YTAyMWVj
Li5lNjM2ZjJkMmRmY2U3YzQwYTE5M2EzMTkxOTYzMjAzMDhlNzJhNjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtMzIsMTAgKzMyLDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJs
b2JQcm9wZXJ0eUJhZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTQsMzAgKzU2LDMwIEBAIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCCiBjbGFzcyBC
bG9iIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJs
aWMgUmVmQ291bnRlZDxCbG9iPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQo
QmxvYiwgV0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3Jl
YXRlKCkKKyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihzZXNzaW9uSUQpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFy
aWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJl
ZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJs
b2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcm
IHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihX
VEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYlBhcnRW
YXJpYW50cyksIHByb3BlcnR5QmFnKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoYnVmZmVyLCBjb250ZW50
VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKHNlc3Npb25JRCwgYnVm
ZmVyLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAg
c3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKHNlc3Npb25JRCwgV1RGTW92ZShk
YXRhKSwgY29udGVudFR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2Vy
aWFsaXplKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBz
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIHN0YXRpYyBSZWY8QmxvYj4g
ZGVzZXJpYWxpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFj
a2VkUGF0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50
VHlwZSh0eXBlKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxp
emF0aW9uQ29udHJ1Y3Rvciwgc3JjVVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0
b3IsIHNlc3Npb25JRCwgc3JjVVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKQEAgLTEwMiwyNyArMTA0LDI4IEBAIHB1YmxpYzoK
IAogICAgIFJlZjxCbG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQgPSAwLCBsb25nIGxvbmcgZW5k
ID0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSA9IFN0cmluZygpKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iKG1fc2Vzc2lvbklELCBtX2ludGVybmFs
VVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IFdFQkNPUkVfRVhQT1JUIEJsb2IoKTsKLSAgICBCbG9iKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+
JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJsb2IoY29uc3QgU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgQmxvYihWZWN0b3I8dWludDhfdD4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQmxvYihQQUw6OlNlc3Npb25JRCk7CisgICAgQmxvYihQQUw6OlNlc3Npb25JRCwgVmVjdG9y
PEJsb2JQYXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7CisgICAgQmxvYihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgQmxvYihQQUw6OlNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2luZ0V4aXN0aW5nQmxv
YkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB9OwogICAg
IEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYpOwog
CiAgICAgZW51bSBVbmluaXRpYWxpemVkQ29udHJ1Y3RvciB7IHVuaW5pdGlhbGl6ZWRDb250cnVj
dG9yIH07Ci0gICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3Rvcik7CisgICAgQmxvYihVbmlu
aXRpYWxpemVkQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgZW51bSBEZXNlcmlh
bGl6YXRpb25Db250cnVjdG9yIHsgZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB9OwotICAgIEJs
b2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgp
OworICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKIAogICAgIC8vIEZvciBzbGljaW5nLgotICAgIEJs
b2IoY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CiAKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICAv
LyBUaGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZp
ZXIgZm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJj
ZSB0aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFk
J2luZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5pZGwKaW5kZXggNjlkMGYxNTVhZDQ3OThkN2U2NmI0MDhkMmRiZWM2
ODIwYzZlZGRlYi4uYWU1NTJhOTU2ZjM1M2MwZTQyY2EyZDUxNTdmNTU0MDQxZTUxYTUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaWRsCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgKEJ1ZmZlclNv
dXJjZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgQ29uc3RydWN0b3Iob3B0aW9u
YWwgc2VxdWVuY2U8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgb3B0aW9uYWwgQmxvYlByb3BlcnR5QmFn
IG9wdGlvbnMpLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwKIF0gaW50ZXJmYWNlIEJsb2IgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxvbmcgc2l6ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCAxODNkYTdhMGUwNDZmMmMzOTFlZWJmNjQ0MTVlNmM2
NjY5NDE5NzkzLi5hYTgxMjIwNjU5ZTQwYWU1Yjg2MjliYzM4ZTU0NjExMzYzZjg3OTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTM5LDM1ICszOSwzNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChGaWxlKTsKIAotUmVmPEZpbGU+IEZp
bGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlUGF0aCkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlUGF0aCkKIHsKLSAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCk7
CisgICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKHNlc3Npb25JRCwgcGF0aCk7CiAgICAgZmls
ZS0+c2V0UmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCk7CiAgICAgcmV0dXJuIGZpbGU7CiB9CiAK
LUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxvYih1bmluaXRpYWxpemVk
Q29udHJ1Y3RvcikKK0ZpbGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHBhdGgpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBzZXNzaW9u
SUQpCiAgICAgLCBtX3BhdGgocGF0aCkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBtX3NpemUgPSAtMTsKICAgICBjb21wdXRlTmFtZUFu
ZENvbnRlbnRUeXBlKG1fcGF0aCwgU3RyaW5nKCksIG1fbmFtZSwgbV90eXBlKTsKLSAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBh
dGgsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKIH0KIAotRmls
ZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQot
ICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvcikKK0ZpbGU6OkZpbGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlKQorICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3Rvciwgc2Vzc2lvbklEKQog
ICAgICwgbV9wYXRoKHBhdGgpCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0
ZUludGVybmFsVVJMKCk7CiAgICAgbV9zaXplID0gLTE7CiAgICAgY29tcHV0ZU5hbWVBbmRDb250
ZW50VHlwZShtX3BhdGgsIG5hbWVPdmVycmlkZSwgbV9uYW1lLCBtX3R5cGUpOwotICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0
aCwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9i
VVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBwYXRoLCBtX3R5cGUpOwogfQogCi1GaWxl
OjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKQotICAgIDogQmxvYihkZXNlcmlhbGl6
YXRpb25Db250cnVjdG9yLCB1cmwsIHR5cGUsIC0xLCBwYXRoKQorRmlsZTo6RmlsZShEZXNlcmlh
bGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKQorICAgIDogQmxv
YihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNzaW9uSUQsIHVybCwgdHlwZSwgLTEsIHBh
dGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9sYXN0
TW9kaWZpZWREYXRlT3ZlcnJpZGUobGFzdE1vZGlmaWVkKQpAQCAtODEsOCArODEsOCBAQCBzdGF0
aWMgQmxvYlByb3BlcnR5QmFnIGNvbnZlcnRQcm9wZXJ0eUJhZyhjb25zdCBGaWxlOjpQcm9wZXJ0
eUJhZyYgaW5pdGlhbEJhZykKICAgICByZXR1cm4gYmFnOwogfQogCi1GaWxlOjpGaWxlKFZlY3Rv
cjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogQmxvYihXVEZNb3Zl
KGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQorRmls
ZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRW
YXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICA6IEJsb2IoY29udGV4dC5zZXNzaW9uSUQo
KSwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5QmFnKHByb3BlcnR5
QmFnKSkKICAgICAsIG1fbmFtZShmaWxlbmFtZSkKICAgICAsIG1fbGFzdE1vZGlmaWVkRGF0ZU92
ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxUaW1lOjpub3coKS5z
ZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgK
aW5kZXggYjI5YjA4YTg4Nzk1OGVkNzQ2MWFhYzE0OWZmMjYzOGJjZDM1MWM0Yy4uY2I4YTUwN2Jm
M2RmNjZkM2I4YjNmNDU4Y2I3NTZiY2Q0MWYzZGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAg
LTQxLDI4ICs0MSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IGxhc3RN
b2RpZmllZDsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShwYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUo
c2Vzc2lvbklELCBwYXRoKSk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1c2luZyB0
aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KLSAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShW
ZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICBzdGF0aWMgUmVm
PEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8Qmxv
YlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgZmlsZW5hbWUsIHBy
b3BlcnR5QmFnKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoY29udGV4dCwg
V1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgZmlsZW5hbWUsIHByb3BlcnR5QmFnKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkK
KyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9k
aWZpZWQgPSBXVEY6Om51bGxvcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGaWxlKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFt
ZSwgbGFzdE1vZGlmaWVkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5h
bWUsIGxhc3RNb2RpZmllZCkpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBh
IG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVk
IERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGluIHRo
ZSBwYXRoLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKKyAgICBzdGF0aWMgUmVmPEZpbGU+
IGNyZWF0ZVdpdGhOYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKICAgICB7CiAgICAgICAgIGlmIChuYW1l
T3ZlcnJpZGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmls
ZShwYXRoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUocGF0aCwgbmFtZU92
ZXJyaWRlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHNlc3Npb25J
RCwgcGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHNlc3Npb25JRCwg
cGF0aCwgbmFtZU92ZXJyaWRlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVh
dGUoY29uc3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmlsZSwgbmFtZSkp
OwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKTsKKyAgICBzdGF0
aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAgICAgYm9vbCBp
c0ZpbGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTk1LDEzICs5NSwx
MyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAg
ICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpOwot
ICAgIEZpbGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZpbGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCk7Cisg
ICAgRmlsZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWVPdmVycmlkZSk7CisgICAgRmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9y
PEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOwogICAgIEZpbGUoY29uc3QgQmxvYiYsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAgICAgRmlsZShjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAotICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOworICAgIEZpbGUoRGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAogICAgIHN0YXRp
YyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVm
ZmVjdGl2ZUNvbnRlbnRUeXBlKTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuaWRsCmluZGV4IDRjZjU0N2UxYzM2Yzk0ZmM1NzZhODExZTIwNzUzYzE1NmQy
MDlhZTQuLmJmNzZkY2RmNDAwNDI2NzMzMTAzYzIxYzNlZGY3MDQ1ZmQ1MDRlNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmlkbApAQCAtMjgsNiArMjgsNyBAQCB0eXBlZGVmIChCdWZmZXJTb3VyY2Ug
b3IgQmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGV4cG9zZWQgb24gV29ya2VycyBhcyB3ZWxsLgogWwogICAgIENvbnN0cnVjdG9yKHNlcXVlbmNl
PEJsb2JQYXJ0PiBmaWxlQml0cywgVVNWU3RyaW5nIGZpbGVOYW1lLCBvcHRpb25hbCBGaWxlUHJv
cGVydHlCYWcgb3B0aW9ucyksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9
KFdpbmRvdyksCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA4OTcxNTVhMTIyOTFkYzRlNTM1MjM0ZTA4
OGE4YzQyZWZhMDliNWE3Li42YzZjOTE4NjU5MDM3NjE1M2Q5MGFiY2ZlNjdjNWQzNzZiYWRiNjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgRmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogewogICAg
IHRlcm1pbmF0ZSgpOwogICAgIGlmICghbV91cmxGb3JSZWFkaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV91cmxGb3JSZWFk
aW5nKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwo
bV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
QmxvYiYgYmxvYikKQEAgLTgxLDcgKzgxLDggQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAg
ICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9i
LnVybCgpKTsKKyAgICBtX3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlc3Np
b25JRCgpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nl
c3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxG
b3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUg
cmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA3YTQyOGJlNTA1
N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVhMjllMDBhLi40NGFkNmM4NmRmZWI2MzRiNTU5OGM4OGIx
Y2I2ZjZhNWJjMmM2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4g
bV9sb2FkZXI7CiAKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5k
ZXggNWJjOWJhZjc4Mjc5NmJhNDMzZDdlODI5YzEwYWY2NzcxN2FhNDM5MC4uMTc4YmM2YmRkZmVm
N2ZmNDUxZDIyZGJiM2IzYWUyNjcwYmNlODBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC04MSw2MCArODEsNjAgQEAgc3Rh
dGljIHZvaWQgcG9zdFRvTWFpblRocmVhZChDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogICAgIH0p
OwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgp
KQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENv
cHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29w
eSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlw
ZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJG
aWxlQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUo
cGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9y
PEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0
cyksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICBl
bHNlIHsKICAgICAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRzKQogICAgICAgICAgICAg
cGFydC5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUo
YmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25J
RCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgfSk7CiAg
ICAgfQogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwp
Cit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICAvLyBJZiB0aGUgYmxvYiBVUkwgY29udGFpbnMgbnVs
bCBvcmlnaW4sIGFzIGluIHRoZSBjb250ZXh0IHdpdGggdW5pcXVlIHNlY3VyaXR5IG9yaWdpbiBv
ciBmaWxlIFVSTCwgc2F2ZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHVybCBhbmQgb3JpZ2luIHNvIHRo
YXQgdGhlIG9yaWdpbiBjYW4gYmUgcmV0cml2ZWQgd2hlbiBkb2luZyBzZWN1cml0eSBvcmlnaW4g
Y2hlY2suCiAgICAgaWYgKG9yaWdpbiAmJiBCbG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAibnVs
bCIpCiAgICAgICAgIG9yaWdpbk1hcCgpLT5hZGQodXJsLnN0cmluZygpLCBvcmlnaW4pOwogCiAg
ICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwodXJsLCBzcmNVUkwpOworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
Ukwoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwo
dXJsLCBzcmNVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmws
IHNyY1VSTCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJl
YWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVC
YWNrZWRQYXRoKSwgY29udGVudFR5cGUpOworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsK
ICAgICBlbHNlCi0gICAgICAgIHBvc3RUb01haW5UaHJlYWQoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIGNvbnRlbnRUeXBlKSk7CisgICAgICAg
IHBvc3RUb01haW5UaHJlYWQoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkLCBzZXNzaW9uSUQsIHVy
bCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgY29udGVudFR5cGUpKTsKIH0KIAotdm9pZCBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIG5l
d1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkK
K3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNV
UkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKICAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5l
d1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCBuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW25ld1VSTCA9IG5ld1VSTC5p
c29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwgZW5k
XSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShu
ZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nl
c3Npb25JRCwgbmV3VVJMID0gbmV3VVJMLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwu
aXNvbGF0ZWRDb3B5KCksIHN0YXJ0LCBlbmRdIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0
LCBlbmQpOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC0xNTUsMTYgKzE1NSwxNiBAQCB1bnNp
Z25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJM
JiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09
ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogCiAg
ICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVy
QmxvYlVSTCh1cmwpOworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChz
ZXNzaW9uSUQsIHVybCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Vy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5y
ZWdpc3RlckJsb2JVUkwodXJsKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklE
LCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsKTsKICAgICAgICAgfSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApp
bmRleCBhOWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4zMTVmNWNhZGI0
NjYzODk4MGI0YzFmZDhlYzViNjdkYmUzZTQxMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsMTIgKzQwLDEyIEBAIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsK
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpOwotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNv
bnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKaW5kZXggMGEwOGI1OTQ2ODY1NzMyZjI4
ZGEzMGZiN2Y2M2NhNGQzMTRlYTkxNy4uNDAyMmRhMTY3ZjA4OGZmYmY1NDFiNDkxMDEzMDJhZjlk
MGE3Yzg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmlu
ZyBET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBVCiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQucHVibGljVVJM
TWFuYWdlcigpLnJlZ2lzdGVyVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKSwgcHVibGljVVJMLCByZWdpc3RyYWJsZSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5wdWJsaWNVUkxNYW5hZ2VyKCkucmVnaXN0ZXJVUkwocHVibGljVVJMLCByZWdpc3RyYWJsZSk7
CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKaW5kZXggYWZjMjU4ODM5MTIyNzM4ZDc2ZjA0ZjZiOTBhY2NhOTE3ZjFj
MzkyZC4uN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBGaWxl
SW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShET01Gb3JtRGF0YSYgZm9ybURhdGEsIGJvb2wgbXVs
dGlwYXJ0KSBjb25zdAogICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBpcyBlbnRlcmVkLCBy
ZXR1cm4gc3VjY2Vzc2Z1bCBidXQgZW1wdHkuCiAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxv
Z2ljYWwsIGJ1dCBOZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgogICAgIGlmIChm
aWxlTGlzdC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBGaWxl
OjpjcmVhdGUoZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwg
RmlsZTo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgZW1wdHlTdHJp
bmcoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQxNCw3ICs0MTQsNyBA
QCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3Nl
ckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAKICAgICBhdXRvIHNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcyA9IGFsbG93c0RpcmVjdG9yaWVzKCkgPyBGaWxlTGlzdENyZWF0b3I6OlNob3VsZFJlc29s
dmVEaXJlY3Rvcmllczo6WWVzIDogRmlsZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXM6Ok5vOwogICAgIGF1dG8gc2hvdWxkUmVxdWVzdEljb24gPSBpY29uID8gUmVxdWVzdElj
b246OlllcyA6IFJlcXVlc3RJY29uOjpObzsKLSAgICBtX2ZpbGVMaXN0Q3JlYXRvciA9IEZpbGVM
aXN0Q3JlYXRvcjo6Y3JlYXRlKHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIFt0aGlz
LCBzaG91bGRSZXF1ZXN0SWNvbl0oUmVmPEZpbGVMaXN0PiYmIGZpbGVMaXN0KSB7CisgICAgbV9m
aWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShlbGVtZW50KCktPmRvY3Vt
ZW50KCkuc2Vzc2lvbklEKCksIHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIFt0aGlz
LCBzaG91bGRSZXF1ZXN0SWNvbl0oUmVmPEZpbGVMaXN0PiYmIGZpbGVMaXN0KSB7CiAgICAgICAg
IHNldEZpbGVzKFdURk1vdmUoZmlsZUxpc3QpLCBzaG91bGRSZXF1ZXN0SWNvbik7CiAgICAgICAg
IG1fZmlsZUxpc3RDcmVhdG9yID0gbnVsbHB0cjsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCAxNTU2ZmMyOTljYjIzNzNiMGM1OTg5NTIwYTcyYzMx
MTZjZTM5ZWE1Li5jNzU2MDU2NzdkZGE0NjNmM2FhMDY5MDg0NjYwMmZmZTJlOWM1N2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEZp
bGVMaXN0Q3JlYXRvcjo6fkZpbGVMaXN0Q3JlYXRvcigpCiAgICAgQVNTRVJUKCFtX2NvbXBsZXRp
b25IYW5kZXIpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxSZWY8
RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7CiAg
ICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVj
dG9yeSwgIioiKSkgewogICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhKGNoaWxkUGF0aCk7CkBAIC01MSwyMiArNTEsMjIgQEAgc3RhdGljIHZvaWQgYXBwZW5k
RGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVs
YXRpdmUKIAogICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGgg
KyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKTsKICAgICAgICAg
aWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9y
eSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0aCwgY2hpbGRSZWxh
dGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVz
KHNlc3Npb25JRCwgY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCwgZmlsZU9iamVjdHMpOwog
ICAgICAgICBlbHNlIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgoY2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkpOworICAgICAgICAg
ICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoc2Vzc2lv
bklELCBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoKSk7CiAgICAgfQogfQogCi1GaWxlTGlz
dENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorRmlsZUxpc3RDcmVh
dG9yOjpGaWxlTGlzdENyZWF0b3IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMg
c2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgPT0gU2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzOjpObykKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlRmls
ZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObz4ocGF0aHMpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpO
bz4oc2Vzc2lvbklELCBwYXRocykpOwogICAgIGVsc2UgewogICAgICAgICAvLyBSZXNvbHZlIGRp
cmVjdG9yaWVzIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1h
aW4gdGhyZWFkLgogICAgICAgICBtX2NvbXBsZXRpb25IYW5kZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICAgICAgbV93b3JrUXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiRmls
ZUxpc3RDcmVhdG9yIFdvcmsgUXVldWUiKTsKLSAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJl
YWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZUxpc3QgPSBj
cmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Olllcz4ocGF0aHMpOworICAg
ICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc2Vzc2lvbklELCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxpc3Q8U2hvdWxk
UmVzb2x2ZURpcmVjdG9yaWVzOjpZZXM+KHNlc3Npb25JRCwgcGF0aHMpOwogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGZpbGVMaXN0ID0gV1RGTW92ZShmaWxlTGlzdCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGVyKSkKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRlcihXVEZNb3ZlKGZp
bGVMaXN0KSk7CkBAIC03NiwxNCArNzYsMTQgQEAgRmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENy
ZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWwKIH0K
IAogdGVtcGxhdGU8RmlsZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzPgotUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNy
ZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCitS
ZWY8RmlsZUxpc3Q+IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3QoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQog
ewogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVPYmplY3RzOwogICAgIGZvciAoYXV0byYgaW5m
byA6IHBhdGhzKSB7CiAgICAgICAgIGlmIChzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgPT0gU2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgJiYgRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5
KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQot
ICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBw
ZW5kRGlyZWN0b3J5RmlsZXMoc2Vzc2lvbklELCBpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhH
ZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgs
IGluZm8uZGlzcGxheU5hbWUpKTsKKyAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxl
OjpjcmVhdGVXaXRoTmFtZShzZXNzaW9uSUQsIGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkp
OwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3Rz
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaAppbmRleCAzMWM3NGNmZjFk
YTI0MzUyNTM0MDMzYzgyMzQwMWM2NjZlNWY3YThkLi4yNmI0YjJhYWEwZjQzNjVkNDk4NTlmNDQw
MDBhMTc1MGM1YWExNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0
Q3JlYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00MSw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYp
PjsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHsgTm8sIFllcyB9
OwotICAgIHN0YXRpYyBSZWY8RmlsZUxpc3RDcmVhdG9yPiBjcmVhdGUoY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICBzdGF0aWMgUmVmPEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGVMaXN0Q3JlYXRvcihwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVz
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGaWxlTGlzdENyZWF0b3Ioc2Vzc2lvbklELCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVj
dG9yaWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5GaWxl
TGlzdENyZWF0b3IoKTsKQEAgLTUxLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIAogcHJpdmF0ZToKLSAgICBGaWxlTGlzdENyZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0
aW9uSGFuZGxlciYmKTsKKyAgICBGaWxlTGlzdENyZWF0b3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcywgQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB0ZW1wbGF0ZTxTaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzPgotICAgIHN0YXRpYyBSZWY8Rmls
ZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYp
OworICAgIHN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKTsKIAogICAgIFJlZlB0cjxXb3Jr
UXVldWU+IG1fd29ya1F1ZXVlOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCBmY2ZhNzg0YTA1Y2Q1MDU1YjE4ZTM2ZGI1ODk4YmU3MGFkZjcyNjExLi4yNTBmYjc3NzQ1
Mjg1ZDVkNTc3NDg4MzZkOTZhOTZmZTUxNzcxMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdl
QXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwg
RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50KCkuc2Vzc2lvbklEKCksIFdURk1v
dmUoZGF0YSksIG1pbWVUeXBlKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDM0YTkzMTA0ODA2OWUw
NzMxYTk4MTBkNGQyYWE1MGRjYjk3YTdjZDguLmE5YmI0ZmI4ZTA2M2U3MDE1ZjFhNjRlN2Q4NmZl
YjM1OGZmYzI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CkBAIC03MzksNyArNzM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6
OnRvQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVm
UHRyPEJsb2I+IGJsb2I7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEo
KmltYWdlRGF0YSwgZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxv
YkRhdGEuaXNFbXB0eSgpKQotICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3Zl
KGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0gQmxvYjo6
Y3JlYXRlKGNvbnRleHQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01J
TUVUeXBlKTsKICAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RG
TW92ZShibG9iKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNzUwLDcgKzc1MCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJsb2JEYXRhID0gYnVmZmVyKCktPnRvRGF0YShlbmNvZGluZ01JTUVU
eXBlLCBxdWFsaXR5KTsKICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgYmxv
YiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7Cisg
ICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShi
bG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOwogICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxi
YWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4ODVjYjU0YzU5YmVhZDU0YTVi
Y2ZjZTMwOGFiN2E5ZWMxNWRmYjQzLi45ZTU5N2QyZjAxYTliZWI2NTI4YWM2N2Q2NGI1NmVmNGI2
YzAyMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE0
NCw3ICsxNDQsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiRE9NVVJM
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVJlZ2lz
dHJ5LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAt
MTU4Myw3ICsxNTgyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29u
c3QgVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKIAogICAgIGlmIChtX21l
ZGlhU291cmNlKSB7CiAgICAgICAgIGxvYWRBdHRlbXB0ZWQgPSB0cnVlOwotICAgICAgICAKKwog
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJsb2FkaW5nIE1TRSBibG9iIik7CiAg
ICAgICAgIGlmICghbV9tZWRpYVNvdXJjZS0+YXR0YWNoVG9FbGVtZW50KCp0aGlzKSB8fCAhbV9w
bGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwgbV9tZWRpYVNvdXJjZS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIC8vIEZvcmdldCBvdXIgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYVNvdXJjZSwgc28g
d2UgbGVhdmUgaXQgYWxvbmUKQEAgLTE1OTQsMjAgKzE1OTMsNiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBj
b250ZW50VAogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBp
ZiAoIWxvYWRBdHRlbXB0ZWQpIHsKLSAgICAgICAgaWYgKCFtX21lZGlhU3RyZWFtU3JjT2JqZWN0
ICYmIHVybC5wcm90b2NvbElzKG1lZGlhU3RyZWFtQmxvYlByb3RvY29sKSkKLSAgICAgICAgICAg
IG1fbWVkaWFTdHJlYW1TcmNPYmplY3QgPSBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpzaGFyZWQoKS5s
b29rVXAodXJsKTsKLQotICAgICAgICBpZiAobV9tZWRpYVN0cmVhbVNyY09iamVjdCkgewotICAg
ICAgICAgICAgbG9hZEF0dGVtcHRlZCA9IHRydWU7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJsb2FkaW5nIG1lZGlhIHN0cmVhbSBibG9iIik7Ci0gICAgICAgICAgICBp
ZiAoIW1fcGxheWVyLT5sb2FkKG1fbWVkaWFTdHJlYW1TcmNPYmplY3QtPnByaXZhdGVTdHJlYW0o
KSkpCi0gICAgICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3Jt
YXRFcnJvcik7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICghbG9hZEF0dGVt
cHRlZCAmJiBtX2Jsb2IpIHsKICAgICAgICAgbG9hZEF0dGVtcHRlZCA9IHRydWU7CiAgICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImxvYWRpbmcgZ2VuZXJpYyBibG9iIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3M2I1NDczNTc4ZTNiMGIz
MWVhZjk1ZGE0MGMyMGFjMDk5YzA3MzY3Li43YmViYzdhMTBjY2JlZDUzY2ZlOGNhZjhhMDdjNzhl
NmM1NzlkNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAg
LTI2LDggKzI2LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VS
TE1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvVVJMLmg+CisKICNpbmNsdWRlICJVUkxSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDEzICs0NiwxMyBAQCBQdWJsaWNVUkxN
YW5hZ2VyOjpQdWJsaWNVUkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiB7CiB9CiAKLXZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlJiByZWdpc3RyYWJsZSkK
K3ZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIFVSTFJl
Z2lzdHJhYmxlJiByZWdpc3RyYWJsZSkKIHsKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFJlZ2lzdHJ5VVJMTWFwOjppdGVyYXRvciBmb3VuZCA9IG1fcmVnaXN0
cnlUb1VSTC5hZGQoJnJlZ2lzdHJhYmxlLnJlZ2lzdHJ5KCksIFVSTFNldCgpKS5pdGVyYXRvcjsK
LSAgICBmb3VuZC0+a2V5LT5yZWdpc3RlclVSTChvcmlnaW4sIHVybCwgcmVnaXN0cmFibGUpOwor
ICAgIGZvdW5kLT5rZXktPnJlZ2lzdGVyVVJMKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVy
bCwgcmVnaXN0cmFibGUpOwogICAgIGZvdW5kLT52YWx1ZS5hZGQodXJsLnN0cmluZygpKTsKIH0K
IApAQCAtNTksNyArNjAsNyBAQCB2b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnJldm9rZShjb25zdCBV
UkwmIHVybCkKIHsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJ5IDogbV9yZWdpc3RyeVRvVVJMKSB7
CiAgICAgICAgIGlmIChyZWdpc3RyeS52YWx1ZS5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7Ci0g
ICAgICAgICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJVUkwodXJsKTsKKyAgICAgICAgICAg
IHJlZ2lzdHJ5LmtleS0+dW5yZWdpc3RlclVSTCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1
cmwpOwogICAgICAgICAgICAgcmVnaXN0cnkudmFsdWUucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIFB1Ymxp
Y1VSTE1hbmFnZXI6OnN0b3AoKQogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBmb3IgKGF1
dG8mIHJlZ2lzdHJ5IDogbV9yZWdpc3RyeVRvVVJMKSB7CiAgICAgICAgIGZvciAoYXV0byYgdXJs
IDogcmVnaXN0cnkudmFsdWUpCi0gICAgICAgICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJV
UkwoVVJMKHsgfSwgdXJsKSk7CisgICAgICAgICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJV
UkwoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVVJMKHsgfSwgdXJsKSk7CiAgICAgfQogCiAg
ICAgbV9yZWdpc3RyeVRvVVJMLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFu
YWdlci5oCmluZGV4IGU2OWRlNGVkOGM4M2JiOGE4ZGM0ZDM2Njg2MjJjZDNmZGQ1MzdlNzUuLjli
ZmU3M2U2MjgwYjk0NGM2NWQwZGRkODExYzZmMTdhNzQyMTlmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgVVJMUmVnaXN0cnk7CiBjbGFzcyBVUkxSZWdpc3RyYWJsZTsKQEAgLTQ1LDcg
KzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQdWJsaWNVUkxN
YW5hZ2VyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgdm9pZCByZWdp
c3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJik7Cisg
ICAgdm9pZCByZWdpc3RlclVSTChjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSYpOwogICAgIHZv
aWQgcmV2b2tlKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3Ry
eS5oCmluZGV4IDgyMjNiYmQwNzU5MGRkYWNjZTlmZDE2MDRlM2FjMGJjMDE1ZjY0YWUuLmUzZGM0
NmE5ZTkyNzQxMDEwZjRhN2NiMmM1YmNmMDY2ZTdhMjRmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJl
Z2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBV
UkxSZWdpc3RyeTsKIAogY2xhc3MgVVJMUmVnaXN0cmFibGUgewpAQCAtNDcsOCArNDcsOCBAQCBj
bGFzcyBVUkxSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+VVJMUmVnaXN0cnkoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgVVJMJiwgVVJMUmVnaXN0cmFibGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYpID0gMDsKIAogICAgIC8v
IFRoaXMgaXMgYW4gb3B0aW9uYWwgQVBJCiAgICAgdmlydHVhbCBVUkxSZWdpc3RyYWJsZSogbG9v
a3VwKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAw
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggOGI5MWUxYzMy
NGQ3OGU3MTVlOGRlN2Y3NzhmNDM4YmNjZGNhOGNjZS4uNTM2MzcwM2I4Y2I0M2MyYmQ5MzAwZmI2
NWE5NzQ0ZjQ4NWRkZWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cApAQCAtMTA2LDEwICsxMDYsMTEgQEAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgUG9s
aWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoUmUKIAogICAgIC8v
IENyZWF0ZSBhIG5ldyB0ZW1wb3JhcnkgYmxvYlVSTCBpbiBjYXNlIHRoaXMgb25lIGdldHMgcmV2
b2tlZCBkdXJpbmcgdGhlIGFzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4K
ICAgICBVUkwgdGVtcG9yYXJ5QmxvYlVSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTCgmbV9m
cmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCwgcmVxdWVzdC51cmwoKSk7CisgICAgYXV0
byBzZXNzaW9uSUQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNlc3Npb25JRCgpOworICAgIGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwsIHJl
cXVlc3QudXJsKCkpOwogICAgIHJlcXVlc3Quc2V0VVJMKHRlbXBvcmFyeUJsb2JVUkwpOwotICAg
IHJldHVybiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KFt0ZW1wb3JhcnlCbG9iVVJMID0gV1RG
TW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lz
dGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKKyAgICByZXR1cm4gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3Jh
cnlCbG9iVVJMKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChz
ZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYjk3YThkNWQ0ZDRlN2NlODY4ZWRiNTNhYzA1NTYwYmQz
ZTI5NjZkZS4uNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzc3Miw3ICszNzcyLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1pc3Nl
ZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBkYXRh
VHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCi0g
ICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFn
KCk7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JEcmFnKCptX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YSBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFzdGVib2Fy
ZERhdGE6Ok5vOwogICAgIAogICAgIGlmIChkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgK
aW5kZXggMmU4OTNiZGNjODhhMzFmYzllYjRhOWYzNGM5ZGQ3OGI2OWM0OGNmZC4uNjYwYTc5NmQw
YjJkODk4NjI1MWI4MDZkMzkxM2JmOTE0NTRlOWU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7
CiBjbGFzcyBCbG9iUmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogCiBXRUJDT1JF
X0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpOwogCkBAIC00NiwyNyArNDgsMjcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKIAogICAgIC8v
IFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhl
IHNwZWNpZmllZCBibG9iIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
ID0gMDsKICAgICAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJyaW5nIHRv
IHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4KLSAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBh
IG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRo
ZSBzcGVjaWZpZWQgc3JjVVJMIG9yLCBpZiBub25lIGZvdW5kLCByZWZlcnJpbmcgdG8gdGhlIGZp
bGUgZm91bmQgYXQgdGhlIGdpdmVuIHBhdGguCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBS
ZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRy
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAw
OwogCiAgICAgLy8gTmVnYXRpdmUgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgc2VsZWN0IGZyb20gdGhl
IGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYpID0gMDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25n
IGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNC
bG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEJs
b2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSB7IHJldHVybiBudWxscHRyOyB9CiAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDEy
OTA5NWI0NDZhNDRmMjgwM2VhMTAxOGMyNmRiNzUxODUyNzAxYTUuLjViMjJiZDE2OGMzZWE1M2E5
MmNhNGFlODk0NDJlOWI5MTE0NDg1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIEJs
b2JSZWdpc3RyeUltcGw6On5CbG9iUmVnaXN0cnlJbXBsKCkgPSBkZWZhdWx0OwogCiBzdGF0aWMg
UmVmPFJlc291cmNlSGFuZGxlPiBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmNy
ZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCk7CisgICAgcmV0dXJuIGJsb2JSZWdp
c3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKS0+Y3JlYXRlUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwg
Y2xpZW50KTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHko
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBCbG9iRGF0YSogYmxvYkRh
dGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJs
b2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvKiBibG9iRGF0YSA9IGJsb2JS
ZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3Qu
dXJsKCkpOwogICAgIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShibG9iRGF0YSwgcmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIApAQCAtMzQz
LDQgKzM0MywxOSBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYlRvRmlsZVBhdGgo
Y29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdAogICAgIH0pOwogfQogCitWZWN0
b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IEJsb2JSZWdpc3RyeUltcGw6OmZpbGVz
SW5CbG9iKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIGF1dG8qIGJsb2JEYXRhID0gZ2V0
QmxvYkRhdGFGcm9tVVJMKHVybCk7CisgICAgaWYgKCFibG9iRGF0YSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0
OworICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkp
IHsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKCkpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggZTE1MWQz
YWZiMDY2ZGJmNWI1ZWU4ZmVkN2Q4YWY2ODYyZTA4YmU4Ni4uZGI5ZDZkZjcwYjc4ZDE1MzU0OTcw
MjM2Yzc1ZDEwZjM0NjllODg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXI7CiAKIC8vIEJsb2JSZWdpc3Ry
eUltcGwgaXMgbm90IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBt
YWluIHRocmVhZC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwgZmluYWwg
OiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3Ry
eUltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkJsb2JSZWdpc3RyeUltcGwoKTsKQEAgLTU4LDE3ICs1OCwxNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iRGF0YSosIGNvbnN0IEJsb2JEYXRhSXRlbUxp
c3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKIAotICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVy
cmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKLSAg
ICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRo
cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CiAKICAgICBzdHJ1Y3QgQmxvYkZvckZpbGVXcml0
aW5nIHsKICAgICAgICAgU3RyaW5nIGJsb2JVUkw7CkBAIC03Niw2ICs3NSw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgYm9vbCBwb3B1bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiYpOworICAg
IFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3Qg
VVJMJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9i
RGF0YT4+IG1fYmxvYnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCmluZGV4IGQ2ZjI5MTYxYTQ3ZGI1NGY0ZDRmYWJhMTQ1MWZkOWI2NTIxNzAxN2EuLmQ3
MWIxZWRjY2ZjYWQxOGM1ZWVjNzAyZTJmMWVlZGY3Zjk2YjYzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yODYsMTQgKzI4NiwxNCBAQCBT
dHJpbmcgRm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIExhdGlu
MUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzLmRh
dGEoKSksIGJ5dGVzLnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZl
ZChCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBV
UkwmIHVybCkKK3N0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnlJbXBs
KiBibG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0g
ICAgaWYgKCFibG9iUmVnaXN0cnkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpIHsKKyAgICBpZiAoIWJs
b2JSZWdpc3RyeSkgewogICAgICAgICBMT0dfRVJST1IoIlRyaWVkIHRvIHJlc29sdmUgYSBibG9i
IHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8qIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JS
ZWdpc3RyeSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CisgICAgYXV0byogYmxvYkRhdGEgPSBi
bG9iUmVnaXN0cnktPmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwogICAgIGlmICghYmxvYkRhdGEp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IGJsb2IgZGF0YSBmcm9tIGEgcmVn
aXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEm
IGZvcm1EYXRhLCBjCiAgICAgfQogfQogCi1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZl
QmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkpCitSZWY8Rm9ybURhdGE+
IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJl
Z2lzdHJ5KQogewogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGFueSBibG9icyBuZWVkcyB0byBiZSBy
ZXNvbHZlZCwgb3Igd2UgY2FuIHRha2UgdGhlIGZhc3QgcGF0aC4KICAgICBib29sIGhhc0Jsb2Ig
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRl
eCAyMGJmNjJlMjEwMDBmNTUzNmE1OWM2OWI2YzUyNTkyMDU5YTVmMzNmLi43YzY4NmU4YjQyM2Iz
NmRlOGIxMmYxMGI1N2RmMThkZTNlNDA5NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQmxvYlJlZ2lzdHJ5OworY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNz
IERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTIxOSw3
ICsyMTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMg
c28gd2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCiAgICAgLy8gSWYgdGhlIEZvcm1EYXRhIGhh
cyBubyBibG9iIHJlZmVyZW5jZXMgdG8gcmVzb2x2ZSwgdGhpcyBpcyByZXR1cm5lZC4KLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8Rm9ybURhdGE+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVn
aXN0cnkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Rm9ybURhdGE+IHJlc29sdmVCbG9iUmVm
ZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBsKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0
YUZvclVwbG9hZCBwcmVwYXJlRm9yVXBsb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4
IDQ3ZjE1NDE4ZjJhZDRkNWY4NWQ2MDliNzk3ODM2Njc5NjBmYmJkZjQuLjUzZmVhMDU2MzU5OGFj
MTg5NWU5Njc2NDM3MmExN2U3ZDlkMmViZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMzcy
LDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVhZFN0cmVhbVJl
ZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRUeXBlIHR5cGUsIHZvCiAKIFJldGFpblB0cjxDRlJlYWRT
dHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkK
IHsKLSAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxvYlJlZmVy
ZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1E
YXRhLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnlJbXBs
KCkpOwogICAgIGF1dG8gZGF0YUZvclVwbG9hZCA9IHJlc29sdmVkRm9ybURhdGEtPnByZXBhcmVG
b3JVcGxvYWQoKTsKIAogICAgIC8vIFByZWNvbXB1dGUgdGhlIGNvbnRlbnQgbGVuZ3RoIHNvIENG
TmV0d29yayBkb2Vzbid0IHVzZSBjaHVua2VkIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggODRhYjk4YzI4OTE4NzNhOTFjYmZjYjY3ZWJkNzc3YTI5Y2ZlMmNkMy4u
Zjg3M2Q5YTlhNjExZDBlMTY1N2YyNDVmNzg0M2M2NGM3YTdiMDRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDIzOSw3ICs0MjM5LDcgQEAgUmVmUHRyPEZpbGU+IElu
dGVybmFsczo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYgKCF1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRmlsZTo6
Y3JlYXRlKHVybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGRv
Y3VtZW50LT5zZXNzaW9uSUQoKSwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogfQogCiB2b2lkIElu
dGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCA1NTQ0NTYxNWUw
ZTFlODFlY2ExNGI4MTZjM2U4ZTQ5MWI3MzdiM2Y0Li42ZTFiY2EzYTQ3ZmRkYTYxZmQ5ZmRhYmY3
MThkYTQ0MmQ4YmM1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBSZWY8RmV0Y2hFdmVudD4g
U2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRjaGVkRmV0Y2hFdmVudChT
Y3JpcHRFeAogCiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3Jl
YXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsKKyAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSk7CiAgICAgYXV0byBmb3JtRGF0YSA9
IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICBmb3JtRGF0YS0+YXBwZW5kQmxvYihibG9iLT51cmwo
KSk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHJlc3BvbnNlLnNldFR5
cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6Q29ycyk7CiAgICAgcmVzcG9uc2Uuc2V0VGFpbnRp
bmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSk7Ci0gICAgYXV0byBmZXRjaFJl
c3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZv
cm1EYXRhKGZvcm1EYXRhKSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UsIFdURk1vdmUo
cmVzcG9uc2UpKTsKKyAgICBhdXRvIGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVh
dGUoY29udGV4dCwgRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoY29udGV4dC5zZXNzaW9uSUQoKSwg
Zm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25z
ZSkpOwogICAgIGZldGNoUmVzcG9uc2UtPmluaXRpYWxpemVPcGFxdWVMb2FkSWRlbnRpZmllckZv
clRlc3RpbmcoKTsKICAgICByZXR1cm4gZmV0Y2hSZXNwb25zZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCmluZGV4IDQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5ZmQ0YjAyMjNhMDY3YTIu
LmQzNzRhNmJmYWY3MTVhOGI5MjZkOTFjMTNjNTg2N2ViODc4YjMyZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcApAQCAtMTQ2LDEwICsxNDYsMTIgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZl
bnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFs
U2MKICAgICBBU1NFUlQoZ2xvYmFsU2NvcGUucmVnaXN0cmF0aW9uKCkuYWN0aXZlKCktPmlkZW50
aWZpZXIoKSA9PSBnbG9iYWxTY29wZS50aHJlYWQoKS5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VS
VChnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5hY3RpdmUoKS0+c3RhdGUoKSA9PSBTZXJ2aWNl
V29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAKKwogICAgIGF1dG8qIGZvcm1EYXRhID0gcmVxdWVz
dC5odHRwQm9keSgpOwogICAgIE9wdGlvbmFsPEZldGNoQm9keT4gYm9keTsKICAgICBpZiAoZm9y
bURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9keSA9IEZldGNoQm9k
eTo6ZnJvbUZvcm1EYXRhKCpmb3JtRGF0YSk7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQgPSBnbG9iYWxTY29wZTsKKyAgICAgICAgYm9keSA9IEZldGNoQm9keTo6ZnJv
bUZvcm1EYXRhKGNvbnRleHQuc2Vzc2lvbklEKCksICpmb3JtRGF0YSk7CiAgICAgICAgIGlmICgh
Ym9keSkgewogICAgICAgICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA0MjgwMzM3
ZjE4MWM2MDQ0MGE5MDU5YmMwYTI1ZDg1Y2UzZjA2ZGMuLmYwMTkzZDhjOTZlMzVjOWZmNzVlNmE2
M2EzNTBjNjU1ZGNhODYwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjEyLDcgKzIxMiw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VCbG9iKCkKICAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRh
dGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUg
PSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRl
bnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9
CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJy
YXlCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggODBmZTFhMmRkYzNlMTNhMDIwYjI1
NjRhNjJkYzU1M2YwYjVkNDRkMC4uZmZmYjQ3MzVkYjIxZWQ1NGE4MGI0ZDAzZjRkNGU3MDQ1NDZi
ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
RG93bmxvYWRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZC5oIgotI2luY2x1ZGUgIk5l
dHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b24uaCIKQEAgLTU1LDEwICs1NCwxMCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYQogICAgIHBh
cmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5jbGllbnRDcmVkZW50
aWFsUG9saWN5ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHM7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAg
cGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lz
dHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHBhcmFtZXRlcnMuYmxv
YkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+Ymxv
YlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAgcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9y
RG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vz
c2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSwgc3Vn
Z2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpu
ZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JS
ZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpk
YXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5p
cXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMzg2Yzll
NzZmZWM5MzZjMTU0ZWY3NGFmYWFkMWI4NTA2YTdhNTdmNC4uNzRlZDEzYmU2MTNkNzFmZDMzMjQx
Njk1ZTVkYjM2MTZjMjQ1MDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTU1LDcgKzU1LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjsKIGNsYXNz
IERvd25sb2FkOwotY2xhc3MgTmV0d29ya0Jsb2JSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93
bmxvYWQ7CkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBBdXRoZW50
aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2FkSUQpID0g
MDsKICAgICAgICAgdmlydHVhbCBOZXR3b3JrU2Vzc2lvbiogbmV0d29ya1Nlc3Npb24oY29uc3Qg
UEFMOjpTZXNzaW9uSUQmKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgTmV0d29ya0Jsb2JS
ZWdpc3RyeSYgbmV0d29ya0Jsb2JSZWdpc3RyeSgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlZigpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAw
OwogICAgICAgICB2aXJ0dWFsIHVpbnQzMl90IGRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGll
cigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA2Mzk5OGQ1ODY4MTU4
ODU4NjU5YWQ5MmFjMjAwNTNhMjM2ZTA2NjM0Li43NjRhZTk0ZWYwZjQ0NGE4MWUwNWI2YjI5ODg3
ZjdjOTg2YzhlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC0xNjYsMjAgKzE2Niw0
IEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdp
c3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0NvCiAgICAgcmV0dXJuIGZpbGVzSW5CbG9iKHVybCk7
CiB9CiAKLVZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgQVNTRVJUKG1fYmxv
YlJlZ2lzdHJ5LmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKTsKLSAgICBCbG9iRGF0YSogYmxvYkRhdGEg
PSBtX2Jsb2JSZWdpc3RyeS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKLSAgICBpZiAoIWJsb2JE
YXRhKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+PiByZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0g
OiBibG9iRGF0YS0+aXRlbXMoKSkgewotICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRh
dGFJdGVtOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpbGUo
KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NGNmZWQ5ZGFmNzk4MDNiYzVhZjgx
NWY4NDliY2EyYTEwY2U3ZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+
Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKLWNsYXNzIEJsb2JQ
YXJ0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7Ci1jbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwotCi1jbGFzcyBOZXR3b3JrQmxv
YlJlZ2lzdHJ5IHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtCbG9iUmVnaXN0cnkpOwot
cHVibGljOgotICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKLSAgICB+TmV0d29ya0Jsb2JSZWdp
c3RyeSgpOwotCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBz
dGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYpOwotICAgIHZvaWQg
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lk
IHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBh
dGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7Ci0KLSAgICB2b2lk
IGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiBmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVS
TCYpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
ZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5
SW1wbCYgYmxvYlJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9ibG9iUmVnaXN0cnk7IH0KLQotcHJpdmF0
ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBI
YXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwotICAgIEJsb2JGb3JDb25uZWN0aW9u
TWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwg
bV9ibG9iUmVnaXN0cnk7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDliMWI5Yjg2MDQzOGQ5YjZhM2YxMjY4OTE0NjJiMzM2YmM1OWZjNGQuLjQ5ZjQ1MzgzM2VmZjBk
NzBjZjg3Njc1NWZmOGYwOWQ2NzdkNmU1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC0zMDEsNyArMzAxLDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsKIAotICAgIG1fbmV0
d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5jb25uZWN0aW9uVG9XZWJQcm9jZXNz
RGlkQ2xvc2UoKnRoaXMpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbW92ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsKIAogI2lmIFVTRShMSUJXRUJSVEMpCkBAIC0zNzQs
MTMgKzM3MywxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmRTdXNw
ZW5zaW9uKCkKIAogVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGF1
dG8qIGJsb2JSZWdpc3RyeSA9IG5ldHdvcmtQcm9jZXNzKCkuYmxvYlJlZ2lzdHJ5KCp0aGlzKTsK
KyAgICBpZiAoIWJsb2JSZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXM7CiAgICAgaWYg
KGF1dG8qIGJvZHkgPSBwYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cEJvZHkoKSkgewogICAgICAgICBm
b3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVtZW50cygpKSB7CiAgICAgICAgICAgICBpZiAo
YXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9i
RGF0YT4oZWxlbWVudC5kYXRhKSkKLSAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmRWZWN0b3Io
bV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKCp0aGlz
LCBibG9iRGF0YS0+dXJsKSk7CisgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kVmVjdG9yKGJs
b2JSZWdpc3RyeS0+ZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9Ci0gICAg
ICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1
ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpKSk7CisgICAgICAgIGNv
bnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1ZXN0KS5z
ZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGZpbGVzOwpAQCAtNTY4LDUxICs1NzEsODMgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QKICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lv
bkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwoKnRoaXMsIHVybCwgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUoZXh0ZW5zaW9uSGFuZGxlKSksIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0
ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRz
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5l
dHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCwgV1RGTW92ZShi
bG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hl
Y2spCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxG
cm9tVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVJMKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCwgc3JjVVJMLCBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2spOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoKnRoaXMsIHVy
bCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgY29udGVudFR5cGUpOworICAgIGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYg
KCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFja2VkUGF0
aCwgbnVsbHB0ciksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90
IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoKnRoaXMsIHVybCwgc3JjVVJMLCBz
dGFydCwgZW5kKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29y
a0Jsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwpOworICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVn
aXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JTaXpl
KCp0aGlzLCB1cmwpKTsKKyAgICBhdXRvKiBibG9iUmVnaXN0cnkgPSBuZXR3b3JrUHJvY2Vzcygp
LmJsb2JSZWdpc3RyeSgqdGhpcyk7CisgICAgaWYgKCFibG9iUmVnaXN0cnkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGJsb2JSZWdpc3RyeS0+YmxvYlNpemUodXJs
KSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogeworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47
CisKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVSZWZlcmVu
Y2VzOwogICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCi0gICAgICAgIGZpbGVSZWZlcmVu
Y2VzLmFwcGVuZFZlY3RvcihtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCku
ZmlsZXNJbkJsb2IoKnRoaXMsIHsgeyB9LCB1cmwgfSkpOworICAgICAgICBmaWxlUmVmZXJlbmNl
cy5hcHBlbmRWZWN0b3Ioc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IoeyB7IH0s
IHVybCB9KSk7CiAKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAgICAg
ICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtCbG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJM
cywgW2ZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJlbmNlcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBmaWxlTmFtZXMpIG11
dGFibGUgeworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGJsb2JVUkxzLCBbZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZlcmVuY2Vz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYm
IGZpbGVOYW1lcykgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZl
cmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVOYW1lcykpOwpAQCAtNjIxLDEyICs2NTYsMTEg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKIAogVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJ
bkJsb2IoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5l
dHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgdXJsKTsKLX0KKyAgICBhdXRv
KiBibG9iUmVnaXN0cnkgPSBuZXR3b3JrUHJvY2VzcygpLmJsb2JSZWdpc3RyeSgqdGhpcyk7Cisg
ICAgaWYgKCFibG9iUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB7IH07CiAKLVdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iUmVnaXN0
cnkoKQotewotICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5
KCkuYmxvYlJlZ2lzdHJ5KCk7CisgICAgcmV0dXJuIGJsb2JSZWdpc3RyeS0+ZmlsZXNJbkJsb2Io
dXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNl
Ni4uMjhhNDU1NTQ5NDQxZDMxNGJhNWQyZDI5NjcxZGMwNDFmODc0Yjk3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMTM4LDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wg
aXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBzdG9wVHJh
Y2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3
b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7CiAKLSAgICBXZWJDb3JlOjpCbG9i
UmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwogICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JS
ZWZlcmVuY2VzKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKQEAgLTE4
MywxNCArMTgyLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCi0gICAgdm9pZCByZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9t
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5l
Y3Rpb25DaGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxG
cm9tVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tl
ZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQg
c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmEyYzMxYTQxM2FmNjIx
OTQ5M2NkNGNlYTJiYzdjNGFmYTkyMDU5MC4uMWU3N2M4YWI5ODQ0OWZmMDRlZmFiNzkzMDVkNTEz
OGRlYmQ4NWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC00MSwxNCArNDEsMTQgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJlZ2lzdGVy
RmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lz
dGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywg
U3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwg
VVJMIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCi0gICAgUmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5n
IGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQp
Ci0gICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRU
eXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1
cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5
cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJp
bmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JV
UkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkws
IGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkKICAgICBCbG9iU2l6ZShVUkwgdXJsKSAtPiAo
dWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKLSAgICBXcml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVO
YW1lcykgQXN5bmMKKyAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4g
ZmlsZU5hbWVzKSBBc3luYwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYzMzMzk1NzBiODc0MGIxODg5NDYyNDdmMmJiZTA3
YTg4ZGUyN2FmOS4uY2IxMmZkNzBkMzIwYzEyYmJlMjcxNDJlMzUzZTI3YWQ0MDY3NTk5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTYxMiw2ICs2MTIsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oY29u
c3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJz
LnJlbW92ZShzZXNzaW9uSUQpOwogfQogCitCbG9iUmVnaXN0cnlJbXBsKiBOZXR3b3JrUHJvY2Vz
czo6YmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
KQoreworICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgdGhpcyBtZXRob2QgYW5kIHVzZSBzZXNzaW9u
SUQgLT4gTmV0d29ya1Nlc3Npb24gLT4gYmxvYiByZWdpc3RyeS4KKyAgICBhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwor
ICAgIHJldHVybiBzZXNzaW9uID8gJnNlc3Npb24tPmJsb2JSZWdpc3RyeSgpIDogbnVsbHB0cjsK
K30KKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA1NDZkNWVmM2NjZDhmNmJiZTRjMDE1M2Q5YmJiN2JlZDhhY2VmZDYzLi40Y2RmNjhmYjE2N2Q0
OGEzNzhmYmY5ZmYxNmY0YWViYmM2ODViMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2Fj
aGVNb2RlbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnku
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgpAQCAtMzI4LDcgKzMyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNhY2hlRW5n
aW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBx
dW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CiAKLSAgICBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9u
ZXR3b3JrQmxvYlJlZ2lzdHJ5OyB9CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxv
YlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKICAgICB2b2lkIHN0
b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpBZENsaWNrQXR0
cmlidXRpb24mJik7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpAQCAtNDk5LDcgKzQ5OCw2
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtTZXNzaW9uPj4gbV9uZXR3b3JrU2Vzc2lvbnM7CiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+
IG1fbmV0d29ya1N0b3JhZ2VTZXNzaW9uczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjsKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5IG1fbmV0d29ya0Jsb2JSZWdpc3RyeTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmMjM0ZTI5NDFkM2UxZTUxNmVhMzhi
NmRmNmVjNTNlYzIwYTc1MDE3Li4wYzg0NmRiMDI0MmYzYTc1MTNlNmMzYjExMWVhYWMxZDg4NjBl
Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTIsMTUgKzUyLDE0
IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgY2xh
c3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKLSAg
ICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFJlZjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25z
dCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgICAg
ICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRo
cyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgYm9vbCBpc0Js
b2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2b2lkIHdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBm
aWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgfTsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlCbG9iUmVnaXN0cnk+IGJsb2JSZWdpc3RyeTsK
ICAgICByZXR1cm4gJmJsb2JSZWdpc3RyeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyZWE3NWQ2
ZTFjYjZiOGVlZDQ0YjIyMGU0OTBjMTdiYTJkOWE2YWQ3Li5iZmI0NjcyZTRmOTk2NzNmZjRlNmQ0
MTJlMjdjMmEzOWVlNDA4YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdp
c3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVz
Y3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFm
Zjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAuLmM0ZTEwMmU3NzUyN2VlYzFmYWY1MWU3YjA0ZTBl
OTU3OTQ2NjdhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdp
c3RyeUltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMTQs
NiArMTE1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJTb2NrZXRUYXNr
KFdlYlNvY2tldFRhc2smKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViU29ja2V0VGFzayhX
ZWJTb2NrZXRUYXNrJikgeyB9CiAKKyAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9i
UmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xNDMsNiArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFJlZlB0cjxOZXR3b3Jr
Q2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwgbV9i
bG9iUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDc5MTZlMjNiNzdlZWZiYzA4YjE5NzA0Mjc5N2YwMDA0OGNmYzE2M2YuLmNkOWEwM2NkMTVhNzE2
YmU1ZWI2NDgyOTA4ZjRkZWM3N2Y2ODg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsOCArNTcsNiBA
QCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmMwOGY1ZTRkN2Y4YTY2OWJkZDNjMDE5NDQyNzM5
ZWNjYWE5NjY2Yi4uNGQzYWJjNTc2YTk3ZGQ5ZjI1YzU2YjBkMzMyOGU0MjBjMmI4YmRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MzEyLDcgKzEzMTIsNiBAQAogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0
UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFF
QzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4u
c2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzkyNjMxMDBG
MEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggKi87IH07
Ci0JCUExMDVEMEQxMjEyNzM0QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA1RDBEMDIxMjcz
NEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovOyB9OwogCQlBMTE1REM3MjE5
MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgw
NzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50
RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFu
YWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk3Myw3
ICszOTcyLDYgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERG
Vmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9X
S1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMDVEMEQwMjEyNzM0
QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURD
NkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3Vt
ZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjA3LDcgKzQ2MDUs
NiBAQAogCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NjkxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3Ry
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JSZWdp
c3RyeVByb3h5LmNwcDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4NzZBMTZENkNBNjkwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCbG9iUmVnaXN0cnlQcm94eS5oOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzk4Qzc3MTZF
NjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMTE2QjlDMTM5MDAxQzQyRjEgLyogY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMjE2
QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMThDOTJGMzEy
REI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaW50SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjUyLDcgKzY2NDksNiBAQAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQwMEQ0MTE4MyAvKiBDdXN0
b21Qcm90b2NvbHMgKi8sCiAJCQkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERvd25sb2Fk
cyAqLywKIAkJCQlCQzgyODM3QzE2QjQ1REE1MDBBMjc4RkUgLyogRW50cnlQb2ludCAqLywKLQkJ
CQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQSSAqLywKIAkJCQk5MzkyODhFMDIx
NDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTExREQwMEVE
ODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywK
QEAgLTkwMDQsMTUgKzkwMDAsNiBAQAogCQkJbmFtZSA9IEZpbGVBUEk7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQ
SSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTE3OThD
NzcxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovLAotCQkJCUEx
MDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8sCi0JCQkp
OwotCQkJcGF0aCA9IEZpbGVBUEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owog
CQlFMTk5ODc1QjE0MkJGOUNGMDBCQjJERTcgLyogUERGICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTk0NTgsNyArOTQ0NSw2IEBACiAJCQkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNUJDQjkyMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTA1RDBEMTIxMjczNEIyMDAzNEY2
QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0Mx
QTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5
RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29k
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCAyNGUzNTU5Y2ZmMDY5YmQzMTc5
MWVlNjUxNzhlYWY0ZTRkYzBlNDdkLi4yZjNiNmJhODMxNDc4NDVlNjg2MmM0ZjkwMzk3ZDI1MWM2
NWIxN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3Ry
eVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlOwogCkBAIC00NCwzNyArNDQsMzMgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmUK
ICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVy
bCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBmaWxlLT5wYXRoKCksIGV4dGVu
c2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94
eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxv
YlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94
eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBl
KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywg
Y29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBib29sIHNob3VsZEJ5cGFzc0Nv
bm5lY3Rpb25DaGVjayA9IGZhbHNlOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBz
aG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1
cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrIH0sIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVn
aXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHNlc3Npb25JRCwgdXJsLCBzcmNVUkwgfSwgMCk7CiB9CiAK
LXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgp
LCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSks
IDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lz
dGVyQmxvYlVSTCh1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwg
dXJsKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBzdGFydCwg
ZW5kKSwgMCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6Ymxv
YlNpemUoY29uc3QgVVJMJiB1cmwpCkBAIC04NSw5ICs4MSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJu
IHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVS
THMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5oCmluZGV4IDZhYmVlMzY3NDhkZmVjYzJjYWQ0NmNjYzIyMmE3NGM1MTc2
ZDg5ZDQuLmQ3NjYxNTg3ZTNlNzQzODMyZTIzMjVjNjc5NmNmYTM0NWJiOTU2YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCbG9iUmVn
aXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGlj
OgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25n
IGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCBkOWFkY2MyMWE4YTk2YjJhYTU0NTM2NmRlMDk1ZDA0N2M2MjU3ZWRmLi5hZmQ3NDdhNWI5OTE4
NTcwMzA4M2ZhYzU3MGZjNDhiNGU1Y2JlZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6UwogewogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNv
dXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggMGNkZTU5OWIxZTA0OWQ4ODMxM2EwZDAzMDVmODAyYWY1Mjc5ZGNk
OS4uNjI2ZGFiMTFiMmRmMjk5NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIq
IGV4aXN0aW5nSURCQ29ubmVjdGlvblRvU2VydmVyRm9ySWRlbnRpZmllcih1aW50NjRfdCBpZGVu
dGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdl
dChpZGVudGlmaWVyKTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAwOGE5
MDI2MjBjNjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjLi43YjMxYWIwYjBhY2JiMWZjODA4
NjZlNmY4MzE4NzM0MmM2YmRjNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBA
IC02Miw5ICs2MiwyNSBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAorY2xh
c3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7
Citwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVy
RmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7
IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250
ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJl
Z2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVyZW5j
ZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxv
YlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5
LmJsb2JTaXplKHVybCk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJs
b2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7IH0KKworICAgIEJsb2JSZWdpc3Ry
eUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7
IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7Cit9OworCiBCbG9iUmVn
aXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAg
ICByZXR1cm4gbmV3IFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw7CisgICAgcmV0dXJuIG5ldyBX
ZWJCbG9iUmVnaXN0cnk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376056</attachid>
            <date>2019-08-12 05:48:57 -0700</date>
            <delta_ts>2019-08-12 06:10:28 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-200567-20190812144855.patch</filename>
            <type>text/plain</type>
            <size>86017</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDgyNzRlZTY1MTg2NTU2
YmM0ZTUyYjIzNjY1NDAyNzk2ODZlNWNmOS4uYzEyYjI1YjQ0N2UzZGQ4NjU4MDFlZDU0MDg0YTdl
ZGU3MjRiOTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3Mgc2Vzc2lvbiBJRHMgdG8gYWxsIEJsb2JSZWdpc3RyeSBtZXRob2RzIGluIHBhcnRpY3Vs
YXIgVGhyZWFkYWJsZUxvYWRlclJlZ2lzdHJ5LgorICAgICAgICBUaGUgb25seSBleGNlcHRpb24g
aXMgYmxvYlNpemUgd2hpY2ggc2hvdWxkIGJlIGRlYWx0IHdpdGggYSBmb2xsb3ctdXAgcGF0Y2gu
CisgICAgICAgIGJsb2JTaXplIGJsb2IgcmVnaXN0cnkgaXMgcmV0cmlldmVkIGZyb20gdGhlIGNv
bm5lY3Rpb24gLT4gc2Vzc2lvbklEIG1hcCBpbiBOZXR3b3JrIFByb2Nlc3MuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6fkZpbGVSZWFkZXJMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Lmg6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYlJlc291
cmNlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKToKKwogMjAxOS0w
OC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IElEQlZhbHVlOjptX3Nlc3Npb25JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNDYzOGUzMDAzMzEyMGRlNThiNjlh
MmI0OWZkNGNkNDc2NTYzZDdlLi4yYTQ0YTMxYWFmMDlkY2MwOGU5MmQwYTBmMWVjNjhjMWVjMmMx
MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJl
IGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTIwMjEyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYmxv
YiByZWdpc3RyeSB0byBOZXR3b3JrU2Vzc2lvbiBzbyB0aGF0IGl0IGlzIHBhcnRpdGlvbmVkIGJ5
IHNlc3Npb24gSUQuCisgICAgICAgIEluIGNhc2Ugc2Vzc2lvbiBJRCBpcyBub3QgZ2l2ZW4gdGhy
b3VnaCBJUEMsIHVzZSB0aGUgY29ubmVjdGlvbiBhcyBrZXkgdG8gZ2V0IHRoZSBuZXR3b3JrIHNl
c3Npb24uCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgYmxvYlNpemUuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpibG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpi
bG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vzc2lvbklEIHNob3VsZCBiZSBnaXZlbiB0
byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRoZSBjb3JyZWN0IHByb3h5IGluZm9ybWF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDM4ODQ5MWQ0NTg4MDY3NmZkMWE5
MzY1MGQ0NmQyZWQxNWI5NGYzYi4uMTU1MzExZGI3OGQzNDBiM2RkNzIyZTM2YmIyNWY1MzlkNDU5
OGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5
LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9i
IHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgSWdub3JlIHNlc3Npb25JRCBwYXJhbWV0ZXIgZm9y
IFdLMS4KKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBjMGRiZjVmZTU3OGYxZjU5YjZmNGMxYjA3
YWJjMDFlN2QyNTFkNzc5Li5kNjg4YzM3ZDM4NzU5YmYyZTA2MGY2ZjE1ZjYxYjY4NTg0OTQxNTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBGZXRjaExvYWRlcjo6fkZldGNoTG9h
ZGVyKCkKIHsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7
CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fc2Vz
c2lvbklELCBtX3VybEZvclJlYWRpbmcpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9iKQpAQCAtNTgs
MTMgKzU4LDE0IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IpCiAKIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0
TG9hZGluZ0Jsb2JVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJM
JiBibG9iVVJMKQogeworICAgIG1fc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQoKTsKICAg
ICBtX3VybEZvclJlYWRpbmcgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoY29udGV4dC5zZWN1
cml0eU9yaWdpbigpKTsKICAgICBpZiAobV91cmxGb3JSZWFkaW5nLmlzRW1wdHkoKSkgewogICAg
ICAgICBtX2NsaWVudC5kaWRGYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgVVJM
KCksICJDb3VsZCBub3QgY3JlYXRlIFVSTCBmb3IgQmxvYiJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChj
b250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYlVSTCk7CisgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBjb250
ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYlVSTCk7CiAKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwogICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9ySWRlbnRpZmllcihjb250ZXh0LnJlc291cmNlUmVxdWVzdElkZW50aWZpZXIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNDAxMWIz
NzM4Yzk3OWJiOTc4YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZi4uMDg1N2Q1MmY5NmEwNjkwZGE5MWU1
ZmVhOGFiZjQ1M2RiZDViM2U4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIEZldGNoQm9keUNvbnN1
bWVyKiBtX2NvbnN1bWVyOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogICAgIFVS
TCBtX3VybEZvclJlYWRpbmc7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAxZDAwNTRjMjg5MmQ1MDEzZGYy
NmFiZmZhM2UxYzJmNjdkZWU0ODE5Li4yNWQ3NDlhOGI0MjgzZmE0M2JhNTYwOTU1Zjk4ZmY1ODQ5
MDYwZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM1NjksMTMgKzM1NjksMTIgQEAgVmVjdG9yPFN0cmluZz4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxv
YnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSURCVmFsdWUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaGFzQmxv
YlVSTHMoKSk7CiAKLSAgICAvLyBGSVhNRTogR2V0IHRoZSByaWdodCBibG9iIHJlZ2lzdHJ5IGZy
b20gdGhlIGdpdmVuIHNlc3Npb25JRC4KLSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
YXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAoYmxvYkZpbGVQYXRocy5p
c0VtcHR5KCkpIHsKQEAgLTM1ODYsNyArMzU4NSw2IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQobV9ibG9iVVJMcy5zaXplKCkgPT0gYmxvYkZp
bGVQYXRocy5zaXplKCkpOwotICAgICAgICAKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyAq
dGhpcywgbV9ibG9iVVJMcywgYmxvYkZpbGVQYXRocyB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwCmluZGV4IDJhMDZkMDNiZjAzOTA4ZGRjNzViNmM4OTAxNTBmNjYxODg2NGU0
YjcuLmQ4OTFjNzA4NjhiOGM3NmE5MjkxMTE3YzUzYzMyY2Y2ZjE3YTY0OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHB1YmxpYzoKIHZvaWQgQmxvYlVSTFJl
Z2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUmIGJsb2IpCiB7CiAgICAgQVNTRVJUKCZi
bG9iLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNf
Y2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCBjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKIH0KIAotdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKKyAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1
cmwpOwogfQogCiBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC04
NCw3ICs4NCw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICwg
bV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50
ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCiBC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsCiAgICAgICAgICk7
CiAgICAgfQogCi0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkws
IGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQpAQCAtMTE1LDcgKzExNSw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChC
bG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwor
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwg
bV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJs
b2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTI2LDcgKzEyNiw3IEBAIEJsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGNvbnRlCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxv
YlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwg
Y29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50
VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTEzNSw3ICsxMzUsNyBAQCBCbG9iOjpCbG9iKFJlZmVy
ZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImIGJsb2IpCiAgICAgLCBt
X3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkpCiB7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxv
YlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0
KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlv
bkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQpAQCAtMTQ1LDkgKzE0NSw5IEBAIEJsb2I6OkJs
b2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHNyY1VSCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUlu
dGVybmFsVVJMKCk7CiAgICAgaWYgKGZpbGVCYWNrZWRQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJu
YWxVUkwsIHNyY1VSTCk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX3Nlc3Npb25JRCwgbnVsbHB0ciwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKICAg
ICBlbHNlCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgs
IG1fdHlwZSk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBzcmNVUkws
IGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtMTU2LDEyICsxNTYsMTIgQEAgQmxvYjo6Qmxv
YihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG8KICAgICAvLyBtX3NpemUgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRv
IGVuZCAtIHN0YXJ0IHNvIHdlIGRvIG5vdCBpbml0aWFsaXplIGl0IGhlcmUuCiB7CiAgICAgbV9p
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobV9pbnRlcm5hbFVSTCwgc3Jj
VVJMLCBzdGFydCwgZW5kKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkxGb3JTbGljZShtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBzdGFydCwg
ZW5kKTsKIH0KIAogQmxvYjo6fkJsb2IoKQogewotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnVucmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5jcHAKaW5kZXggYzcyNzIzYmE0YmRmOTkyYzRjOTcxZDVlM2Q1M2NmM2RiMzIwNzY1Yy4uYThm
NDZkMTY2Y2JjYzlmMzgzNWQ1NTVlOThlODQ2MTE4OTJhYTgxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluCiAgICAgY29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwog
CiAgICAgYXV0byBpbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0g
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVS
TCwgcGF0aCwgdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChzZXNzaW9uSUQsIGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZpbGUoc2Vzc2lvbklELCBXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RG
TW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA4OTcxNTVhMTIyOTFk
YzRlNTM1MjM0ZTA4OGE4YzQyZWZhMDliNWE3Li42YzZjOTE4NjU5MDM3NjE1M2Q5MGFiY2ZlNjdj
NWQzNzZiYWRiNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgRmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2Fk
ZXIoKQogewogICAgIHRlcm1pbmF0ZSgpOwogICAgIGlmICghbV91cmxGb3JSZWFkaW5nLmlzRW1w
dHkoKSkKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwo
bV91cmxGb3JSZWFkaW5nKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgQmxvYiYgYmxvYikKQEAgLTgxLDcgKzgxLDggQEAgdm9pZCBGaWxlUmVhZGVy
TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBCbG8KICAgICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JS
ZWFkaW5nLCBibG9iLnVybCgpKTsKKyAgICBtX3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNlc3Npb25JRCgpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAogICAgIC8vIENvbnN0cnVjdCBh
bmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZv
clJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRl
eCA3YTQyOGJlNTA1N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVhMjllMDBhLi40NGFkNmM4NmRmZWI2
MzRiNTU5OGM4OGIxY2I2ZjZhNWJjMmM2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwMiw2ICsxMDMsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCiAgICAgVVJMIG1fdXJsRm9yUmVh
ZGluZzsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9y
YXdEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5jcHAKaW5kZXggNWJjOWJhZjc4Mjc5NmJhNDMzZDdlODI5YzEwYWY2NzcxN2FhNDM5MC4u
YTk1YjI0OWY4Yzg0MjNmZDc0NWJjMmFjOTdiMjdiYzA0YWEzYTczOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxMDkg
KzY0LDk3IEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2lu
TWFwKCkKICAgICByZXR1cm4gKm1hcDsKIH0KIAotc3RhdGljIHZvaWQgcG9zdFRvTWFpblRocmVh
ZChDcm9zc1RocmVhZFRhc2smJiB0YXNrKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIENyb3NzVGhyZWFk
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiogcXVldWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKLSAgICAgICAgcXVldWUgPSBuZXcgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVh
ZFRhc2s+OwotICAgIH0pOwotCi0gICAgcXVldWUtPmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKKyAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJG
aWxlQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUo
cGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGNhbGxP
bk1haW5UaHJlYWQoW10gewotICAgICAgICBhdXRvIHRhc2sgPSBxdWV1ZS0+dHJ5R2V0TWVzc2Fn
ZSgpOwotICAgICAgICBBU1NFUlQodGFzayk7Ci0gICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7
CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5
KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJs
b2JVUkwoc2Vzc2lvbklELCB1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgp
LCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotewotICAgIGlmIChpc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9
IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRD
b3B5KCldIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwot
ICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRz
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAg
IGVsc2UgewotICAgICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iUGFydHMpCi0gICAgICAgICAg
ICBwYXJ0LmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7Ci0gICAgICAgIH0pOworICAgIGlmIChpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lv
bklELCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGZvciAoYXV0byYgcGFydCA6IGJsb2JQYXJ0cykKKyAgICAgICAgcGFy
dC5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Np
b25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBibG9iUGFydHMgPSBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVy
bCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgfSk7CiB9CiAKLXZvaWQg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
KQogewogICAgIC8vIElmIHRoZSBibG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwgYXMgaW4g
dGhlIGNvbnRleHQgd2l0aCB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJMLCBzYXZl
IHRoZSBtYXBwaW5nIGJldHdlZW4gdXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3JpZ2luIGNh
biBiZSByZXRyaXZlZCB3aGVuIGRvaW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAgICBpZiAo
b3JpZ2luICYmIEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3Jp
Z2luTWFwKCktPmFkZCh1cmwuc3RyaW5nKCksIG9yaWdpbik7CiAKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VS
TCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29s
YXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwotICAgICAgICB9
KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwpOworICAgICAgICByZXR1cm47CiAg
ICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0
ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCk7CisgICAg
fSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsK
LSAgICBlbHNlCi0gICAgICAgIHBvc3RUb01haW5UaHJlYWQoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIGNvbnRlbnRUeXBlKSk7CisgICAgaWYg
KGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwsIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIGZpbGVC
YWNrZWRQYXRoID0gZmlsZUJhY2tlZFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0g
Y29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlw
ZSk7CisgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW25ld1VSTCA9IG5ld1VSTC5pc29s
YXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwgZW5kXSB7
Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShuZXdV
UkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIH0pOworICAgIGlmIChpc01haW5UaHJl
YWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShz
ZXNzaW9uSUQsIG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgbmV3VVJMID0gbmV3VVJM
Lmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIHN0YXJ0LCBl
bmRdIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vz
c2lvbklELCBuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgfSk7CiB9CiAKIHVuc2ln
bmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShjb25zdCBVUkwm
IHVybCkKIHsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0U2l6ZTsKICAgICBpZiAoaXNN
YWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwp
OworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdFNpemU7CisgICAgQmluYXJ5U2VtYXBo
b3JlIHNlbWFwaG9yZTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRD
b3B5KCksICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7CiAgICAgICAgIHJlc3VsdFNpemUgPSBi
bG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwotICAgIGVsc2UgewotICAgICAgICBCaW5hcnlT
ZW1hcGhvcmUgc2VtYXBob3JlOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwu
aXNvbGF0ZWRDb3B5KCksICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7Ci0gICAgICAgICAgICBy
ZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKLSAgICAgICAgICAgIHNl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNlbWFwaG9yZS53YWl0KCk7
Ci0gICAgfQorICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisgICAgc2VtYXBo
b3JlLndhaXQoKTsKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KIAotdm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKK3ZvaWQgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVy
bCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7
CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVn
aXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVh
ZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25J
RCwgdXJsKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYWxsT25NYWluVGhyZWFkKFtz
ZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0
cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCk7CisgICAgfSk7CiB9CiAKIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3Jp
Z2luKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNm
ZWRjODMyLi4zMTVmNWNhZGI0NjYzODk4MGI0YzFmZDhlYzViNjdkYmUzZTQxMjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAs
MTIgKzQwLDEyIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxC
bG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpOwotICAgIHN0YXRpYyB2
b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9u
ZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNV
UkxNYW5hZ2VyLmNwcAppbmRleCBkNWI5YmVkYmFkMDQ3MDQ2MWE1OGFiNWNiMDE0YTY4YzA0N2Q3
ZmIwLi43YmViYzdhMTBjY2JlZDUzY2ZlOGNhZjhhMDdjNzhlNmM1NzlkNjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2LDggKzI2LDkgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRl
IDx3dGYvVVJMLmg+CisKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA4YjkxZTFj
MzI0ZDc4ZTcxNWU4ZGU3Zjc3OGY0MzhiY2NkY2E4Y2NlLi41MzYzNzAzYjhjYjQzYzJiZDkzMDBm
YjY1YTk3NDRmNDg1ZGRlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwCkBAIC0xMDYsMTAgKzEwNiwxMSBAQCBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBQ
b2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShSZQogCiAgICAg
Ly8gQ3JlYXRlIGEgbmV3IHRlbXBvcmFyeSBibG9iVVJMIGluIGNhc2UgdGhpcyBvbmUgZ2V0cyBy
ZXZva2VkIGR1cmluZyB0aGUgYXN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9u
LgogICAgIFVSTCB0ZW1wb3JhcnlCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKCZt
X2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMLCByZXF1ZXN0LnVybCgpKTsKKyAgICBh
dXRvIHNlc3Npb25JRCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vzc2lvbklEKCk7CisgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdGVtcG9yYXJ5QmxvYlVSTCwg
cmVxdWVzdC51cmwoKSk7CiAgICAgcmVxdWVzdC5zZXRVUkwodGVtcG9yYXJ5QmxvYlVSTCk7Ci0g
ICAgcmV0dXJuIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4oW3RlbXBvcmFyeUJsb2JVUkwgPSBX
VEZNb3ZlKHRlbXBvcmFyeUJsb2JVUkwpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVn
aXN0ZXJCbG9iVVJMKHRlbXBvcmFyeUJsb2JVUkwpOworICAgIHJldHVybiBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+KFtzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwgPSBXVEZNb3ZlKHRlbXBv
cmFyeUJsb2JVUkwpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJM
KHNlc3Npb25JRCwgdGVtcG9yYXJ5QmxvYlVSTCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDJlODkzYmRjYzg4
YTMxZmM5ZWI0YTlmMzRjOWRkNzhiNjljNDhjZmQuLjY2MGE3OTZkMGIyZDg5ODYyNTFiODA2ZDM5
MTNiZjkxNDU0ZTllNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lz
dHJ5OworY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lz
dHJ5JiBibG9iUmVnaXN0cnkoKTsKIApAQCAtNDYsMjcgKzQ4LDI3IEBAIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9i
IFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBk
YXRhLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9y
PEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9y
PEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAgICAgCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlk
ZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVm
ZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VS
TCBvciwgaWYgbm9uZSBmb3VuZCwgcmVmZXJyaW5nIHRvIHRoZSBmaWxlIGZvdW5kIGF0IHRoZSBn
aXZlbiBwYXRoLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIE5lZ2F0
aXZlIHN0YXJ0IGFuZCBlbmQgdmFsdWVzIHNlbGVjdCBmcm9tIHRoZSBlbmQuCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBV
UkwmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBCbG9iUmVnaXN0cnlJbXBsKiBi
bG9iUmVnaXN0cnlJbXBsKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+QmxvYlJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAxMjkwOTViNDQ2YTQ0ZjI4MDNl
YTEwMThjMjZkYjc1MTg1MjcwMWE1Li41YjIyYmQxNjhjM2VhNTNhOTJjYTRhZTg5NDQyZTliOTEx
NDQ4NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBCbG9iUmVnaXN0cnlJbXBsOjp+
QmxvYlJlZ2lzdHJ5SW1wbCgpID0gZGVmYXVsdDsKIAogc3RhdGljIFJlZjxSZXNvdXJjZUhhbmRs
ZT4gY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5jcmVhdGVSZXNvdXJjZUhhbmRs
ZShyZXF1ZXN0LCBjbGllbnQpOworICAgIHJldHVybiBibG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0
cnlJbXBsKCktPmNyZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCk7CiB9CiAKIHN0
YXRpYyB2b2lkIGxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpCiB7Ci0gICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8
QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwocmVx
dWVzdC51cmwoKSk7CisgICAgYXV0byogYmxvYkRhdGEgPSBibG9iUmVnaXN0cnkoKS5ibG9iUmVn
aXN0cnlJbXBsKCktPmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKICAgICBCbG9i
UmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoYmxvYkRhdGEsIHJlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKQEAgLTM0Myw0ICszNDMsMTkgQEAgdm9p
ZCBCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVS
TCwgY29uc3QgU3RyaW5nJiBwYXQKICAgICB9KTsKIH0KIAorVmVjdG9yPFJlZlB0cjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiBCbG9iUmVnaXN0cnlJbXBsOjpmaWxlc0luQmxvYihjb25zdCBVUkwm
IHVybCkgY29uc3QKK3sKKyAgICBhdXRvKiBibG9iRGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh1
cmwpOworICAgIGlmICghYmxvYkRhdGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0
b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0
IEJsb2JEYXRhSXRlbSYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7CisgICAgICAgIGlmIChp
dGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGUpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGl0ZW0uZmlsZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCmluZGV4IGUxNTFkM2FmYjA2NmRiZjViNWVlOGZl
ZDdkOGFmNjg2MmUwOGJlODYuLmRiOWQ2ZGY3MGI3OGQxNTM1NDk3MDIzNmM3NWQxMGYzNDY5ZTg4
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFRocmVhZFNhZmVEYXRhQnVmZmVyOwogCiAvLyBCbG9iUmVnaXN0cnlJbXBsIGlzIG5vdCB0aHJl
YWQtc2FmZS4gSXQgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gbWFpbiB0aHJlYWQuCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnlJbXBsIGZpbmFsIDogcHVibGljIEJsb2JSZWdp
c3RyeSB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnlJbXBsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnlJ
bXBsKCk7CkBAIC01OCwxNyArNTgsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRTdG9y
YWdlSXRlbXMoQmxvYkRhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKLSAgICB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNCbG9iUmVnaXN0cnlJ
bXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgcmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKLSAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgb3ZlcnJpZGU7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpOwogCi0gICAgdm9pZCB3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYpOwogCiAgICAgc3RydWN0IEJsb2JGb3JGaWxlV3JpdGluZyB7CiAgICAgICAgIFN0
cmluZyBibG9iVVJMOwpAQCAtNzYsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGJv
b2wgcG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgVmVjdG9yPEJsb2JGb3JGaWxlV3JpdGluZz4mKTsKKyAgICBWZWN0b3I8UmVmUHRyPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYkRhdGE+PiBtX2Jsb2JzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBkNmYy
OTE2MWE0N2RiNTRmNGQ0ZmFiYTE0NTFmZDliNjUyMTcwMTdhLi5kNzFiMWVkY2NmY2FkMThjNWVl
YzcwMmUyZjFlZWRmN2Y5NmI2M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjg2LDE0ICsyODYsMTQgQEAgU3RyaW5nIEZvcm1EYXRhOjpm
bGF0dGVuVG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBMYXRpbjFFbmNvZGluZygpLmRlY29k
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcy5kYXRhKCkpLCBieXRlcy5zaXpl
KCkpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCitzdGF0aWMg
dm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBG
b3JtRGF0YSYgZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghYmxvYlJlZ2lz
dHJ5LmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKSB7CisgICAgaWYgKCFibG9iUmVnaXN0cnkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJUcmllZCB0byByZXNvbHZlIGEgYmxvYiB3aXRob3V0IGEgdXNhYmxl
IHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBibG9iRGF0
YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkpLmdldEJsb2JE
YXRhRnJvbVVSTCh1cmwpOworICAgIGF1dG8qIGJsb2JEYXRhID0gYmxvYlJlZ2lzdHJ5LT5nZXRC
bG9iRGF0YUZyb21VUkwodXJsKTsKICAgICBpZiAoIWJsb2JEYXRhKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGdldCBibG9iIGRhdGEgZnJvbSBhIHJlZ2lzdHJ5Iik7CiAgICAgICAg
IHJldHVybjsKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2
ZWQoQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3JtRGF0YSwgYwogICAg
IH0KIH0KIAotUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJs
b2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSkKIHsKICAgICAv
LyBGaXJzdCBjaGVjayBpZiBhbnkgYmxvYnMgbmVlZHMgdG8gYmUgcmVzb2x2ZWQsIG9yIHdlIGNh
biB0YWtlIHRoZSBmYXN0IHBhdGguCiAgICAgYm9vbCBoYXNCbG9iID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMjBiZjYyZTIxMDAwZjU1
MzZhNTljNjliNmM1MjU5MjA1OWE1ZjMzZi4uN2M2ODZlOGI0MjNiMzZkZThiMTJmMTBiNTdkZjE4
ZGUzZTQwOTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJsb2JS
ZWdpc3RyeTsKK2NsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNs
YXNzIEZpbGU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBm
aWxlIGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBGb3JtRGF0YSBoYXMgbm8gYmxvYiByZWZlcmVu
Y2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
PEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5Jik7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lz
dHJ5SW1wbCopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURhdGFGb3JVcGxvYWQgcHJlcGFy
ZUZvclVwbG9hZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCA0N2YxNTQxOGYyYWQ0ZDVm
ODVkNjA5Yjc5NzgzNjY3OTYwZmJiZGY0Li41M2ZlYTA1NjM1OThhYzE4OTVlOTY3NjQzNzJhMTdl
N2Q5ZDJlYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0
aWMgdm9pZCBmb3JtRXZlbnRDYWxsYmFjayhDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVh
bUV2ZW50VHlwZSB0eXBlLCB2bwogCiBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBjcmVhdGVI
VFRQQm9keUNGUmVhZFN0cmVhbShGb3JtRGF0YSYgZm9ybURhdGEpCiB7Ci0gICAgYXV0byByZXNv
bHZlZEZvcm1EYXRhID0gZm9ybURhdGEucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGJsb2JSZWdpc3Ry
eSgpKTsKKyAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxvYlJl
ZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpKTsKICAgICBhdXRvIGRh
dGFGb3JVcGxvYWQgPSByZXNvbHZlZEZvcm1EYXRhLT5wcmVwYXJlRm9yVXBsb2FkKCk7CiAKICAg
ICAvLyBQcmVjb21wdXRlIHRoZSBjb250ZW50IGxlbmd0aCBzbyBDRk5ldHdvcmsgZG9lc24ndCB1
c2UgY2h1bmtlZCBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggODBmZTFhMmRkYzNlMTNh
MDIwYjI1NjRhNjJkYzU1M2YwYjVkNDRkMC4uZmZmYjQ3MzVkYjIxZWQ1NGE4MGI0ZDAzZjRkNGU3
MDQ1NDZiZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZC5oIgotI2luY2x1
ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Nlc3Npb24uaCIKQEAgLTU1LDEwICs1NCwxMCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYQog
ICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5jbGllbnRD
cmVkZW50aWFsUG9saWN5ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHM7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKLSAg
ICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHBhcmFtZXRl
cnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KS0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAgcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3
b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnko
KSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2Fk
SUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkt
PmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXgg
Mzg2YzllNzZmZWM5MzZjMTU0ZWY3NGFmYWFkMWI4NTA2YTdhNTdmNC4uNzRlZDEzYmU2MTNkNzFm
ZDMzMjQxNjk1ZTVkYjM2MTZjMjQ1MDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTU1LDcgKzU1
LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjsK
IGNsYXNzIERvd25sb2FkOwotY2xhc3MgTmV0d29ya0Jsb2JSZWdpc3RyeTsKIGNsYXNzIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5k
aW5nRG93bmxvYWQ7CkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBB
dXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFuYWdlcigpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBlbmRpbmdEb3dubG9hZENhbmNlbGVkKERvd25sb2Fk
SUQpID0gMDsKICAgICAgICAgdmlydHVhbCBOZXR3b3JrU2Vzc2lvbiogbmV0d29ya1Nlc3Npb24o
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgTmV0d29y
a0Jsb2JSZWdpc3RyeSYgbmV0d29ya0Jsb2JSZWdpc3RyeSgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgY29u
c3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHVpbnQzMl90IGRvd25sb2FkTW9uaXRvclNwZWVkTXVs
dGlwbGllcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA2Mzk5OGQ1
ODY4MTU4ODU4NjU5YWQ5MmFjMjAwNTNhMjM2ZTA2NjM0Li43NjRhZTk0ZWYwZjQ0NGE4MWUwNWI2
YjI5ODg3ZjdjOTg2YzhlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC0xNjYsMjAg
KzE2Niw0IEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Js
b2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0NvCiAgICAgcmV0dXJuIGZpbGVzSW5CbG9i
KHVybCk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29y
a0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgQVNTRVJU
KG1fYmxvYlJlZ2lzdHJ5LmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKTsKLSAgICBCbG9iRGF0YSogYmxv
YkRhdGEgPSBtX2Jsb2JSZWdpc3RyeS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKLSAgICBpZiAo
IWJsb2JEYXRhKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0m
IGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgewotICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0g
QmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVt
LmZpbGUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NGNmZWQ5ZGFmNzk4MDNi
YzVhZjgxNWY4NDliY2EyYTEwY2U3ZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJ
bXBsLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKLWNsYXNz
IEJsb2JQYXJ0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7Ci1jbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwotCi1jbGFzcyBOZXR3
b3JrQmxvYlJlZ2lzdHJ5IHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtCbG9iUmVnaXN0
cnkpOwotcHVibGljOgotICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKLSAgICB+TmV0d29ya0Js
b2JSZWdpc3RyeSgpOwotCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25z
dCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50
NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB1aW50NjRfdCBi
bG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYpOwotICAg
IHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAg
ICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJp
bmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7Ci0KLSAg
ICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+PiBmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNv
bnN0IFVSTCYpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgV2ViQ29yZTo6QmxvYlJl
Z2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9ibG9iUmVnaXN0cnk7IH0KLQot
cHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqLCBIYXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwotICAgIEJsb2JGb3JDb25u
ZWN0aW9uTWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGwgbV9ibG9iUmVnaXN0cnk7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDliMWI5Yjg2MDQzOGQ5YjZhM2YxMjY4OTE0NjJiMzM2YmM1OWZjNGQuLjQ5ZjQ1Mzgz
M2VmZjBkNzBjZjg3Njc1NWZmOGYwOWQ2NzdkNmU1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC0zMDEsNyArMzAxLDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9uKTsKIAotICAg
IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzRGlkQ2xvc2UoKnRoaXMpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsKIAogI2lmIFVTRShMSUJXRUJSVEMpCkBA
IC0zNzQsMTMgKzM3MywxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
bmRTdXNwZW5zaW9uKCkKIAogVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb2x2ZUJsb2JSZWZlcmVu
Y2VzKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewor
ICAgIGF1dG8qIGJsb2JSZWdpc3RyeSA9IG5ldHdvcmtQcm9jZXNzKCkuYmxvYlJlZ2lzdHJ5KCp0
aGlzKTsKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXM7CiAg
ICAgaWYgKGF1dG8qIGJvZHkgPSBwYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cEJvZHkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVtZW50cygpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29k
ZWRCbG9iRGF0YT4oZWxlbWVudC5kYXRhKSkKLSAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmRW
ZWN0b3IobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9i
KCp0aGlzLCBibG9iRGF0YS0+dXJsKSk7CisgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kVmVj
dG9yKGJsb2JSZWdpc3RyeS0+ZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9
Ci0gICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVy
cy5yZXF1ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9uZXR3
b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpKSk7CisgICAg
ICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1
ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVzOwpAQCAtNTY4LDUxICs1NzEsODMgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QKICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2Vzcygp
LCBzZXNzaW9uSUQpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyRmlsZUJsb2JVUkwoKnRoaXMsIHVybCwgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSksIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlm
ICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUoZXh0ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVj
dG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxv
YlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCwgV1RG
TW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
QmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2spCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCwgc3JjVVJMLCBzaG91bGRCeXBhc3ND
b25uZWN0aW9uQ2hlY2spOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBz
cmNVUkwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3
b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoKnRo
aXMsIHVybCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgY29udGVudFR5cGUpOworICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFj
a2VkUGF0aCwgbnVsbHB0ciksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3
b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoKnRoaXMsIHVybCwgc3Jj
VVJMLCBzdGFydCwgZW5kKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+
bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwpOworICAg
IGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5i
bG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJs
b2JTaXplKCp0aGlzLCB1cmwpKTsKKyAgICBhdXRvKiBibG9iUmVnaXN0cnkgPSBuZXR3b3JrUHJv
Y2VzcygpLmJsb2JSZWdpc3RyeSgqdGhpcyk7CisgICAgaWYgKCFibG9iUmVnaXN0cnkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGJsb2JSZWdpc3RyeS0+YmxvYlNp
emUodXJsKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogeworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICBy
ZXR1cm47CisKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVS
ZWZlcmVuY2VzOwogICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCi0gICAgICAgIGZpbGVS
ZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lz
dHJ5KCkuZmlsZXNJbkJsb2IoKnRoaXMsIHsgeyB9LCB1cmwgfSkpOworICAgICAgICBmaWxlUmVm
ZXJlbmNlcy5hcHBlbmRWZWN0b3Ioc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Io
eyB7IH0sIHVybCB9KSk7CiAKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykK
ICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIG1fbmV0d29ya1By
b2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhi
bG9iVVJMcywgW2ZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJlbmNlcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBmaWxlTmFt
ZXMpIG11dGFibGUgeworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBbZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZl
cmVuY2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGZpbGVOYW1lcykgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGZp
bGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVOYW1lcykpOwpAQCAtNjIxLDEyICs2
NTYsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKIAogVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgdXJsKTsKLX0KKyAg
ICBhdXRvKiBibG9iUmVnaXN0cnkgPSBuZXR3b3JrUHJvY2VzcygpLmJsb2JSZWdpc3RyeSgqdGhp
cyk7CisgICAgaWYgKCFibG9iUmVnaXN0cnkpCisgICAgICAgIHJldHVybiB7IH07CiAKLVdlYkNv
cmU6OkJsb2JSZWdpc3RyeUltcGwmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9i
UmVnaXN0cnkoKQotewotICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJl
Z2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCk7CisgICAgcmV0dXJuIGJsb2JSZWdpc3RyeS0+ZmlsZXNJ
bkJsb2IodXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1
YWI0OGNlNi4uMjhhNDU1NTQ5NDQxZDMxNGJhNWQyZDI5NjcxZGMwNDFmODc0Yjk3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTM4LDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBPcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQs
IGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBz
dG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
LCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7CiAKLSAgICBXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKTsKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAK
QEAgLTE4MywxNCArMTgyLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCi0gICAgdm9p
ZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFy
dD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFz
c0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBz
dGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9i
UGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAg
IHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmEyYzMxYTQx
M2FmNjIxOTQ5M2NkNGNlYTJiYzdjNGFmYTkyMDU5MC4uMWU3N2M4YWI5ODQ0OWZmMDRlZmFiNzkz
MDVkNTEzOGRlYmQ4NWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC00MSwxNCArNDEsMTQgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJl
Z2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAg
IFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQ
YXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJM
IHVybCwgVVJMIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCi0gICAg
UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwg
U3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRf
dCBlbmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBSZWdpc3RlckZpbGVC
bG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNv
bnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29u
dGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJM
LCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBz
cmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkKICAgICBCbG9iU2l6ZShVUkwgdXJs
KSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKLSAgICBXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVOYW1lcykgQXN5bmMKKyAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0
cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOWNiNGE5MjUyMjA5MDViNGMyMWE0Zjc2
YWU3NzZhZTE0NTAyNWY4Ny4uYTk4ZjcwZmE5OWE1NjUwMWM3YzFkYWY1MjlhZWViMDcwOWQyYzZm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTYxMiw2ICs2MTIsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Np
b24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICBtX3N0b3JhZ2VRdW90YU1h
bmFnZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCitCbG9iUmVnaXN0cnlJbXBsKiBOZXR3b3Jr
UHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgdGhpcyBtZXRob2QgYW5kIHVzZSBz
ZXNzaW9uSUQgLT4gTmV0d29ya1Nlc3Npb24gLT4gYmxvYiByZWdpc3RyeS4KKyAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOworICAgIHJldHVybiBzZXNzaW9uID8gJnNlc3Npb24tPmJsb2JSZWdpc3RyeSgpIDogbnVs
bHB0cjsKK30KKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2ZhODIxNzA4Li45NDg2OTA0
NjVhYTE2NDBiOWFhZWVhZWZhOGIyZTQ0YmM2NTJkMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVk
ZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
IkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4
dGVuc2lvbi5oIgpAQCAtMzI3LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNh
Y2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CiAKLSAgICBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OyB9CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKICAgICB2
b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpBZENs
aWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpAQCAtNDk4LDcg
KzQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPj4gbV9uZXR3b3JrU2Vzc2lvbnM7CiAgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4+IG1fbmV0d29ya1N0b3JhZ2VTZXNzaW9uczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1fZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjsKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5IG1fbmV0d29ya0Jsb2JSZWdpc3Ry
eTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmMjM0ZTI5NDFkM2UxZTUx
NmVhMzhiNmRmNmVjNTNlYzIwYTc1MDE3Li4wYzg0NmRiMDI0MmYzYTc1MTNlNmMzYjExMWVhYWMx
ZDg4NjBlYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTIsMTUg
KzUyLDE0IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAg
ICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5
IHsKLSAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZp
bmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
ICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAg
dm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6
ZShjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQot
ICAgICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgYm9v
bCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
fTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlCbG9iUmVnaXN0cnk+IGJsb2JSZWdp
c3RyeTsKICAgICByZXR1cm4gJmJsb2JSZWdpc3RyeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAz
ZGJmNDdhYjI0ZjFmZDdkZGU0NThhZjA3OWUwMGU4YTU5ZTA5NTAwLi4yYmI0ZDBhYTIwZjQ1YjBl
N2Y4ZjI2MmM1M2EyNDRiNmFlZTY0MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJs
b2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2Qy
NGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAuLmM0ZTEwMmU3NzUyN2VlYzFmYWY1MWU3
YjA0ZTBlOTU3OTQ2NjdhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Js
b2JSZWdpc3RyeUltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC0xMTQsNiArMTE1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJTb2Nr
ZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViU29ja2V0
VGFzayhXZWJTb2NrZXRUYXNrJikgeyB9CiAKKyAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
JiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeTsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xNDMsNiArMTQ2LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFJlZlB0cjxO
ZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUlt
cGwgbV9ibG9iUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDViNGZmNjljNTRmNTAyN2FjOWU0NGQ5MDU4MDFkYjNiZjlhZGFmMjMuLmFlYjU4OThl
NGU0MDIyN2E5MzZmNzU4YjQwMjFmODM3OTg0NWM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsOCAr
NTcsNiBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFiOTc4YzNjMmE4YThlOTQ0ODhhOGE2
ODhlNWU5Mzc0ZjgyYWU4My4uYTY1YzdmOTY3MzMzNzkzNjA1ZTRhMmZmYTU4NTIxYmMzZTIwOGFi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzE3LDcgKzEzMTcsNiBAQAogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAy
QTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5w
bHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNy
b21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzky
NjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3Lmgg
Ki87IH07Ci0JCUExMDVEMEQxMjEyNzM0QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA1RDBE
MDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovOyB9OwogCQlBMTE1
REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFC
MDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNG
aWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRy
YXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mzk4Nyw3ICszOTg2LDYgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4
dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0
UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmll
dy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8q
IFdLUERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9
IGlvcy9XS1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMDVEMEQw
MjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNrTG9v
a0RvY3VtZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjIxLDcg
KzQ2MTksNiBAQAogCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NjkxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JS
ZWdpc3RyeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJs
b2JSZWdpc3RyeVByb3h5LmNwcDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4NzZBMTZENkNB
NjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5oOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzk4
Qzc3MTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMTE2QjlDMTM5MDAxQzQyRjEgLyogY29t
LmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0
Lk5ldHdvcmtQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdB
RTJDMjE2QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNz
LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMThD
OTJGMzEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02NjY3LDcgKzY2NjQsNiBAQAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQwMEQ0MTE4MyAv
KiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERv
d25sb2FkcyAqLywKIAkJCQlCQzgyODM3QzE2QjQ1REE1MDBBMjc4RkUgLyogRW50cnlQb2ludCAq
LywKLQkJCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQSSAqLywKIAkJCQk5Mzky
ODhFMDIxNDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTEx
REQwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1h
YyAqLywKQEAgLTkwMjcsMTUgKzkwMjMsNiBAQAogCQkJbmFtZSA9IEZpbGVBUEk7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyog
RmlsZUFQSSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
RTE3OThDNzcxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovLAot
CQkJCUExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8s
Ci0JCQkpOwotCQkJcGF0aCA9IEZpbGVBUEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwot
CQl9OwogCQlFMTk5ODc1QjE0MkJGOUNGMDBCQjJERTcgLyogUERGICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTk0ODMsNyArOTQ3MCw2IEBACiAJCQkJMUE0
QTlDNTYxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNUJDQjkyMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3
b3JrQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTA1RDBEMTIxMjczNEIy
MDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0
MzZFQ0MxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0Nh
Y2hlQ29kZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCAyNGUzNTU5Y2ZmMDY5
YmQzMTc5MWVlNjUxNzhlYWY0ZTRkYzBlNDdkLi4yZjNiNmJhODMxNDc4NDVlNjg2MmM0ZjkwMzk3
ZDI1MWM2NWIxN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
ZXh0ZW5zaW9uSGFuZGxlOwogCkBAIC00NCwzNyArNDQsMzMgQEAgdm9pZCBCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmls
ZVJlZmUKICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9i
VVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBmaWxlLT5wYXRoKCks
IGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+
JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRl
bnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQ
YXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBib29sIHNob3VsZEJ5
cGFzc0Nvbm5lY3Rpb25DaGVjayA9IGZhbHNlOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwgeyB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrIH0sIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHNlc3Npb25JRCwgdXJsLCBzcmNVUkwgfSwgMCk7
CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNv
cmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmls
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+
cGF0aCgpLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50
VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9i
VVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpV
bnJlZ2lzdGVyQmxvYlVSTCh1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHNlc3Np
b25JRCwgdXJsKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBz
dGFydCwgZW5kKSwgMCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94
eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCkBAIC04NSw5ICs4MSw5IEBAIHVuc2lnbmVkIGxv
bmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAg
cmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
YmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDZhYmVlMzY3NDhkZmVjYzJjYWQ0NmNjYzIyMmE3
NGM1MTc2ZDg5ZDQuLmQ3NjYxNTg3ZTNlNzQzODMyZTIzMjVjNjc5NmNmYTM0NWJiOTU2YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBC
bG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewog
cHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsOworICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9p
ZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCBkOWFkY2MyMWE4YTk2YjJhYTU0NTM2NmRlMDk1ZDA0N2M2MjU3ZWRmLi5hZmQ3NDdh
NWI5OTE4NTcwMzA4M2ZhYzU3MGZjNDhiNGU1Y2JlZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6UwogewogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVy
LCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMGNkZTU5OWIxZTA0OWQ4ODMxM2EwZDAzMDVmODAyYWY1
Mjc5ZGNkOS4uNjI2ZGFiMTFiMmRmMjk5NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIqIGV4aXN0aW5nSURCQ29ubmVjdGlvblRvU2VydmVyRm9ySWRlbnRpZmllcih1aW50NjRf
dCBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlm
aWVyLmdldChpZGVudGlmaWVyKTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRl
eCAwOGE5MDI2MjBjNjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjLi43YjMxYWIwYjBhY2Ji
MWZjODA4NjZlNmY4MzE4NzM0MmM2YmRjNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCkBAIC02Miw5ICs2MiwyNSBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0K
IAorY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeSB7Citwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJl
bmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJl
Z2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsg
fQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMp
LCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJl
bmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJl
ZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7
IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB1bnNpZ25lZCBs
b25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJl
Z2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7IH0KKworICAgIEJsb2JS
ZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVn
aXN0cnk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7Cit9OworCiBC
bG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkK
IHsKLSAgICByZXR1cm4gbmV3IFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw7CisgICAgcmV0dXJu
IG5ldyBXZWJCbG9iUmVnaXN0cnk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376057</attachid>
            <date>2019-08-12 06:10:33 -0700</date>
            <delta_ts>2019-08-12 07:24:37 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-200567-20190812151030.patch</filename>
            <type>text/plain</type>
            <size>86482</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2NWNlZmM2N2EzZjAy
YmE5OGJhZWU2ZjIxNjcyNzFmZjIwNGM5MC4uMzdkYTUwNmNiNzQyMTljYzlkMmVmNDdlMzkzNDBh
ZGE0ZjQzMTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3Mgc2Vzc2lvbiBJRHMgdG8gYWxsIEJsb2JSZWdpc3RyeSBtZXRob2RzIGluIHBhcnRpY3Vs
YXIgVGhyZWFkYWJsZUxvYWRlclJlZ2lzdHJ5LgorICAgICAgICBUaGUgb25seSBleGNlcHRpb24g
aXMgYmxvYlNpemUgd2hpY2ggc2hvdWxkIGJlIGRlYWx0IHdpdGggYSBmb2xsb3ctdXAgcGF0Y2gu
CisgICAgICAgIGJsb2JTaXplIGJsb2IgcmVnaXN0cnkgaXMgcmV0cmlldmVkIGZyb20gdGhlIGNv
bm5lY3Rpb24gLT4gc2Vzc2lvbklEIG1hcCBpbiBOZXR3b3JrIFByb2Nlc3MuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6fkZpbGVSZWFkZXJMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Lmg6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYlJlc291
cmNlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKToKKwogMjAxOS0w
OC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IElEQlZhbHVlOjptX3Nlc3Npb25JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNTRjOTEwNzc1MWNlNDYyMjRkNjg0
MmJhMTMzOGJjMDBmMTYzNDQ1Li45MTAzNzg4OWY4MDlkMmIzMjgwOTE4Mzk1NDQ4ZjNhNjU3NzUw
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJl
IGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTIwMjEyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYmxv
YiByZWdpc3RyeSB0byBOZXR3b3JrU2Vzc2lvbiBzbyB0aGF0IGl0IGlzIHBhcnRpdGlvbmVkIGJ5
IHNlc3Npb24gSUQuCisgICAgICAgIEluIGNhc2Ugc2Vzc2lvbiBJRCBpcyBub3QgZ2l2ZW4gdGhy
b3VnaCBJUEMsIHVzZSB0aGUgY29ubmVjdGlvbiBhcyBrZXkgdG8gZ2V0IHRoZSBuZXR3b3JrIHNl
c3Npb24uCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgYmxvYlNpemUuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpibG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpi
bG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDdmMGVmNTBkMzU0MzgxZWE1OGQ1MGY3YWMzMjdiMmVkNzFjOTc0ZWQu
Ljk2MmEzOGZhNTYzYzM2ZDU5OWI4NjlkYTA0ZTJjZGJlY2ZjYzMwMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3VsZCBi
ZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6Cisg
ICAgICAgIElnbm9yZSBzZXNzaW9uSUQgcGFyYW1ldGVyIGZvciBXSzEuCisKIDIwMTktMDgtMTIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREIt
c3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggYzBkYmY1ZmU1NzhmMWY1OWI2ZjRjMWIwN2FiYzAxZTdkMjUxZDc3OS4uZDhk
YjkwY2NiMTQ0OTQ2MGUyODczODFmZGY3NGIzYTJiMjAyOWRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogRmV0Y2hMb2FkZXI6On5GZXRjaExvYWRlcigpCiB7CiAgICAgaWYgKCFt
X3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVh
ZGluZyk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IpCkBAIC02NCw3ICs2NCw4IEBAIHZvaWQgRmV0
Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVVJMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9yaWdpbigpLCBt
X3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOworICAgIG1fc2Vzc2lvbklEID0gY29udGV4dC5zZXNz
aW9uSUQoKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoKm1f
c2Vzc2lvbklELCBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxv
YlVSTCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwog
ICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9ySWRlbnRpZmllcihjb250ZXh0LnJlc291cmNlUmVxdWVz
dElkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggNDAxMWIzNzM4Yzk3OWJiOTc4YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZi4uYjZjNjUw
OGNhMzc2M2UzMTMzZDRhM2RiZDQxMTk4YWNhNTg0ZTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAg
IEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBm
YWxzZSB9OwogICAgIFVSTCBtX3VybEZvclJlYWRpbmc7CisgICAgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZhYmZmYTNlMWMyZjY3ZGVlNDgxOS4uMTE0ZmYzYzhh
NWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNTY5LDEzICsz
NTY5LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYlVSTHNJ
c29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElE
QlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwogCi0gICAgLy8gRklYTUU6IEdldCB0
aGUgcmlnaHQgYmxvYiByZWdpc3RyeSBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uSUQuCi0gICAgYmxv
YlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsK
KyAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQs
IG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZp
bGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0eSgpKSB7CkBAIC0zNTg2LDcgKzM1ODUsNyBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihQQUw6OlNlc3Npb25JRCwgQ29tcGxldAogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1f
YmxvYlVSTHMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKLSAgICAgICAgCisKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyAqdGhpcywgbV9ibG9iVVJMcywgYmxvYkZpbGVQYXRo
cyB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDQ2NGMxMzcyYjBm
Mzc3Nzc1MWNhZDMzOWJhMmVkN2FhNTQ2ZDg0YmIuLjhkYWEwYzExYzZmZDkyMTM5NmZkNTc4MTM5
YzdiYzAzN2RmYzVkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNTgsMTIgKzU4LDEy
IEBAIHB1YmxpYzoKIHZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFi
bGUmIGJsb2IpCiB7CiAgICAgQVNTRVJUKCZibG9iLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNfY2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOworICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25J
RCgpLCBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8Qmxv
YiY+KGJsb2IpLnVybCgpKTsKIH0KIAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJM
UmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1cmwpOwogfQogCiBVUkxSZWdpc3RyeSYgQmxvYlVS
TFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC04Miw3ICs4Miw3IEBAIEJsb2I6OkJsb2IoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CisgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVy
bmFsVVJMLCB7IH0sICB7IH0pOwogfQogCiBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtMTAwLDcgKzEwMCw3IEBAIEJsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJs
b2JQYXJ0VmFyaWFudHMsCiAgICAgICAgICk7CiAgICAgfQogCi0gICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUo
KSwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
bV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsK
IH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTE0LDcgKzExNCw3
IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFy
dHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAg
bV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUo
YmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpA
QCAtMTI1LDcgKzEyNSw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlCiAgICAgVmVjdG9yPEJs
b2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3Zl
KGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwg
V1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJl
bmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTEzNCw3
ICsxMzQsNyBAQCBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3Is
IGNvbnN0IEJsb2ImIGJsb2IpCiAgICAgLCBtX3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3Np
emUoYmxvYi5zaXplKCkpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7
CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklE
LCBtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQog
CiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25n
IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCkBAIC0xNDQsOSArMTQ0LDkgQEAg
QmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgc3JjVVIKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQot
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwg
bV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNV
UkwpOwogICAgIGVsc2UKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFj
a2VkUGF0aCwgbV90eXBlKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkws
IHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsbwogICAgICwgbV9zaXplKC0xKSAvLyBzaXplIGlzIG5vdCBu
ZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydC4KIHsKICAgICBtX2ludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBl
bmQpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCiBC
bG9iOjp+QmxvYigpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwobV9pbnRlcm5hbFVSTCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwpOwogfQogCiB1bnNpZ25lZCBs
b25nIGxvbmcgQmxvYjo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBl
YjViNmExNzY3OGEzNGRhM2MwYzZhZWI5ZjhjNWJlZjRlZDBhZjIwLi5jZmNmNTVlMTljZDNkZDE3
MzUxNmMxOWYzNWNiN2EwYWYxMWFkYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgRmlsZTo6RmlsZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxV
UkwoKTsKICAgICBtX3NpemUgPSAtMTsKICAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKG1f
cGF0aCwgU3RyaW5nKCksIG1fbmFtZSwgbV90eXBlKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7Cisg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQs
IG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CiB9CiAKIEZpbGU6OkZpbGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5k
ZXggODk3MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNy4uNGRjZDBkZDBjMDlj
N2YwYzBlODc0NmFkODAxMzY2ZDhjYWU2OThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIEZpbGVSZWFkZXJMb2FkZXI6
On5GaWxlUmVhZGVyTG9hZGVyKCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKICAgICBpZiAoIW1fdXJs
Rm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgbV91cmxGb3JSZWFkaW5n
KTsKIH0KIAogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iJiBibG9iKQpAQCAtODEsNyArODEsOCBA
QCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsbwogICAgICAgICBmYWlsZWQoRmlsZUVycm9yOjpTRUNV
UklUWV9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9y
aWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2IudXJsKCkpOworICAgIG1fc2Vzc2lvbklEID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vzc2lvbklEKCk7CisgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAog
ICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAppbmRleCA3YTQyOGJlNTA1N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVhMjll
MDBhLi40MTliMjA5M2M3ZDc5MGJmMjE1M2RhMmJjZDI5MTU0ZGRiNjBkNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCiAg
ICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9z
ZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDViYzliYWY3ODI3OTZi
YTQzM2Q3ZTgyOWMxMGFmNjc3MTdhYTQzOTAuLmE5NWIyNDlmOGM4NDIzZmQ3NDViYzJhYzk3YjI3
YmMwNGFhM2E3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTA5ICs2NCw5NyBAQCBzdGF0aWMgVGhyZWFkU3BlY2lm
aWM8QmxvYlVybE9yaWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAK
LXN0YXRpYyB2b2lkIHBvc3RUb01haW5UaHJlYWQoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKK3Zv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwotICAgIHN0YXRpYyBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4qIHF1ZXVl
OwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIHF1ZXVlID0gbmV3
IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKLSAgICB9KTsKLQotICAgIHF1ZXVl
LT5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAg
ICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtdIHsKLSAgICAgICAgYXV0
byB0YXNrID0gcXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKLSAgICAgICAgQVNTRVJUKHRhc2spOwot
ICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Np
b25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHko
KSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwogICAgIH0pOwogfQog
Ci12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
LXsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwg
Y29udGVudFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwg
PSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50
VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpj
cmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi12b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
VmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgp
KQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJs
b2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBw
YXJ0IDogYmxvYlBhcnRzKQotICAgICAgICAgICAgcGFydC5kZXRhY2hGcm9tQ3VycmVudFRocmVh
ZCgpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCks
IGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlw
ZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwot
ICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBmb3IgKGF1dG8mIHBh
cnQgOiBibG9iUGFydHMpCisgICAgICAgIHBhcnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHko
KSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRU
eXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVu
dFR5cGUpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICAvLyBJZiB0aGUgYmxvYiBVUkwg
Y29udGFpbnMgbnVsbCBvcmlnaW4sIGFzIGluIHRoZSBjb250ZXh0IHdpdGggdW5pcXVlIHNlY3Vy
aXR5IG9yaWdpbiBvciBmaWxlIFVSTCwgc2F2ZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHVybCBhbmQg
b3JpZ2luIHNvIHRoYXQgdGhlIG9yaWdpbiBjYW4gYmUgcmV0cml2ZWQgd2hlbiBkb2luZyBzZWN1
cml0eSBvcmlnaW4gY2hlY2suCiAgICAgaWYgKG9yaWdpbiAmJiBCbG9iVVJMOjpnZXRPcmlnaW4o
dXJsKSA9PSAibnVsbCIpCiAgICAgICAgIG9yaWdpbk1hcCgpLT5hZGQodXJsLnN0cmluZygpLCBv
cmlnaW4pOwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwotICAgIGVsc2UgewotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7
CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwg
c3JjVVJMKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNl
c3Npb25JRCwgdXJsLCBzcmNVUkwpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRo
cmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmls
ZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7Ci0gICAgZWxzZQotICAgICAgICBwb3N0VG9NYWlu
VGhyZWFkKGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQ
YXRoLCBjb250ZW50VHlwZSkpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9u
SUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2Vk
UGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsT25N
YWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0g
c3JjVVJMLmlzb2xhdGVkQ29weSgpLCBmaWxlQmFja2VkUGF0aCA9IGZpbGVCYWNrZWRQYXRoLmlz
b2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOworICAgIH0pOwogfQogCi12b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3
VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQor
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VS
TCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIGlmIChpc01haW5UaHJl
YWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3
VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtuZXdVUkwgPSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5p
c29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwotICAg
ICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCBuZXdVUkwsIHNyY1VSTCwgc3Rh
cnQsIGVuZCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtzZXNzaW9uSUQsIG5ld1VSTCA9IG5ld1VSTC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3Jj
VVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwgZW5kXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0
LCBlbmQpOworICAgIH0pOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBs
b25nIHJlc3VsdFNpemU7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4g
YmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXN1bHRTaXplOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgY2FsbE9uTWFp
blRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6
ZV0gewogICAgICAgICByZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAm
cmVzdWx0U2l6ZV0gewotICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJs
b2JTaXplKHVybCk7Ci0gICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgIH0p
OwotICAgICAgICBzZW1hcGhvcmUud2FpdCgpOwotICAgIH0KKyAgICAgICAgc2VtYXBob3JlLnNp
Z25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7CiAgICAgcmV0dXJuIHJlc3Vs
dFNpemU7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0
ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2lu
TWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKQot
ICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgIGVsc2Ug
ewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAg
ICAgIH0pOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnko
KS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lv
bklELCB1cmwpOworICAgIH0pOwogfQogCiBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTljNzlm
ZTIyOTJmODk1YjMxYzYwZjc1NjdmZmQwNDkzZmVkYzgzMi4uMzE1ZjVjYWRiNDY2Mzg5ODBiNGMx
ZmQ4ZWM1YjY3ZGJlM2U0MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7Ci0gICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKTsKLSAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7CisgICAg
c3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYp
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJlZGJh
ZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdkN2ZiMC4uN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4
YTA3Yzc4ZTZjNTc5ZDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNV
UkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCkBAIC0yNiw4ICsyNiw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
dWJsaWNVUkxNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgorCiAjaW5jbHVkZSAiVVJM
UmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAKaW5kZXggOGI5MWUxYzMyNGQ3OGU3MTVlOGRlN2Y3NzhmNDM4YmNjZGNh
OGNjZS4uNTM2MzcwM2I4Y2I0M2MyYmQ5MzAwZmI2NWE5NzQ0ZjQ4NWRkZWU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTA2LDEwICsxMDYsMTEgQEAgQ29t
cGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExp
ZmV0aW1lSWZOZWNlc3NhcnkoUmUKIAogICAgIC8vIENyZWF0ZSBhIG5ldyB0ZW1wb3JhcnkgYmxv
YlVSTCBpbiBjYXNlIHRoaXMgb25lIGdldHMgcmV2b2tlZCBkdXJpbmcgdGhlIGFzeW5jaHJvbm91
cyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KICAgICBVUkwgdGVtcG9yYXJ5QmxvYlVSTCA9
IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTCgmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5Qmxv
YlVSTCwgcmVxdWVzdC51cmwoKSk7CisgICAgYXV0byBzZXNzaW9uSUQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNlc3Npb25JRCgpOworICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChz
ZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwsIHJlcXVlc3QudXJsKCkpOwogICAgIHJlcXVlc3Qu
c2V0VVJMKHRlbXBvcmFyeUJsb2JVUkwpOwotICAgIHJldHVybiBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+KFt0ZW1wb3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0gewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJM
KTsKKyAgICByZXR1cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0ZW1w
b3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0geworICAgICAgICBibG9i
UmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaAppbmRleCAyZTg5M2JkY2M4OGEzMWZjOWViNGE5ZjM0YzlkZDc4YjY5YzQ4Y2Zk
Li42NjBhNzk2ZDBiMmQ4OTg2MjUxYjgwNmQzOTEzYmY5MTQ1NGU5ZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFz
cyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKK2NsYXNzIEJsb2JSZWdpc3RyeUltcGw7
CiAKIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKQEAgLTQ2
LDI3ICs0OCwyNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVibGlj
OgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZp
ZWQgZmlsZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVy
cmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVSTCBy
ZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQgc3Jj
VVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgPSAwOwogCiAgICAgLy8g
UmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50
aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwgb3IsIGlmIG5vbmUgZm91bmQsIHJlZmVycmlu
ZyB0byB0aGUgZmlsZSBmb3VuZCBhdCB0aGUgZ2l2ZW4gcGF0aC4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSA9IDA7CiAKICAgICAvLyBOZWdhdGl2ZSBzdGFydCBhbmQgZW5kIHZhbHVlcyBzZWxl
Y3QgZnJvbSB0aGUgZW5kLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAKaW5kZXggMTI5MDk1YjQ0NmE0NGYyODAzZWExMDE4YzI2ZGI3NTE4NTI3MDFhNS4uNWIyMmJk
MTY4YzNlYTUzYTkyY2E0YWU4OTQ0MmU5YjkxMTQ0ODVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC01NCwxMiAr
NTQsMTIgQEAgQmxvYlJlZ2lzdHJ5SW1wbDo6fkJsb2JSZWdpc3RyeUltcGwoKSA9IGRlZmF1bHQ7
CiAKIHN0YXRpYyBSZWY8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVn
aXN0cnkoKSkuY3JlYXRlUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50KTsKKyAgICByZXR1
cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5jcmVhdGVSZXNvdXJjZUhhbmRs
ZShyZXF1ZXN0LCBjbGllbnQpOwogfQogCiBzdGF0aWMgdm9pZCBsb2FkQmxvYlJlc291cmNlU3lu
Y2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIEJsb2JE
YXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0
cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8qIGJsb2JE
YXRhID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5nZXRCbG9iRGF0YUZyb21V
UkwocmVxdWVzdC51cmwoKSk7CiAgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGJsb2JEYXRhLCByZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwog
fQogCkBAIC0zNDMsNCArMzQzLDE5IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9i
VG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0CiAgICAgfSk7
CiB9CiAKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gQmxvYlJlZ2lzdHJ5
SW1wbDo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgYXV0byogYmxv
YkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBpZiAoIWJsb2JEYXRhKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiByZXN1bHQ7CisgICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0
YS0+aXRlbXMoKSkgeworICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpU
eXBlOjpGaWxlKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpbGUoKSk7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApp
bmRleCBlMTUxZDNhZmIwNjZkYmY1YjVlZThmZWQ3ZDhhZjY4NjJlMDhiZTg2Li5kYjlkNmRmNzBi
NzhkMTUzNTQ5NzAyMzZjNzVkMTBmMzQ2OWU4ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNDYsNyArNDYsNyBAQCBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAogLy8g
QmxvYlJlZ2lzdHJ5SW1wbCBpcyBub3QgdGhyZWFkLXNhZmUuIEl0IHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBmcm9tIG1haW4gdGhyZWFkLgotY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5
SW1wbCBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
QmxvYlJlZ2lzdHJ5SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5SW1wbCgpOwpAQCAtNTgsMTcgKzU4LDE2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3QgQmxv
YkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogCi0g
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlk
ZTsKLSAgICBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYpOwogCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0
IFVSTCYpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBV
UkwmKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKTsKIAogICAgIHN0cnVjdCBCbG9i
Rm9yRmlsZVdyaXRpbmcgewogICAgICAgICBTdHJpbmcgYmxvYlVSTDsKQEAgLTc2LDYgKzc1LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICBib29sIHBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGlu
Zyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxCbG9iRm9yRmlsZVdyaXRp
bmc+Jik7CisgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0lu
QmxvYihjb25zdCBVUkwmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZDZmMjkxNjFhNDdkYjU0ZjRkNGZhYmExNDUxZmQ5YjY1
MjE3MDE3YS4uZDcxYjFlZGNjZmNhZDE4YzVlZWM3MDJlMmYxZWVkZjdmOTZiNjNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI4NiwxNCAr
Mjg2LDE0IEBAIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5k
QmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9ybURh
dGEsIGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JS
ZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwm
IHVybCkKIHsKLSAgICBpZiAoIWJsb2JSZWdpc3RyeS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgewor
ICAgIGlmICghYmxvYlJlZ2lzdHJ5KSB7CiAgICAgICAgIExPR19FUlJPUigiVHJpZWQgdG8gcmVz
b2x2ZSBhIGJsb2Igd2l0aG91dCBhIHVzYWJsZSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJ
bXBsJj4oYmxvYlJlZ2lzdHJ5KS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBhdXRvKiBi
bG9iRGF0YSA9IGJsb2JSZWdpc3RyeS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CiAgICAgaWYg
KCFibG9iRGF0YSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRh
IGZyb20gYSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5
LCBGb3JtRGF0YSYgZm9ybURhdGEsIGMKICAgICB9CiB9CiAKLVJlZjxGb3JtRGF0YT4gRm9ybURh
dGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkKK1Jl
ZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnlJ
bXBsKiBibG9iUmVnaXN0cnkpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgYW55IGJsb2JzIG5l
ZWRzIHRvIGJlIHJlc29sdmVkLCBvciB3ZSBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLgogICAgIGJv
b2wgaGFzQmxvYiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IDIwYmY2MmUyMTAwMGY1NTM2YTU5YzY5YjZjNTI1OTIwNTlhNWYzM2YuLjdj
Njg2ZThiNDIzYjM2ZGU4YjEyZjEwYjU3ZGYxOGRlM2U0MDk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBCbG9iUmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0cnlJ
bXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlc29sdmUgYWxsIGJsb2Ig
cmVmZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KICAgICAvLyBJZiB0aGUg
Rm9ybURhdGEgaGFzIG5vIGJsb2IgcmVmZXJlbmNlcyB0byByZXNvbHZlLCB0aGlzIGlzIHJldHVy
bmVkLgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVu
Y2VzKEJsb2JSZWdpc3RyeSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVz
b2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeUltcGwqKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIEZvcm1EYXRhRm9yVXBsb2FkIHByZXBhcmVGb3JVcGxvYWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggNDdmMTU0MThmMmFkNGQ1Zjg1ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNC4uNTNm
ZWEwNTYzNTk4YWMxODk1ZTk2NzY0MzcyYTE3ZTdkOWQyZWJlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZS
ZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIAogUmV0YWlu
UHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEm
IGZvcm1EYXRhKQogewotICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29s
dmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKSk7CisgICAgYXV0byByZXNvbHZlZEZvcm1E
YXRhID0gZm9ybURhdGEucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGJsb2JSZWdpc3RyeSgpLmJsb2JS
ZWdpc3RyeUltcGwoKSk7CiAgICAgYXV0byBkYXRhRm9yVXBsb2FkID0gcmVzb2x2ZWRGb3JtRGF0
YS0+cHJlcGFyZUZvclVwbG9hZCgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBs
ZW5ndGggc28gQ0ZOZXR3b3JrIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCmluZGV4IDgwZmUxYTJkZGMzZTEzYTAyMGIyNTY0YTYyZGM1NTNmMGI1ZDQ0ZDAuLmZm
ZmI0NzM1ZGIyMWVkNTRhODBiNGQwM2Y0ZDRlNzA0NTQ2YmY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCiAj
aW5jbHVkZSAiRG93bmxvYWQuaCIKLSNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3
b3JrTG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCkBAIC01NSwxMCArNTQsMTAg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1
ZXN0OwogICAgIHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRl
bnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwogICAgIGlmIChyZXF1ZXN0
LnVybCgpLnByb3RvY29sSXNCbG9iKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZl
cmVuY2VzID0gY2xpZW50KCkubmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVl
c3QudXJsKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVu
dCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9i
KHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
PSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPiht
X2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3Jr
QmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFt
ZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRh
c2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93
bmxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDM4NmM5ZTc2ZmVjOTM2YzE1NGVmNzRhZmFhZDFi
ODUwNmE3YTU3ZjQuLjc0ZWQxM2JlNjEzZDcxZmQzMzI0MTY5NWU1ZGIzNjE2YzI0NTA4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CiBjbGFzcyBEb3dubG9hZDsKLWNsYXNzIE5ldHdv
cmtCbG9iUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNs
YXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwpAQCAtNzUsNyArNzQsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBkb3dubG9h
ZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwZW5k
aW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgTmV0
d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJikgY29uc3Qg
PSAwOwotICAgICAgICB2aXJ0dWFsIE5ldHdvcmtCbG9iUmVnaXN0cnkmIG5ldHdvcmtCbG9iUmVn
aXN0cnkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB1aW50
MzJfdCBkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5jcHAKaW5kZXggNjM5OThkNTg2ODE1ODg1ODY1OWFkOTJhYzIwMDUzYTIzNmUw
NjYzNC4uNzY0YWU5NGVmMGY0NDRhODFlMDViNmIyOTg4N2Y3Yzk4NmM4ZWU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTY2LDIwICsxNjYsNCBAQCBWZWN0b3I8UmVmUHRyPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdv
cmtDbwogICAgIHJldHVybiBmaWxlc0luQmxvYih1cmwpOwogfQogCi1WZWN0b3I8UmVmUHRyPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKGNv
bnN0IFVSTCYgdXJsKQotewotICAgIEFTU0VSVChtX2Jsb2JSZWdpc3RyeS5pc0Jsb2JSZWdpc3Ry
eUltcGwoKSk7Ci0gICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gbV9ibG9iUmVnaXN0cnkuZ2V0Qmxv
YkRhdGFGcm9tVVJMKHVybCk7Ci0gICAgaWYgKCFibG9iRGF0YSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0Owot
ICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsK
LSAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKCkpOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNjRjZmVkOWRhZjc5ODAzYmM1YWY4MTVmODQ5YmNhMmExMGNlN2UwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U7Ci1jbGFzcyBCbG9iUGFydDsKLX0KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotY2xhc3MgU2Fu
ZGJveEV4dGVuc2lvbjsKLQotY2xhc3MgTmV0d29ya0Jsb2JSZWdpc3RyeSB7Ci1XVEZfTUFLRV9O
T05DT1BZQUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKLXB1YmxpYzoKLSAgICBOZXR3b3JrQmxv
YlJlZ2lzdHJ5KCk7Ci0gICAgfk5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKLQotICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZp
bGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgVVJMJik7Ci0gICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwotCi0gICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNz
RGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKLQotICAgIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYp
OwotICAgIAotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpIHsg
cmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9Ci0KLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxVUkw+PiBCbG9iRm9yQ29u
bmVjdGlvbk1hcDsKLSAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlv
bjsKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OwotfTsKLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjFiOWI4NjA0MzhkOWI2YTNmMTI2
ODkxNDYyYjMzNmJjNTlmYzRkLi4yZTRmNTNkMmFkYzBlODUyMDI2YjAzNzFiNTE1NGQ0YjNjODk5
NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzAxLDcgKzMwMSw2IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NXYXNEaXNj
b25uZWN0ZWQoY29ubmVjdGlvbik7CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkuY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlzKTsKICAgICBt
X25ldHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhp
cyk7CiAKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAtMzc0LDEzICszNzMsMTkgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAKIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CisgICAgaWYgKCFz
ZXNzaW9uKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byYgYmxvYlJlZ2lzdHJ5ID0g
c2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCk7CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzOwogICAgIGlmIChhdXRvKiBib2R5ID0gcGFyYW1l
dGVycy5yZXF1ZXN0Lmh0dHBCb2R5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
Ym9keS0+ZWxlbWVudHMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RG
OjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KGVsZW1lbnQuZGF0YSkp
Ci0gICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kVmVjdG9yKG1fbmV0d29ya1Byb2Nlc3MtPm5l
dHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgYmxvYkRhdGEtPnVybCkpOwor
ICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZlY3RvcihibG9iUmVnaXN0cnkuZmlsZXNJbkJs
b2IoYmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1ZXN0KS5zZXRIVFRQQm9keShib2R5
LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdp
c3RyeSgpLmJsb2JSZWdpc3RyeSgpKSk7CisgICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNv
bHZlQmxvYlJlZmVyZW5jZXMoJmJsb2JSZWdpc3RyeSkpOwogICAgIH0KIAogICAgIHJldHVybiBm
aWxlczsKQEAgLTU2OCw2NyArNTczLDg5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAg
c3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUo
dXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9u
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nl
c3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKCp0aGlzLCB1cmws
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkp
LCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJs
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29u
dGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5
cGUpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBt
X25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKCp0
aGlzLCB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKCp0aGlzLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tl
ZFBhdGgsIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgsIG51bGxwdHIpLCBjb250ZW50
VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQp
CiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKCp0aGlzLCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5k
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJs
b2JVUkwodXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Ymxv
YlNpemUoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fbmV0d29ya1By
b2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSgqdGhpcywgdXJsKSk7CisgICAg
YXV0byogYmxvYlJlZ2lzdHJ5ID0gbmV0d29ya1Byb2Nlc3MoKS5ibG9iUmVnaXN0cnkoKnRoaXMp
OworICAgIGlmICghYmxvYlJlZ2lzdHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihibG9iUmVnaXN0cnktPmJsb2JTaXplKHVybCkpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgVmVjdG9yPFJlZlB0
cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlUmVmZXJlbmNlczsKICAgICBmb3IgKGF1dG8m
IHVybCA6IGJsb2JVUkxzKQotICAgICAgICBmaWxlUmVmZXJlbmNlcy5hcHBlbmRWZWN0b3IobV9u
ZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKCp0aGlzLCB7
IHsgfSwgdXJsIH0pKTsKKyAgICAgICAgZmlsZVJlZmVyZW5jZXMuYXBwZW5kVmVjdG9yKHNlc3Np
b24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHsgeyB9LCB1cmwgfSkpOwogCiAgICAgZm9y
IChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgIGZpbGUtPnByZXBhcmVGb3JG
aWxlQWNjZXNzKCk7CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5
KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFtmaWxlUmVmZXJlbmNlcyA9
IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZmlsZU5hbWVzKSBtdXRhYmxlIHsKKyAgICBzZXNzaW9u
LT5ibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgW2Zp
bGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJlbmNlcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBmaWxlTmFtZXMpIG11dGFibGUg
ewogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAgICAgICAgICAg
IGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShmaWxlTmFtZXMpKTsKICAgICB9KTsKIH0KIAotVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Zmls
ZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgdXJsKTsKLX0KLQotV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJs
b2JSZWdpc3RyeSgpCi17Ci0gICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9i
UmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsKLX0KLQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29s
IGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVk
ID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBkN2IyZjFiNjNiYzdiMDRm
ZTAzMGUwMzY1ZTIxMzZmNzVhYjQ4Y2U2Li44ZmU5ZjMyYzllZmM2MmZkM2M1M2UwYjEyYzJkZDVk
MmM0NWRlMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzgsOCArMTM4LDYgQEAg
cHVibGljOgogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tp
bmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmKTsKICAgICB2b2lkIHN0b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHJlc291cmNlSUQsIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2Rl
KTsKIAotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwotICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJs
b2IoY29uc3QgVVJMJik7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+PiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmKTsKIAogICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFn
ZUlEKTsKQEAgLTE4MywxNCArMTgxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCi0g
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpC
bG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50
NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9i
U2l6ZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CisgICAgdm9pZCB3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsK
IAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29s
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmEy
YzMxYTQxM2FmNjIxOTQ5M2NkNGNlYTJiYzdjNGFmYTkyMDU5MC4uMWU3N2M4YWI5ODQ0OWZmMDRl
ZmFiNzkzMDVkNTEzOGRlYmQ4NWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC00MSwxNCArNDEsMTQgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFJhd0Nvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAot
ICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBl
KQotICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+
IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sp
Ci0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNy
Y1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAgICBSZWdpc3Rl
ckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3Ry
aW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJp
bmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwg
c3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBS
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmws
IFVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVucmVnaXN0ZXJC
bG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkKICAgICBCbG9iU2l6ZShV
UkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKLSAgICBXcml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVj
dG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOWNiNGE5MjUyMjA5MDViNGMy
MWE0Zjc2YWU3NzZhZTE0NTAyNWY4Ny4uYTk4ZjcwZmE5OWE1NjUwMWM3YzFkYWY1MjlhZWViMDcw
OWQyYzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTYxMiw2ICs2MTIsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJv
eVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICBtX3N0b3JhZ2VR
dW90YU1hbmFnZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCitCbG9iUmVnaXN0cnlJbXBsKiBO
ZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgdGhpcyBtZXRob2QgYW5k
IHVzZSBzZXNzaW9uSUQgLT4gTmV0d29ya1Nlc3Npb24gLT4gYmxvYiByZWdpc3RyeS4KKyAgICBh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpOworICAgIHJldHVybiBzZXNzaW9uID8gJnNlc3Npb24tPmJsb2JSZWdpc3RyeSgp
IDogbnVsbHB0cjsKK30KKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2ZhODIxNzA4Li45
NDg2OTA0NjVhYTE2NDBiOWFhZWVhZWZhOGIyZTQ0YmM2NTJkMzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUgIk5ldHdvcmtC
bG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgpAQCAtMzI3LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CiAK
LSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OyB9CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbCogYmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAK
ICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9u
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpAQCAt
NDk4LDcgKzQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPj4gbV9uZXR3b3JrU2Vzc2lvbnM7CiAgICAgSGFz
aE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4+IG1fbmV0d29ya1N0b3JhZ2VTZXNzaW9uczsKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5IG1fbmV0d29ya0Jsb2JS
ZWdpc3RyeTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmMjM0ZTI5NDFk
M2UxZTUxNmVhMzhiNmRmNmVjNTNlYzIwYTc1MDE3Li4wYzg0NmRiMDI0MmYzYTc1MTNlNmMzYjEx
MWVhYWMxZDg4NjBlYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
NTIsMTUgKzUyLDE0IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJl
Z2lzdHJ5IHsKLSAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZp
bmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgdW5yZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBi
bG9iU2l6ZShjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
MDsgfQotICAgICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGZpbGVQYXRocyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAg
ICAgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAgICAgfTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlCbG9iUmVnaXN0cnk+IGJs
b2JSZWdpc3RyeTsKICAgICByZXR1cm4gJmJsb2JSZWdpc3RyeS5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzZGJmNDdhYjI0ZjFmZDdkZGU0NThhZjA3OWUwMGU4YTU5ZTA5NTAwLi41NTdmYjZkYjFh
ZmU5NGE3ZmNiODFhZGQzNTlmMTE1NGI0YmVlYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDAsOSAr
MzAwLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBpZiAocGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKQogICAgICAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KCk7CiAKLSAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQotICAg
ICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG1fY29ubmVjdGlvbi0+ZmlsZXNJ
bkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwotCiAgICAgYXV0byogbmV0d29ya1Nlc3Np
b24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1l
dGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1Nlc3Npb24gJiYgcGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQ
cm9jZXNzKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6
cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSk7CkBAIC0zMTYs
OCArMzEzLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQorICAgICAgICBw
YXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7CisKICAgICBwYXJhbWV0
ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lz
dHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3
b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nl
c3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Np
b24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4
IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAuLmM0ZTEwMmU3NzUyN2Vl
YzFmYWY1MWU3YjA0ZTBlOTU3OTQ2NjdhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CkBAIC0xMTQsNiArMTE1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRk
V2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgeyB9CiAKKyAgICBXZWJDb3JlOjpCbG9iUmVn
aXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xNDMsNiArMTQ2LDcgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAg
IFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IDViNGZmNjljNTRmNTAyN2FjOWU0NGQ5MDU4MDFkYjNiZjlhZGFmMjMu
LmFlYjU4OThlNGU0MDIyN2E5MzZmNzU4YjQwMjFmODM3OTg0NWM3M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtNTcsOCArNTcsNiBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3Bw
CiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNb25pdG9yLmNwcAogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTE2NjQwNjBjYTkzN2I3
ODczYjNlNGU0ZTBiZjQ2ZGU3ZjFmODdmOC4uNWQ1NmEyYTE3OThlZDFhM2JkOTQ5OWZhOGUwOTVh
ZTQ2YzljYmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMzE2LDcgKzEzMTYsNiBAQAogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1
QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxh
eWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8q
IGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0
NkVBMTIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQ
REZWaWV3LmggKi87IH07Ci0JCUExMDVEMEQxMjEyNzM0QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxv
YlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovOyB9
OwogCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2
RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2
RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIg
LyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1h
bmFnZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzk4NSw3ICszOTg0LDYgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8q
IFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8q
IFdLUERGVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BE
RlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAw
RjBDNUQ4IC8qIFdLUERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5t
bTsgcGF0aCA9IGlvcy9XS1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dl
YlZpZXdQcmludEZvcm1hdHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2
RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9z
L1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NjE5LDcgKzQ2MTcsNiBAQAogCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NjkxNkQ2Q0E2OTAwRjk5MjI2
IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEJsb2JSZWdpc3RyeVByb3h5LmNwcDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4
NzZBMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5oOyBwYXRoID0gV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxNzk4Qzc3MTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMTE2QjlDMTM5MDAxQzQy
RjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBw
bGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTdBRTJDMjE2QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtQcm9jZXNzLnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQlFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NjY0LDcgKzY2NjEsNiBAQAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQw
MEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNUMxNDI2RjExQzIzRjgxNzAwRDQx
MTgzIC8qIERvd25sb2FkcyAqLywKIAkJCQlCQzgyODM3QzE2QjQ1REE1MDBBMjc4RkUgLyogRW50
cnlQb2ludCAqLywKLQkJCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQSSAqLywK
IAkJCQk5MzkyODhFMDIxNDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0
NEJCMTg4NTExREQwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAz
RUQzIC8qIG1hYyAqLywKQEAgLTkwMjQsMTUgKzkwMjAsNiBAQAogCQkJbmFtZSA9IEZpbGVBUEk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlFMTc5OEM3NjE2RTY4MTU1MDAy
NDAxMzkgLyogRmlsZUFQSSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJRTE3OThDNzcxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwICovLAotCQkJCUExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lz
dHJ5LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEZpbGVBUEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQlFMTk5ODc1QjE0MkJGOUNGMDBCQjJERTcgLyogUERGICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTk0ODAsNyArOTQ2Nyw2IEBA
CiAJCQkJMUE0QTlDNTYxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNUJDQjkyMjA2OUM0OUMwMENDQ0Uw
MiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTA1RDBE
MTIxMjczNEIyMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTQ0MzZFQ0MxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyog
TmV0d29ya0NhY2hlQ29kZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCAyNGUz
NTU5Y2ZmMDY5YmQzMTc5MWVlNjUxNzhlYWY0ZTRkYzBlNDdkLi4yZjNiNmJhODMxNDc4NDVlNjg2
MmM0ZjkwMzk3ZDI1MWM2NWIxN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYg
ZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCkBAIC00NCwzNyArNDQsMzMgQEAgdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJs
b2JEYXRhRmlsZVJlZmUKICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRU
eXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBmaWxl
LT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFy
dHMsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1
cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkK
K3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBib29s
IHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayA9IGZhbHNlOwotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgPSBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxv
YlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrIH0s
IDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHNlc3Npb25JRCwgdXJsLCBzcmNV
UkwgfSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmls
ZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VS
TCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgp
LCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9i
VVJMKHNlc3Npb25JRCwgdXJsKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwg
ZW5kKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIHVybCwg
c3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVn
aXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCkBAIC04NSw5ICs4MSw5IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDZhYmVlMzY3NDhkZmVjYzJjYWQ0
NmNjYzIyMmE3NGM1MTc2ZDg5ZDQuLmQ3NjYxNTg3ZTNlNzQzODMyZTIzMjVjNjc5NmNmYTM0NWJi
OTU2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVn
aXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
LCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5z
aWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsOworICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2
b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBm
aW5hbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWw7
CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCBkOWFkY2MyMWE4YTk2YjJhYTU0NTM2NmRlMDk1ZDA0N2M2MjU3ZWRm
Li5hZmQ3NDdhNWI5OTE4NTcwMzA4M2ZhYzU3MGZjNDhiNGU1Y2JlZjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
UwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQs
IGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMGNkZTU5OWIxZTA0OWQ4ODMxM2EwZDAz
MDVmODAyYWY1Mjc5ZGNkOS4uNjI2ZGFiMTFiMmRmMjk5NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CisgICAgdm9pZCB3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIqIGV4aXN0aW5nSURCQ29ubmVjdGlvblRvU2VydmVyRm9ySWRlbnRpZmll
cih1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYklEQkNvbm5lY3Rpb25z
QnlJZGVudGlmaWVyLmdldChpZGVudGlmaWVyKTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCAwOGE5MDI2MjBjNjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjLi43YjMx
YWIwYjBhY2JiMWZjODA4NjZlNmY4MzE4NzM0MmM2YmRjNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC02Miw5ICs2MiwyNSBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICByZXR1cm4g
dGhpczsKIH0KIAorY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkJsb2JSZWdpc3RyeSB7Citwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRl
bnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1v
dmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1f
YmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBX
VEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQor
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
KSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJu
IG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7IH0KKwor
ICAgIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAm
bV9ibG9iUmVnaXN0cnk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7
Cit9OworCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJl
Z2lzdHJ5KCkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw7Cisg
ICAgcmV0dXJuIG5ldyBXZWJCbG9iUmVnaXN0cnk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376061</attachid>
            <date>2019-08-12 07:24:42 -0700</date>
            <delta_ts>2019-08-12 08:09:37 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-200567-20190812162440.patch</filename>
            <type>text/plain</type>
            <size>87074</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2NWNlZmM2N2EzZjAy
YmE5OGJhZWU2ZjIxNjcyNzFmZjIwNGM5MC4uMzdkYTUwNmNiNzQyMTljYzlkMmVmNDdlMzkzNDBh
ZGE0ZjQzMTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3Mgc2Vzc2lvbiBJRHMgdG8gYWxsIEJsb2JSZWdpc3RyeSBtZXRob2RzIGluIHBhcnRpY3Vs
YXIgVGhyZWFkYWJsZUxvYWRlclJlZ2lzdHJ5LgorICAgICAgICBUaGUgb25seSBleGNlcHRpb24g
aXMgYmxvYlNpemUgd2hpY2ggc2hvdWxkIGJlIGRlYWx0IHdpdGggYSBmb2xsb3ctdXAgcGF0Y2gu
CisgICAgICAgIGJsb2JTaXplIGJsb2IgcmVnaXN0cnkgaXMgcmV0cmlldmVkIGZyb20gdGhlIGNv
bm5lY3Rpb24gLT4gc2Vzc2lvbklEIG1hcCBpbiBOZXR3b3JrIFByb2Nlc3MuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6fkZpbGVSZWFkZXJMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Lmg6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYlJlc291
cmNlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKToKKwogMjAxOS0w
OC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IElEQlZhbHVlOjptX3Nlc3Npb25JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNTRjOTEwNzc1MWNlNDYyMjRkNjg0
MmJhMTMzOGJjMDBmMTYzNDQ1Li45MTAzNzg4OWY4MDlkMmIzMjgwOTE4Mzk1NDQ4ZjNhNjU3NzUw
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJl
IGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTIwMjEyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgYmxv
YiByZWdpc3RyeSB0byBOZXR3b3JrU2Vzc2lvbiBzbyB0aGF0IGl0IGlzIHBhcnRpdGlvbmVkIGJ5
IHNlc3Npb24gSUQuCisgICAgICAgIEluIGNhc2Ugc2Vzc2lvbiBJRCBpcyBub3QgZ2l2ZW4gdGhy
b3VnaCBJUEMsIHVzZSB0aGUgY29ubmVjdGlvbiBhcyBrZXkgdG8gZ2V0IHRoZSBuZXR3b3JrIHNl
c3Npb24uCisgICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgYmxvYlNpemUuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpibG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpi
bG9iUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChX
ZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDdmMGVmNTBkMzU0MzgxZWE1OGQ1MGY3YWMzMjdiMmVkNzFjOTc0ZWQu
Ljk2MmEzOGZhNTYzYzM2ZDU5OWI4NjlkYTA0ZTJjZGJlY2ZjYzMwMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3VsZCBi
ZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6Cisg
ICAgICAgIElnbm9yZSBzZXNzaW9uSUQgcGFyYW1ldGVyIGZvciBXSzEuCisKIDIwMTktMDgtMTIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREIt
c3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggYzBkYmY1ZmU1NzhmMWY1OWI2ZjRjMWIwN2FiYzAxZTdkMjUxZDc3OS4uZDhk
YjkwY2NiMTQ0OTQ2MGUyODczODFmZGY3NGIzYTJiMjAyOWRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogRmV0Y2hMb2FkZXI6On5GZXRjaExvYWRlcigpCiB7CiAgICAgaWYgKCFt
X3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVh
ZGluZyk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2IpCkBAIC02NCw3ICs2NCw4IEBAIHZvaWQgRmV0
Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVVJMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9yaWdpbigpLCBt
X3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOworICAgIG1fc2Vzc2lvbklEID0gY29udGV4dC5zZXNz
aW9uSUQoKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoKm1f
c2Vzc2lvbklELCBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxv
YlVSTCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwog
ICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9ySWRlbnRpZmllcihjb250ZXh0LnJlc291cmNlUmVxdWVz
dElkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggNDAxMWIzNzM4Yzk3OWJiOTc4YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZi4uYjZjNjUw
OGNhMzc2M2UzMTMzZDRhM2RiZDQxMTk4YWNhNTg0ZTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAg
IEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBm
YWxzZSB9OwogICAgIFVSTCBtX3VybEZvclJlYWRpbmc7CisgICAgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IG1fc2Vzc2lvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZhYmZmYTNlMWMyZjY3ZGVlNDgxOS4uMTE0ZmYzYzhh
NWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNTY5LDEzICsz
NTY5LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYlVSTHNJ
c29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElE
QlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwogCi0gICAgLy8gRklYTUU6IEdldCB0
aGUgcmlnaHQgYmxvYiByZWdpc3RyeSBmcm9tIHRoZSBnaXZlbiBzZXNzaW9uSUQuCi0gICAgYmxv
YlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsK
KyAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQs
IG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZp
bGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0eSgpKSB7CkBAIC0zNTg2LDcgKzM1ODUsNyBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihQQUw6OlNlc3Npb25JRCwgQ29tcGxldAogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1f
YmxvYlVSTHMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKLSAgICAgICAgCisKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyAqdGhpcywgbV9ibG9iVVJMcywgYmxvYkZpbGVQYXRo
cyB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDQ2NGMxMzcyYjBm
Mzc3Nzc1MWNhZDMzOWJhMmVkN2FhNTQ2ZDg0YmIuLjhkYWEwYzExYzZmZDkyMTM5NmZkNTc4MTM5
YzdiYzAzN2RmYzVkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNTgsMTIgKzU4LDEy
IEBAIHB1YmxpYzoKIHZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFi
bGUmIGJsb2IpCiB7CiAgICAgQVNTRVJUKCZibG9iLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNfY2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOworICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25J
RCgpLCBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8Qmxv
YiY+KGJsb2IpLnVybCgpKTsKIH0KIAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJM
UmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1cmwpOwogfQogCiBVUkxSZWdpc3RyeSYgQmxvYlVS
TFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC04Miw3ICs4Miw3IEBAIEJsb2I6OkJsb2IoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICwgbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CisgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVy
bmFsVVJMLCB7IH0sICB7IH0pOwogfQogCiBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBC
bG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtMTAwLDcgKzEwMCw3IEBAIEJsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJs
b2JQYXJ0VmFyaWFudHMsCiAgICAgICAgICk7CiAgICAgfQogCi0gICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUo
KSwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
bV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsK
IH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTE0LDcgKzExNCw3
IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFy
dHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAg
bV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUo
YmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpA
QCAtMTI1LDcgKzEyNSw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlCiAgICAgVmVjdG9yPEJs
b2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3Zl
KGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJu
YWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwg
V1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJl
bmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTEzNCw3
ICsxMzQsNyBAQCBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3Is
IGNvbnN0IEJsb2ImIGJsb2IpCiAgICAgLCBtX3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3Np
emUoYmxvYi5zaXplKCkpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7
CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklE
LCBtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQog
CiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25n
IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCkBAIC0xNDQsOSArMTQ0LDkgQEAg
QmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgc3JjVVIKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQot
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwg
bV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNV
UkwpOwogICAgIGVsc2UKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFj
a2VkUGF0aCwgbV90eXBlKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkws
IHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsbwogICAgICwgbV9zaXplKC0xKSAvLyBzaXplIGlzIG5vdCBu
ZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydC4KIHsKICAgICBtX2ludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBl
bmQpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCiBC
bG9iOjp+QmxvYigpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwobV9pbnRlcm5hbFVSTCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwpOwogfQogCiB1bnNpZ25lZCBs
b25nIGxvbmcgQmxvYjo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBl
YjViNmExNzY3OGEzNGRhM2MwYzZhZWI5ZjhjNWJlZjRlZDBhZjIwLi5iM2U4MWM4YjhhNDIyYWQx
ZTY5ZWExZTkyNjI3MWQ5ODc0MTBhNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgRmlsZTo6RmlsZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxV
UkwoKTsKICAgICBtX3NpemUgPSAtMTsKICAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKG1f
cGF0aCwgU3RyaW5nKCksIG1fbmFtZSwgbV90eXBlKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7Cisg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQs
IG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CiB9CiAKIEZpbGU6OkZpbGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlKQpAQCAtNjMsNyArNjMsNyBAQCBGaWxlOjpGaWxlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycgogICAgIG1f
aW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIG1fc2l6ZSA9
IC0xOwogICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUobV9wYXRoLCBuYW1lT3ZlcnJpZGUs
IG1fbmFtZSwgbV90eXBlKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIG1faW50ZXJuYWxVUkws
IHBhdGgsIG1fdHlwZSk7CiB9CiAKIEZpbGU6OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rv
ciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0
aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJl
ZmEwOWI1YTcuLjRkY2QwZGQwYzA5YzdmMGMwZTg3NDZhZDgwMTM2NmQ4Y2FlNjk4ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNjgsNyArNjgs
NyBAQCBGaWxlUmVhZGVyTG9hZGVyOjp+RmlsZVJlYWRlckxvYWRlcigpCiB7CiAgICAgdGVybWlu
YXRlKCk7CiAgICAgaWYgKCFtX3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOwor
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNz
aW9uSUQsIG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiYg
YmxvYikKQEAgLTgxLDcgKzgxLDggQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAgICAgICAg
ZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgp
KTsKKyAgICBtX3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlc3Npb25JRCgp
OworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9u
SUQsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVh
ZGluZywgYmxvYi51cmwoKSk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVl
c3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggN2E0MjhiZTUwNTdkMmJj
NmFjNDFjZTkyOThiMjU0ZmM1YTI5ZTAwYS4uNDE5YjIwOTNjN2Q3OTBiZjIxNTNkYTJiY2QyOTE1
NGRkYjYwZDQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4dEVu
Y29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMDIsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9kYXRhVHlwZTsKIAogICAgIFVSTCBtX3VybEZvclJlYWRpbmc7CisgICAgT3B0aW9u
YWw8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbklEOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyPiBtX2xvYWRlcjsKIAogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cAppbmRleCA1YmM5YmFmNzgyNzk2YmE0MzNkN2U4MjljMTBhZjY3NzE3YWE0MzkwLi5hOTViMjQ5
ZjhjODQyM2ZkNzQ1YmMyYWM5N2IyN2JjMDRhYTNhNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKQEAgLTY0LDEwOSArNjQsOTcg
QEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQog
ICAgIHJldHVybiAqbWFwOwogfQogCi1zdGF0aWMgdm9pZCBwb3N0VG9NYWluVGhyZWFkKENyb3Nz
VGhyZWFkVGFzayYmIHRhc2spCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
RmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgQ3Jvc3NUaHJlYWRRdWV1ZTxD
cm9zc1RocmVhZFRhc2s+KiBxdWV1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
ewotICAgICAgICBxdWV1ZSA9IG5ldyBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz47
Ci0gICAgfSk7Ci0KLSAgICBxdWV1ZS0+YXBwZW5kKFdURk1vdmUodGFzaykpOworICAgIGlmIChp
c01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9i
VVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwg
Y29udGVudFR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbXSB7Ci0gICAgICAgIGF1dG8gdGFzayA9IHF1ZXVlLT50cnlHZXRNZXNzYWdlKCk7Ci0g
ICAgICAgIEFTU0VSVCh0YXNrKTsKLSAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0
aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChz
ZXNzaW9uSUQsIHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRl
bnRUeXBlKTsKICAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5p
c29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0g
ewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7Ci0gICAgICAg
IH0pOwotICAgIH0KLX0KLQotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewot
ICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFydCA6IGJsb2JQYXJ0cykKLSAgICAgICAgICAgIHBhcnQu
ZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJs
ID0gdXJsLmlzb2xhdGVkQ29weSgpLCBibG9iUGFydHMgPSBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNv
bnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVy
bCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRzKQorICAgICAgICBwYXJ0LmRldGFj
aEZyb21DdXJyZW50VGhyZWFkKCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwg
Y29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAg
ICAgLy8gSWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29u
dGV4dCB3aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1h
cHBpbmcgYmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJl
dHJpdmVkIHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4g
JiYgQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAo
KS0+YWRkKHVybC5zdHJpbmcoKSwgb3JpZ2luKTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSkK
LSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29w
eSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7Ci0gICAgICAgIH0pOworICAg
IGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHko
KSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgc3JjVVJMKTsKKyAgICB9KTsKIH0K
IAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwotICAgIGVs
c2UKLSAgICAgICAgcG9zdFRvTWFpblRocmVhZChjcmVhdGVDcm9zc1RocmVhZFRhc2soVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQsIHVy
bCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgY29udGVudFR5cGUpKTsKKyAgICBpZiAoaXNNYWlu
VGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNv
bGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgZmlsZUJhY2tlZFBh
dGggPSBmaWxlQmFja2VkUGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50
VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAg
ICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG5l
d1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkK
IHsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbmV3VVJMID0gbmV3VVJMLmlzb2xhdGVkQ29w
eSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIHN0YXJ0LCBlbmRdIHsKLSAgICAg
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3Jj
VVJMLCBzdGFydCwgZW5kKTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7
CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25J
RCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm47CiAgICAgfQor
CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCBuZXdVUkwgPSBuZXdVUkwuaXNvbGF0
ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewor
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQs
IG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICB9KTsKIH0KIAogdW5zaWduZWQgbG9u
ZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHRTaXplOwogICAgIGlmIChpc01haW5UaHJl
YWQoKSkKKyAgICAgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CisKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0U2l6ZTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2Vt
YXBob3JlOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
JnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsKICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdp
c3RyeSgpLmJsb2JTaXplKHVybCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEJpbmFyeVNlbWFwaG9y
ZSBzZW1hcGhvcmU7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRl
ZENvcHkoKSwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsKLSAgICAgICAgICAgIHJlc3VsdFNp
emUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwotICAgICAgICAgICAgc2VtYXBob3Jl
LnNpZ25hbCgpOwotICAgICAgICB9KTsKLSAgICAgICAgc2VtYXBob3JlLndhaXQoKTsKLSAgICB9
CisgICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9KTsKKyAgICBzZW1hcGhvcmUud2Fp
dCgpOwogICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQordm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChCbG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAi
bnVsbCIpCiAgICAgICAgIG9yaWdpbk1hcCgpLT5yZW1vdmUodXJsLnN0cmluZygpKTsKIAotICAg
IGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJs
b2JVUkwodXJsKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lz
dGVyQmxvYlVSTCh1cmwpOwotICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwp
OworICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25J
RCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVu
cmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsKTsKKyAgICB9KTsKIH0KIAogUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29u
c3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oCmluZGV4IGE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIu
LjMxNWY1Y2FkYjQ2NjM4OTgwYjRjMWZkOGVjNWI2N2RiZTNlNDEyNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00MCwxMiArNDAs
MTIgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0
cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0
PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNV
UkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7Ci0gICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25z
dCBVUkwmIHNyY1VSTCk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcg
YmxvYlNpemUoY29uc3QgVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCmluZGV4IGQ1YjliZWRiYWQwNDcwNDYxYTU4YWI1Y2IwMTRhNjhjMDQ3ZDdmYjAuLjdi
ZWJjN2ExMGNjYmVkNTNjZmU4Y2FmOGEwN2M3OGU2YzU3OWQ2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAtMjYsOCArMjYsOSBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgotI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKwogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDhiOTFlMWMzMjRkNzhl
NzE1ZThkZTdmNzc4ZjQzOGJjY2RjYThjY2UuLjUzNjM3MDNiOGNiNDNjMmJkOTMwMGZiNjVhOTc0
NGY0ODVkZGVlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAg
LTEwNiwxMCArMTA2LDExIEBAIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIFBvbGljeUNo
ZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlCiAKICAgICAvLyBDcmVh
dGUgYSBuZXcgdGVtcG9yYXJ5IGJsb2JVUkwgaW4gY2FzZSB0aGlzIG9uZSBnZXRzIHJldm9rZWQg
ZHVyaW5nIHRoZSBhc3luY2hyb25vdXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCiAgICAg
VVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoJm1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHRlbXBvcmFyeUJsb2JVUkwsIHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8gc2Vz
c2lvbklEID0gbV9mcmFtZS5kb2N1bWVudCgpLT5zZXNzaW9uSUQoKTsKKyAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMLCByZXF1ZXN0
LnVybCgpKTsKICAgICByZXF1ZXN0LnNldFVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKLSAgICByZXR1
cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbdGVtcG9yYXJ5QmxvYlVSTCA9IFdURk1vdmUo
dGVtcG9yYXJ5QmxvYlVSTCldIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJs
b2JVUkwodGVtcG9yYXJ5QmxvYlVSTCk7CisgICAgcmV0dXJuIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4oW3Nlc3Npb25JRCwgdGVtcG9yYXJ5QmxvYlVSTCA9IFdURk1vdmUodGVtcG9yYXJ5Qmxv
YlVSTCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lv
bklELCB0ZW1wb3JhcnlCbG9iVVJMKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggMmU4OTNiZGNjODhhMzFmYzll
YjRhOWYzNGM5ZGQ3OGI2OWM0OGNmZC4uNjYwYTc5NmQwYjJkODk4NjI1MWI4MDZkMzkxM2JmOTE0
NTRlOWU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnk7Citj
bGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogCiBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJs
b2JSZWdpc3RyeSgpOwogCkBAIC00NiwyNyArNDgsMjcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJl
ZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZp
bGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAKICAgICAvLyBSZWdp
c3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBibG9iIGRhdGEuCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBh
cnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBh
cnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKICAgICAKICAgICAvLyBSZWdp
c3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmll
ZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVSTCByZWZlcnJpbmcg
dG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQgc3JjVVJMIG9yLCBp
ZiBub25lIGZvdW5kLCByZWZlcnJpbmcgdG8gdGhlIGZpbGUgZm91bmQgYXQgdGhlIGdpdmVuIHBh
dGguCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAgLy8gTmVnYXRpdmUgc3Rh
cnQgYW5kIGVuZCB2YWx1ZXMgc2VsZWN0IGZyb20gdGhlIGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgPSAwOwogCi0gICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpID0gMDsK
IAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMp
PiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdp
c3RyeUltcGwoKSB7IHJldHVybiBudWxscHRyOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5CbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDEyOTA5NWI0NDZhNDRmMjgwM2VhMTAxOGMy
NmRiNzUxODUyNzAxYTUuLjViMjJiZDE2OGMzZWE1M2E5MmNhNGFlODk0NDJlOWI5MTE0NDg1YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0
cnlJbXBsLmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIEJsb2JSZWdpc3RyeUltcGw6On5CbG9iUmVn
aXN0cnlJbXBsKCkgPSBkZWZhdWx0OwogCiBzdGF0aWMgUmVmPFJlc291cmNlSGFuZGxlPiBjcmVh
dGVCbG9iUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxCbG9i
UmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmNyZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVl
c3QsIGNsaWVudCk7CisgICAgcmV0dXJuIGJsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwo
KS0+Y3JlYXRlUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50KTsKIH0KIAogc3RhdGljIHZv
aWQgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFy
PiYgZGF0YSkKIHsKLSAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVn
aXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVy
bCgpKTsKKyAgICBhdXRvKiBibG9iRGF0YSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUlt
cGwoKS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShibG9iRGF0YSwgcmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIApAQCAtMzQzLDQgKzM0MywxOSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25z
dCBTdHJpbmcmIHBhdAogICAgIH0pOwogfQogCitWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4+IEJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKSBj
b25zdAoreworICAgIGF1dG8qIGJsb2JEYXRhID0gZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7Cisg
ICAgaWYgKCFibG9iRGF0YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0OworICAgIGZvciAoY29uc3QgQmxvYkRh
dGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKKyAgICAgICAgaWYgKGl0ZW0udHlw
ZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoaXRlbS5maWxlKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggZTE1MWQzYWZiMDY2ZGJmNWI1ZWU4ZmVkN2Q4YWY2
ODYyZTA4YmU4Ni4uZGI5ZDZkZjcwYjc4ZDE1MzU0OTcwMjM2Yzc1ZDEwZjM0NjllODg1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVGhyZWFk
U2FmZURhdGFCdWZmZXI7CiAKIC8vIEJsb2JSZWdpc3RyeUltcGwgaXMgbm90IHRocmVhZC1zYWZl
LiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4KLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkJsb2JSZWdpc3RyeUltcGwoKTsK
QEAgLTU4LDE3ICs1OCwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVt
cyhCbG9iRGF0YSosIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBs
b25nIGxvbmcgbGVuZ3RoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0
b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAotICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4m
Jik7CiAKICAgICBzdHJ1Y3QgQmxvYkZvckZpbGVXcml0aW5nIHsKICAgICAgICAgU3RyaW5nIGJs
b2JVUkw7CkBAIC03Niw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgYm9vbCBwb3B1
bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBW
ZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiYpOworICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJikgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxvYnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGQ2ZjI5MTYxYTQ3
ZGI1NGY0ZDRmYWJhMTQ1MWZkOWI2NTIxNzAxN2EuLmQ3MWIxZWRjY2ZjYWQxOGM1ZWVjNzAyZTJm
MWVlZGY3Zjk2YjYzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCkBAIC0yODYsMTQgKzI4NiwxNCBAQCBTdHJpbmcgRm9ybURhdGE6OmZsYXR0ZW5U
b1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnkmIGJsb2JSZWdp
c3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKK3N0YXRpYyB2b2lkIGFw
cGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIEZvcm1EYXRh
JiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFibG9iUmVnaXN0cnkuaXNC
bG9iUmVnaXN0cnlJbXBsKCkpIHsKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSkgewogICAgICAgICBM
T0dfRVJST1IoIlRyaWVkIHRvIHJlc29sdmUgYSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0
cnkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGJsb2JEYXRhID0gc3Rh
dGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSkuZ2V0QmxvYkRhdGFGcm9t
VVJMKHVybCk7CisgICAgYXV0byogYmxvYkRhdGEgPSBibG9iUmVnaXN0cnktPmdldEJsb2JEYXRh
RnJvbVVSTCh1cmwpOwogICAgIGlmICghYmxvYkRhdGEpIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgZ2V0IGJsb2IgZGF0YSBmcm9tIGEgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9i
UmVnaXN0cnkmIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjCiAgICAgfQogfQog
Ci1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lz
dHJ5JiBibG9iUmVnaXN0cnkpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJl
ZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5KQogewogICAgIC8vIEZpcnN0
IGNoZWNrIGlmIGFueSBibG9icyBuZWVkcyB0byBiZSByZXNvbHZlZCwgb3Igd2UgY2FuIHRha2Ug
dGhlIGZhc3QgcGF0aC4KICAgICBib29sIGhhc0Jsb2IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAyMGJmNjJlMjEwMDBmNTUzNmE1OWM2
OWI2YzUyNTkyMDU5YTVmMzNmLi43YzY4NmU4YjQyM2IzNmRlOGIxMmYxMGI1N2RmMThkZTNlNDA5
NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQmxvYlJlZ2lzdHJ5
OworY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmls
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28gd2Ugb25seSBoYXZlIGZpbGUgYW5k
IGRhdGEuCiAgICAgLy8gSWYgdGhlIEZvcm1EYXRhIGhhcyBubyBibG9iIHJlZmVyZW5jZXMgdG8g
cmVzb2x2ZSwgdGhpcyBpcyByZXR1cm5lZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Rm9ybURh
dGE+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8Rm9ybURhdGE+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBs
Kik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0YUZvclVwbG9hZCBwcmVwYXJlRm9yVXBs
b2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDQ3ZjE1NDE4ZjJhZDRkNWY4NWQ2MDli
Nzk3ODM2Njc5NjBmYmJkZjQuLjUzZmVhMDU2MzU5OGFjMTg5NWU5Njc2NDM3MmExN2U3ZDlkMmVi
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lk
IGZvcm1FdmVudENhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRU
eXBlIHR5cGUsIHZvCiAKIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5
Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKLSAgICBhdXRvIHJlc29sdmVkRm9y
bURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOwor
ICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhibG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnlJbXBsKCkpOwogICAgIGF1dG8gZGF0YUZvclVw
bG9hZCA9IHJlc29sdmVkRm9ybURhdGEtPnByZXBhcmVGb3JVcGxvYWQoKTsKIAogICAgIC8vIFBy
ZWNvbXB1dGUgdGhlIGNvbnRlbnQgbGVuZ3RoIHNvIENGTmV0d29yayBkb2Vzbid0IHVzZSBjaHVu
a2VkIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEyZGRjM2UxM2EwMjBiMjU2
NGE2MmRjNTUzZjBiNWQ0NGQwLi5mZmZiNDczNWRiMjFlZDU0YTgwYjRkMDNmNGQ0ZTcwNDU0NmJm
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJE
b3dubG9hZE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkRvd25sb2FkLmgiCi0jaW5jbHVkZSAiTmV0
d29ya0Jsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lv
bi5oIgpAQCAtNTUsMTAgKzU0LDEwIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hCiAgICAgcGFy
YW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRp
YWxQb2xpY3kgPSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50
aWFsczsKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBw
YXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0
cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5ibG9i
RmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9i
UmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNl
OwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JE
b3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNz
aW9uLCAmY2xpZW50KCkubmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpLCBzdWdn
ZXN0ZWROYW1lKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6
Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5l
dHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+YmxvYlJl
Z2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRh
dGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlx
dWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAzODZjOWU3
NmZlYzkzNmMxNTRlZjc0YWZhYWQxYjg1MDZhN2E1N2Y0Li43NGVkMTNiZTYxM2Q3MWZkMzMyNDE2
OTVlNWRiMzYxNmMyNDUwODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNTUsNyArNTUsNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyOwogY2xhc3Mg
RG93bmxvYWQ7Ci1jbGFzcyBOZXR3b3JrQmxvYlJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3du
bG9hZDsKQEAgLTc1LDcgKzc0LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIE5ldHdvcmtTZXNzaW9uKiBuZXR3b3JrU2Vzc2lvbihjb25zdCBQ
QUw6OlNlc3Npb25JRCYpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVmKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdWludDMyX3QgZG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVy
KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDYzOTk4ZDU4NjgxNTg4
NTg2NTlhZDkyYWMyMDA1M2EyMzZlMDY2MzQuLjc2NGFlOTRlZjBmNDQ0YTgxZTA1YjZiMjk4ODdm
N2M5ODZjOGVlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTE2NiwyMCArMTY2LDQg
QEAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ28KICAgICByZXR1cm4gZmlsZXNJbkJsb2IodXJsKTsK
IH0KIAotVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpmaWxlc0luQmxvYihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQobV9ibG9i
UmVnaXN0cnkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpOwotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9
IG1fYmxvYlJlZ2lzdHJ5LmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwotICAgIGlmICghYmxvYkRh
dGEpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IHJlc3VsdDsKLSAgICBmb3IgKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA6
IGJsb2JEYXRhLT5pdGVtcygpKSB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0
YUl0ZW06OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0uZmlsZSgp
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0Y2ZlZDlkYWY3OTgwM2JjNWFmODE1
Zjg0OWJjYTJhMTBjZTdlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4K
LSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwotY2xhc3MgQmxvYlBh
cnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzczsKLWNsYXNzIFNhbmRib3hFeHRlbnNpb247Ci0KLWNsYXNzIE5ldHdvcmtCbG9i
UmVnaXN0cnkgewotV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya0Jsb2JSZWdpc3RyeSk7Ci1w
dWJsaWM6Ci0gICAgTmV0d29ya0Jsb2JSZWdpc3RyeSgpOwotICAgIH5OZXR3b3JrQmxvYlJlZ2lz
dHJ5KCk7Ci0KLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2spOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYpOwotICAgIHVpbnQ2NF90IGJsb2JTaXpl
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQg
d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKLQotICAgIHZvaWQg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJM
Jik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBm
aWxlc0luQmxvYihjb25zdCBVUkwmKTsKLSAgICAKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJ
bXBsJiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeTsgfQotCi1wcml2YXRl
OgotICAgIHR5cGVkZWYgSGFzaE1hcDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhh
c2hTZXQ8VVJMPj4gQmxvYkZvckNvbm5lY3Rpb25NYXA7Ci0gICAgQmxvYkZvckNvbm5lY3Rpb25N
YXAgbV9ibG9ic0ZvckNvbm5lY3Rpb247Ci0gICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCBt
X2Jsb2JSZWdpc3RyeTsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
OWIxYjliODYwNDM4ZDliNmEzZjEyNjg5MTQ2MmIzMzZiYzU5ZmM0ZC4uMmU0ZjUzZDJhZGMwZTg1
MjAyNmIwMzcxYjUxNTRkNGIzYzg5OTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTMwMSw3ICszMDEsNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICAgICBtX25ldHdvcmtQcm9j
ZXNzLT53ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOwogCi0gICAgbV9uZXR3
b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NE
aWRDbG9zZSgqdGhpcyk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cmVtb3ZlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKnRoaXMpOwogCiAjaWYgVVNFKExJQldFQlJUQykKQEAgLTM3NCwx
MyArMzczLDE5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuZFN1c3Bl
bnNpb24oKQogCiBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5z
ZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8mIGJsb2JSZWdpc3RyeSA9IHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpOworCiAgICAgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlczsKICAgICBp
ZiAoYXV0byogYm9keSA9IHBhcmFtZXRlcnMucmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IGJvZHktPmVsZW1lbnRzKCkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvKiBibG9iRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJs
b2JEYXRhPihlbGVtZW50LmRhdGEpKQotICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZlY3Rv
cihtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IoKnRo
aXMsIGJsb2JEYXRhLT51cmwpKTsKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmRWZWN0b3Io
YmxvYlJlZ2lzdHJ5LmZpbGVzSW5CbG9iKGJsb2JEYXRhLT51cmwpKTsKICAgICAgICAgfQotICAg
ICAgICBjb25zdF9jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCY+KHBhcmFtZXRlcnMucmVx
dWVzdCkuc2V0SFRUUEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fbmV0d29ya1By
b2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSkpOworICAgICAgICBj
b25zdF9jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCY+KHBhcmFtZXRlcnMucmVxdWVzdCku
c2V0SFRUUEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCZibG9iUmVnaXN0cnkpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZmlsZXM7CkBAIC01NjgsNjcgKzU3Myw4OSBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdAogICAgIHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNl
c3Npb25JRCkuZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5z
aW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJG
aWxlQmxvYlVSTCgqdGhpcywgdXJsLCBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShleHRlbnNpb25IYW5kbGUpKSwgY29udGVudFR5cGUpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFz
ZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShl
eHRlbnNpb25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+
bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsLCBXVEZNb3Zl
KGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1By
b2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25D
aGVjaykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsLCBzcmNVUkwsIHNob3VsZEJ5cGFzc0Nvbm5l
Y3Rpb25DaGVjayk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsK
KworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VS
TCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtC
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCgqdGhpcywg
dXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQ
YXRoLCBudWxscHRyKSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0
X3Qgc3RhcnQsIGludDY0X3QgZW5kKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtC
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSgqdGhpcywgdXJsLCBzcmNVUkws
IHN0YXJ0LCBlbmQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1
cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3
b3JrQmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCk7CisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JS
ZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlNp
emUoKnRoaXMsIHVybCkpOworICAgIGF1dG8qIGJsb2JSZWdpc3RyeSA9IG5ldHdvcmtQcm9jZXNz
KCkuYmxvYlJlZ2lzdHJ5KCp0aGlzKTsKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoYmxvYlJlZ2lzdHJ5LT5ibG9iU2l6ZSh1
cmwpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVy
bjsKKwogICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZVJlZmVy
ZW5jZXM7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykKLSAgICAgICAgZmlsZVJlZmVy
ZW5jZXMuYXBwZW5kVmVjdG9yKG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnko
KS5maWxlc0luQmxvYigqdGhpcywgeyB7IH0sIHVybCB9KSk7CisgICAgICAgIGZpbGVSZWZlcmVu
Y2VzLmFwcGVuZFZlY3RvcihzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYih7IHsg
fSwgdXJsIH0pKTsKIAogICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAg
ICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCi0gICAgbV9uZXR3b3JrUHJvY2Vz
cy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JV
UkxzLCBbZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZlcmVuY2VzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGZpbGVOYW1lcykg
bXV0YWJsZSB7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9y
YXJ5RmlsZXMoYmxvYlVSTHMsIFtmaWxlUmVmZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5j
ZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgZmlsZU5hbWVzKSBtdXRhYmxlIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJl
ZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZU5hbWVzKSk7CiAgICAgfSk7CiB9CiAKLVZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJl
dHVybiBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Io
KnRoaXMsIHVybCk7Ci19Ci0KLVdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iUmVnaXN0cnkoKQotewotICAgIHJldHVybiBtX25ldHdv
cmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCk7Ci19Ci0KIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fY2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZCA9IGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uOGZlOWYzMmM5
ZWZjNjJmZDNjNTNlMGIxMmMyZGQ1ZDJjNDVkZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtMTM4LDggKzEzOCw2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3Vy
Y2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJj
ZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlU
cmFja2VyOjpDb21wbGV0aW9uQ29kZSk7CiAKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
JiBibG9iUmVnaXN0cnkoKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwogICAgIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKICAgICB2b2lkIHdlYlBhZ2VX
YXNBZGRlZChQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCk7CkBAIC0xODMsMTQgKzE4MSwxNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOwotICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRf
dCBlbmQpOwogICAgIHZvaWQgYmxvYlNpemUoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
Jik7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+
JiYpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKICAgICB2b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0VuYWJsZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IGZhMmMzMWE0MTNhZjYyMTk0OTNjZDRjZWEyYmM3YzRhZmE5MjA1
OTAuLjFlNzdjOGFiOTg0NDlmZjA0ZWZhYjc5MzA1ZDUxMzhkZWJkODVkZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDEsMTQgKzQxLDE0IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFy
dHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCiAgICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwg
U3RyaW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0
cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5k
bGUsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVj
dG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKLSAg
ICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hvdWxk
QnlwYXNzQ29ubmVjdGlvbkNoZWNrKQotICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5n
IGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFVSTCB1cmwsIFVSTCBz
cmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQotICAgIFVucmVnaXN0ZXJCbG9iVVJM
KFVSTCB1cmwpCisgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Qmxv
YlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMKQor
ICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJp
bmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90
IGVuZCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCB1cmwpCiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIFN5
bmNocm9ub3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmluZz4g
YmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFzeW5jCisgICAgV3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3Ry
aW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKIAogICAg
IFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcuLmE5OGY3MGZhOTlh
NTY1MDFjN2MxZGFmNTI5YWVlYjA3MDlkMmM2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MTIsNiArNjEyLDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQpCiAgICAgbV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0K
IAorQmxvYlJlZ2lzdHJ5SW1wbCogTmV0d29ya1Byb2Nlc3M6OmJsb2JSZWdpc3RyeShOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKK3sKKyAgICAvLyBGSVhNRTogRGVw
cmVjYXRlIHRoaXMgbWV0aG9kIGFuZCB1c2Ugc2Vzc2lvbklEIC0+IE5ldHdvcmtTZXNzaW9uIC0+
IGJsb2IgcmVnaXN0cnkuCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uQnlDb25u
ZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKKyAgICByZXR1cm4gc2Vzc2lvbiA/ICZz
ZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSA6IG51bGxwdHI7Cit9CisKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZmI3YTZjZDM2ZWE5ZjM1OTRhN2Zi
OWRlODU1MzUzMjNmYTgyMTcwOC4uOTQ4NjkwNDY1YWExNjQwYjlhYWVlYWVmYThiMmU0NGJjNjUy
ZDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aCIKLSNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTMyNyw3ICszMjYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDYWNoZUVuZ2luZShjb25zdCBQQUw6OlNlc3Npb25J
RCYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRT
aXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPHVpbnQ2NF90Pik+JiYpOwogCi0gICAgTmV0d29ya0Jsb2JSZWdpc3RyeSYgbmV0d29ya0Js
b2JSZWdpc3RyeSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbmV0d29ya0Jsb2JSZWdpc3RyeTsgfQor
ICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeShOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYpOwogCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQg
ZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcpPiYmKTsKQEAgLTQ5OCw3ICs0OTcsNiBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4+IG1fbmV0
d29ya1Nlc3Npb25zOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBtX25ldHdvcmtTdG9yYWdlU2Vzc2lv
bnM7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb247Ci0gICAgTmV0d29ya0Jsb2JS
ZWdpc3RyeSBtX25ldHdvcmtCbG9iUmVnaXN0cnk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggZjIzNGUyOTQxZDNlMWU1MTZlYTM4YjZkZjZlYzUzZWMyMGE3NTAxNy4uMGM4
NDZkYjAyNDJmM2E3NTEzZTZjM2IxMTFlYWFjMWQ4ODYwZWM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTUyLDE1ICs1MiwxNCBAQCBCbG9iUmVnaXN0cnkqIE5ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNzIEVtcHR5QmxvYlJlZ2lzdHJ5IDog
cHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
LCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIH07CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5QmxvYlJlZ2lzdHJ5PiBibG9iUmVnaXN0cnk7CiAgICAgcmV0dXJuICZibG9iUmVnaXN0
cnkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggM2RiZjQ3YWIyNGYxZmQ3ZGRlNDU4YWYwNzllMDBl
OGE1OWUwOTUwMC4uNTU3ZmI2ZGIxYWZlOTRhN2ZjYjgxYWRkMzU5ZjExNTRiNGJlZWM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtMzAwLDkgKzMwMCw2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAg
ICAgaWYgKHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSAmJiBtX25ldHdvcmtMb2FkQ2hlY2tlcikKICAgICAg
ICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fbmV0d29ya0xvYWRDaGVj
a2VyLT5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpOwogCi0gICAgaWYgKHJlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0Jsb2IoKSkKLSAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMg
PSBtX2Nvbm5lY3Rpb24tPmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKLQog
ICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKICAgICBpZiAoIW5ldHdvcmtT
ZXNzaW9uICYmIHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAg
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhwYXJhbWV0ZXJz
LnNlc3Npb25JRCkpOwpAQCAtMzE2LDggKzMxMywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0Jsb2IoKSkKKyAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3
b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCku
dXJsKCkpOworCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAg
ICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZt
X2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtM
b2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9
cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRp
b24oKS51dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAppbmRleCBjMmJmNDNkMjRlMDkxZmY3NmQ5ZGI4YjcwYTE2YWUzZmEx
N2IyZDUwLi5jNGUxMDJlNzc1MjdlZWMxZmFmNTFlN2IwNGUwZTk1Nzk0NjY3YTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJp
YnV0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTE0LDYgKzExNSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIHsgfQog
CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KCkgeyByZXR1cm4g
bV9ibG9iUmVnaXN0cnk7IH0KKwogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApA
QCAtMTQzLDYgKzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNJbnZhbGlkYXRlZCB7
IGZhbHNlIH07CiAjZW5kaWYKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNo
ZTsKKyAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1YjRmZjY5YzU0ZjUwMjdhYzll
NDRkOTA1ODAxZGIzYmY5YWRhZjIzLi5hZWI1ODk4ZTRlNDAyMjdhOTM2Zjc1OGI0MDIxZjgzNzk4
NDVjNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU3LDggKzU3LDYgQEAgTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TW9uaXRvci5jcHAKIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
CiAKLU5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKLQogTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIAogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8t
dW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGUxNjY0MDYwY2E5MzdiNzg3M2IzZTRlNGUwYmY0NmRlN2YxZjg3ZjguLjVkNTZhMmEx
Nzk4ZWQxYTNiZDk0OTlmYThlMDk1YWU0NmM5Y2JhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMxNiw3ICsxMzE2LDYgQEAKIAkJ
OUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAw
MDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwMkE3MDgxRUMwRUVFOTAwRDgxRDgyIC8qIGNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBT
YW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNUUz
OTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBs
dWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNDZFOUYy
MDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9OwotCQlBMTA1RDBEMTIxMjczNEIy
MDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNUQwRDAyMTI3MzRCMTAwMzRGNkM3IC8qIE5ldHdv
cmtCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVE
MTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLzsgfTsKIAkJQTEx
OEE5RjMxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUYxMTkwOEI4RUEw
MEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5ODUsNyArMzk4NCw2IEBACiAJCTlGQjVG
MzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9X
S0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDQ2
RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZW
aWV3Lmg7IHBhdGggPSBpb3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29y
a0Jsb2JSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZEMTkx
RDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkxRDgyQUIwMERBODA3MiAv
KiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29rRG9jdW1l
bnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYxOSw3ICs0NjE3LDYgQEAKIAkJRTE2NEEyRjAxOTFB
RjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
NzA4NzY5MTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5jcHA7IHBhdGgg
PSBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTcwODc2QTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmxvYlJlZ2lzdHJ5UHJv
eHkuaDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTc5OEM3NzE2RTY4MTg4MDAyNDAxMzkgLyogTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTE3QUUyQzExNkI5QzEzOTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nl
c3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QUUyQzIxNkI5QzYzQTAwMUM0MkYxIC8qIGNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFBy
aW50SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludElu
Zm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY2NCw3ICs2NjYxLDYgQEAK
IAkJCQk1QzE0MjZGMjFDMjNGODJEMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJ
CTVDMTQyNkYxMUMyM0Y4MTcwMEQ0MTE4MyAvKiBEb3dubG9hZHMgKi8sCiAJCQkJQkM4MjgzN0Mx
NkI0NURBNTAwQTI3OEZFIC8qIEVudHJ5UG9pbnQgKi8sCi0JCQkJRTE3OThDNzYxNkU2ODE1NTAw
MjQwMTM5IC8qIEZpbGVBUEkgKi8sCiAJCQkJOTM5Mjg4RTAyMTQwNERGMDAwRUJCQTMzIC8qIElu
ZGV4ZWREQiAqLywKIAkJCQkyREE5NDRCQjE4ODUxMUREMDBFRDg2REIgLyogaW9zICovLAogCQkJ
CTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCkBAIC05MDI0LDE1ICs5MDIwLDYg
QEAKIAkJCW5hbWUgPSBGaWxlQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
LQkJRTE3OThDNzYxNkU2ODE1NTAwMjQwMTM5IC8qIEZpbGVBUEkgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxNzk4Qzc3MTZFNjgxODgwMDI0MDEzOSAv
KiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLywKLQkJCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2
QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovLAotCQkJKTsKLQkJCXBhdGggPSBGaWxlQVBJ
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRTE5OTg3NUIxNDJCRjlDRjAw
QkIyREU3IC8qIFBERiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC05NDgwLDcgKzk0NjcsNiBAQAogCQkJCTFBNEE5QzU2MTJCODE2Q0YwMDhGRTk4NCAvKiBO
ZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTg4OTIxMUVFNzA0
MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MzVCQ0I5MjIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3IC8qIE5ldHdvcmtCbG9iUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2RUNDMUEwRDA0MEIwMEVBRDIwNCAvKiBO
ZXR3b3JrQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OUQ0MEQ3MUFEM0ZCMTcwMDY2QjdC
OSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ4OUQy
OEMxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVycy5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggMjRlMzU1OWNmZjA2OWJkMzE3OTFlZTY1MTc4ZWFmNGU0ZGMwZTQ3
ZC4uMmYzYjZiYTgzMTQ3ODQ1ZTY4NjJjNGY5MDM5N2QyNTFjNjViMTdmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIApAQCAtNDQs
MzcgKzQ0LDMzIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlCiAgICAgaWYgKCFmaWxlLT5wYXRo
KCkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmls
ZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgZXh0ZW5zaW9uSGFu
ZGxlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBhdGgoKSwgZXh0
ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVS
TChzZXNzaW9uSUQsIHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRU
eXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+
JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0
ZXJCbG9iVVJMKHVybCwgYmxvYlBhcnRzLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0
ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9
CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJs
b2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCiB7Ci0gICAgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgPSBmYWxz
ZTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc2hvdWxkQnlwYXNzQ29ubmVjdGlv
bkNoZWNrID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwotI2Vu
ZGlmCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgdXJsLCBzcmNVUkwsIHNob3VsZEJ5
cGFzc0Nvbm5lY3Rpb25DaGVjayB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwg
eyBzZXNzaW9uSUQsIHVybCwgc3JjVVJMIH0sIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7CiAgICAgQVNTRVJUKGZpbGUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Npb25JRCwgdXJs
LCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIEJs
b2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCksIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQogCiB1bnNp
Z25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJs
KQpAQCAtODUsOSArODEsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6
OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCi12
b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoc2Vzc2lvbklELCBi
bG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRl
eCA2YWJlZTM2NzQ4ZGZlY2MyY2FkNDZjY2MyMjJhNzRjNTE3NmQ4OWQ0Li5kNzY2MTU4N2UzZTc0
MzgzMmUyMzI1YzY3OTZjZmEzNDViYjk1NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDE0ICszMSwxNCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmIGZpbGVQYXRocyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxv
YlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JT
aXplKGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpIGZpbmFsOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggZDlhZGNjMjFhOGE5NmIyYWE1
NDUzNjZkZTA5NWQwNDdjNjI1N2VkZi4uYWZkNzQ3YTViOTkxODU3MDMwODNmYWM1NzBmYzQ4YjRl
NWNiZWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTEsOSArMjExLDkgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OlMKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRo
cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoc2Vzc2lvbklELCBibG9iVVJMcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZpbmlzaFBpbmdM
b2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYmIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDBj
ZGU1OTliMWUwNDlkODgzMTNhMGQwMzA1ZjgwMmFmNTI3OWRjZDkuLjYyNmRhYjExYjJkZjI5OTRj
YWRiYTc3M2Y5MjUxMDhmMWM1NzliNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyKiBleGlzdGluZ0lEQkNvbm5lY3Rp
b25Ub1NlcnZlckZvcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcikgY29uc3QgeyByZXR1
cm4gbV93ZWJJREJDb25uZWN0aW9uc0J5SWRlbnRpZmllci5nZXQoaWRlbnRpZmllcik7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMDhhOTAyNjIwYzY2YjNjZmVjN2UxMDRh
MDM0OGUzZjI2NDMxNDRjYy4uN2IzMWFiMGIwYWNiYjFmYzgwODY2ZTZmODMxODczNDJjNmJkYzUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtNjIsOSArNjIsMjUgQEAgUGFz
dGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRT
dHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK2NsYXNzIFdlYkJsb2JSZWdpc3RyeSBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgeworcHJpdmF0ZToKKyAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RG
TW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0
cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdp
c3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBz
cmNVUkwpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0K
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVy
QmxvYlVSTCh1cmwpOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVS
TCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6ZSh1cmwpOyB9Cisg
ICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JS
ZWdpc3RyeS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOyB9CisKKyAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJ
bXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CisKKyAgICBCbG9iUmVnaXN0
cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OworfTsKKwogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsOworICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lzdHJ5OwogfQog
CiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376063</attachid>
            <date>2019-08-12 08:10:04 -0700</date>
            <delta_ts>2019-08-12 09:29:15 -0700</delta_ts>
            <desc>GTK</desc>
            <filename>bug-200567-20190812170949.patch</filename>
            <type>text/plain</type>
            <size>93011</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2NWNlZmM2N2EzZjAy
YmE5OGJhZWU2ZjIxNjcyNzFmZjIwNGM5MC4uNTBlZGY0YTc3YjcxY2RmZmM2MmIyMDc2M2Q3M2Rm
NTc4NzllZTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3Mgc2Vzc2lvbiBJRHMgdG8gYWxsIEJsb2JSZWdpc3RyeSBtZXRob2RzIGluIHBhcnRpY3Vs
YXIgVGhyZWFkYWJsZUxvYWRlclJlZ2lzdHJ5LgorICAgICAgICBUaGUgb25seSBleGNlcHRpb24g
aXMgYmxvYlNpemUgd2hpY2ggc2hvdWxkIGJlIGRlYWx0IHdpdGggYSBmb2xsb3ctdXAgcGF0Y2gu
CisgICAgICAgIGJsb2JTaXplIGJsb2IgcmVnaXN0cnkgaXMgcmV0cmlldmVkIGZyb20gdGhlIGNv
bm5lY3Rpb24gLT4gc2Vzc2lvbklEIG1hcCBpbiBOZXR3b3JrIFByb2Nlc3MuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6fkZpbGVSZWFkZXJMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Lmg6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYlJlc291
cmNlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZSBjb25zdCk6
CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBJREJWYWx1ZTo6bV9zZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjU0YzkxMDc3NTFj
ZTQ2MjI0ZDY4NDJiYTEzMzhiYzAwZjE2MzQ0NS4uNDY0MjhjY2JkMzY0Y2U2MzllZjljNjQ0NmY2
YjRjOTkzZGEwNzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxOS0wOC0xMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVz
IHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NDEyMDIxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIGJsb2IgcmVnaXN0cnkgdG8gTmV0d29ya1Nlc3Npb24gc28gdGhhdCBpdCBpcyBwYXJ0
aXRpb25lZCBieSBzZXNzaW9uIElELgorICAgICAgICBJbiBjYXNlIHNlc3Npb24gSUQgaXMgbm90
IGdpdmVuIHRocm91Z2ggSVBDLCB1c2UgdGhlIGNvbm5lY3Rpb24gYXMga2V5IHRvIGdldCB0aGUg
bmV0d29yayBzZXNzaW9uLgorICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIGJsb2JTaXplLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZy
b21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
ckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6
Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAg
ICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggN2YwZWY1MGQzNTQzODFlYTU4ZDUwZjdhYzMyN2IyZWQ3
MWM5NzRlZC4uOTYyYTM4ZmE1NjNjMzZkNTk5Yjg2OWRhMDRlMmNkYmVjZmNjMzAzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lz
dHJ5KToKKyAgICAgICAgSWdub3JlIHNlc3Npb25JRCBwYXJhbWV0ZXIgZm9yIFdLMS4KKwogMjAx
OS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcAppbmRleCBjMGRiZjVmZTU3OGYxZjU5YjZmNGMxYjA3YWJjMDFlN2QyNTFk
Nzc5Li5kOGRiOTBjY2IxNDQ5NDYwZTI4NzM4MWZkZjc0YjNhMmIyMDI5ZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBGZXRjaExvYWRlcjo6fkZldGNoTG9hZGVyKCkKIHsKICAg
ICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgbV91
cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTY0LDcgKzY0LDggQEAg
dm9pZCBGZXRjaExvYWRlcjo6c3RhcnRMb2FkaW5nQmxvYlVSTChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYlVSTCk7CisgICAgbV9zZXNzaW9uSUQgPSBjb250
ZXh0LnNlc3Npb25JRCgpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTCgqbV9zZXNzaW9uSUQsIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFk
aW5nLCBibG9iVVJMKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1fdXJsRm9yUmVh
ZGluZyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3JJZGVudGlmaWVyKGNvbnRleHQucmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaAppbmRleCA0MDExYjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZm
Li5iNmM2NTA4Y2EzNzYzZTMxMzNkNGEzZGJkNDExOThhY2E1ODRlOTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZh
dGU6CiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIqIG1fY29uc3VtZXI7CiAgICAgYm9vbCBtX2lzU3Rh
cnRlZCB7IGZhbHNlIH07CiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBPcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCAxZDAwNTRjMjg5MmQ1MDEzZGYyNmFiZmZhM2UxYzJmNjdkZWU0ODE5Li4x
MTRmZjNjOGE1ZGYwMzkwMjgzYjFhNjdjZTYwOGQ3ZjQyNDZlN2MyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM1
NjksMTMgKzM1NjksMTIgQEAgVmVjdG9yPFN0cmluZz4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpi
bG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICAvLyBGSVhN
RTogR2V0IHRoZSByaWdodCBibG9iIHJlZ2lzdHJ5IGZyb20gdGhlIGdpdmVuIHNlc3Npb25JRC4K
LSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxz
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11
dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNl
c3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8m
JiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgICAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKQEAgLTM1ODYsNyAr
MzU4NSw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9y
SW5kZXhlZERCKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0CiAgICAgICAgIH0KIAogICAgICAgICBB
U1NFUlQobV9ibG9iVVJMcy5zaXplKCkgPT0gYmxvYkZpbGVQYXRocy5zaXplKCkpOwotICAgICAg
ICAKKwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0aGlzLCBtX2Jsb2JVUkxzLCBibG9i
RmlsZVBhdGhzIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggNDY0
YzEzNzJiMGYzNzc3NzUxY2FkMzM5YmEyZWQ3YWE1NDZkODRiYi4uOGRhYTBjMTFjNmZkOTIxMzk2
ZmQ1NzgxMzljN2JjMDM3ZGZjNWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC01OCwx
MiArNTgsMTIgQEAgcHVibGljOgogdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgcHVibGljVVJMLCBVUkxS
ZWdpc3RyYWJsZSYgYmxvYikKIHsKICAgICBBU1NFUlQoJmJsb2IucmVnaXN0cnkoKSA9PSB0aGlz
KTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5z
ZWN1cml0eU9yaWdpbigpLCBwdWJsaWNVUkwsIHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwo
KSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQu
c2Vzc2lvbklEKCksIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNf
Y2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOwogfQogCi12b2lkIEJsb2JVUkxSZWdpc3RyeTo6dW5y
ZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiB1cmwpCit2b2lk
IEJsb2JVUkxSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKGNvbnRleHQuc2Vzc2lvbklEKCksIHVybCk7CiB9CiAKIFVSTFJlZ2lzdHJ5
JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKQEAgLTgyLDcgKzgyLDcgQEAgQmxvYjo6Qmxv
YihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgLCBtX3NpemUoMCkKIHsKICAgICBtX2lu
dGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQs
IG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMs
IGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCkBAIC0xMDAsNyArMTAwLDcgQEAg
QmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cywKICAgICAgICAgKTsKICAgICB9CiAKLSAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYnVpbGRlci5m
aW5hbGl6ZSgpLCBtX3R5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBt
X3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC0xMTQs
NyArMTE0LDcgQEAgQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGMKICAgICBWZWN0b3I8QmxvYlBhcnQ+
IGJsb2JQYXJ0czsKICAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkp
KTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwg
V1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBXVEZNb3Zl
KGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCkBAIC0xMjUsNyArMTI1LDcgQEAgQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGUKICAgICBW
ZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsKICAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0
KFdURk1vdmUoZGF0YSkpKTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50
ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
bV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVy
bmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAogQmxvYjo6Qmxv
YihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb25zdCBCbG9iJiBibG9iKQpA
QCAtMTM0LDcgKzEzNCw3IEBAIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25z
dHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikKICAgICAsIG1fdHlwZShibG9iLnR5cGUoKSkKICAg
ICAsIG1fc2l6ZShibG9iLnNpemUoKSkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwg
bV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9z
ZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlw
ZSk7CiB9CiAKIEJsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKQEAgLTE0NCw5ICsx
NDQsOSBAQCBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUgogewogICAgIG1faW50ZXJuYWxVUkwgPSBC
bG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChu
dWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG51bGxwdHIsIG1faW50ZXJuYWxV
UkwsIHNyY1VSTCk7CiAgICAgZWxzZQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkws
IGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChtX3Nlc3Npb25JRCwgbV9pbnRl
cm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6Qmxv
YihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTE1NSwxMiArMTU1
LDEyIEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvCiAgICAgLCBtX3NpemUoLTEpIC8vIHNpemUg
aXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGVuZCAtIHN0YXJ0LgogewogICAgIG1faW50ZXJu
YWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwg
c3RhcnQsIGVuZCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7
CiB9CiAKIEJsb2I6On5CbG9iKCkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBCbG9iOjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CmluZGV4IGViNWI2YTE3Njc4YTM0ZGEzYzBjNmFlYjlmOGM1YmVmNGVkMGFmMjAuLmIzZTgxYzhi
OGE0MjJhZDFlNjllYTFlOTI2MjcxZDk4NzQxMGE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBGaWxlOjpGaWxlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpOwogICAgIG1fc2l6ZSA9IC0xOwogICAgIGNvbXB1dGVOYW1lQW5kQ29udGVu
dFR5cGUobV9wYXRoLCBTdHJpbmcoKSwgbV9uYW1lLCBtX3R5cGUpOwotICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90
eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKHNl
c3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKIH0KIAogRmlsZTo6RmlsZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lT3ZlcnJpZGUpCkBAIC02Myw3ICs2Myw3IEBAIEZpbGU6OkZpbGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAg
bV9zaXplID0gLTE7CiAgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShtX3BhdGgsIG5hbWVP
dmVycmlkZSwgbV9uYW1lLCBtX3R5cGUpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKKyAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgbV9pbnRl
cm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKIH0KIAogRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggODk3MTU1YTEyMjkxZGM0ZTUzNTIzNGUw
ODhhOGM0MmVmYTA5YjVhNy4uNGRjZDBkZDBjMDljN2YwYzBlODc0NmFkODAxMzY2ZDhjYWU2OThl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIEZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9hZGVyKCkKIHsKICAg
ICB0ZXJtaW5hdGUoKTsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVh
ZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KCptX3Nlc3Npb25JRCwgbV91cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVyTG9h
ZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBCbG9iJiBibG9iKQpAQCAtODEsNyArODEsOCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsbwog
ICAgICAgICBmYWlsZWQoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJs
b2IudXJsKCkpOworICAgIG1fc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vz
c2lvbklEKCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKCpt
X3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91
cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0
aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA3YTQyOGJl
NTA1N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVhMjllMDBhLi40MTliMjA5M2M3ZDc5MGJmMjE1M2Rh
MmJjZDI5MTU0ZGRiNjBkNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAg
ICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1f
cmF3RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCmluZGV4IDViYzliYWY3ODI3OTZiYTQzM2Q3ZTgyOWMxMGFmNjc3MTdhYTQzOTAu
LmE5NWIyNDlmOGM4NDIzZmQ3NDViYzJhYzk3YjI3YmMwNGFhM2E3MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTA5
ICs2NCw5NyBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9yaWdpbk1hcD4mIG9yaWdp
bk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc3RUb01haW5UaHJl
YWQoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBDcm9zc1RocmVh
ZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4qIHF1ZXVlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7Ci0gICAgICAgIHF1ZXVlID0gbmV3IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJl
YWRUYXNrPjsKLSAgICB9KTsKLQotICAgIHF1ZXVlLT5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Cisg
ICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
RmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtdIHsKLSAgICAgICAgYXV0byB0YXNrID0gcXVldWUtPnRyeUdldE1lc3Nh
Z2UoKTsKLSAgICAgICAgQVNTRVJUKHRhc2spOwotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29w
eSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlw
ZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVC
bG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRo
KSwgY29udGVudFR5cGUpOwogICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkp
Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwotICAgIGVsc2Ugewot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGgg
PSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVk
Q29weSgpXSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsK
LSAgICAgICAgfSk7Ci0gICAgfQotfQotCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0
cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRzKQotICAgICAgICAg
ICAgcGFydC5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBh
cnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1v
dmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWlu
VGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Np
b25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iUGFydHMpCisgICAgICAgIHBh
cnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1
cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIH0pOwogfQogCi12b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCkKIHsKICAgICAvLyBJZiB0aGUgYmxvYiBVUkwgY29udGFpbnMgbnVsbCBvcmlnaW4sIGFzIGlu
IHRoZSBjb250ZXh0IHdpdGggdW5pcXVlIHNlY3VyaXR5IG9yaWdpbiBvciBmaWxlIFVSTCwgc2F2
ZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHVybCBhbmQgb3JpZ2luIHNvIHRoYXQgdGhlIG9yaWdpbiBj
YW4gYmUgcmV0cml2ZWQgd2hlbiBkb2luZyBzZWN1cml0eSBvcmlnaW4gY2hlY2suCiAgICAgaWYg
KG9yaWdpbiAmJiBCbG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAibnVsbCIpCiAgICAgICAgIG9y
aWdpbk1hcCgpLT5hZGQodXJsLnN0cmluZygpLCBvcmlnaW4pOwogCi0gICAgaWYgKGlzTWFpblRo
cmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNV
UkwpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNv
bGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKV0gewotICAgICAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKLSAgICAgICAg
fSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgc3JjVVJMKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xh
dGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwpOworICAg
IH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7
Ci0gICAgZWxzZQotICAgICAgICBwb3N0VG9NYWluVGhyZWFkKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
ayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBjb250ZW50VHlwZSkpOworICAgIGlm
IChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBmaWxl
QmFja2VkUGF0aCA9IGZpbGVCYWNrZWRQYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Npb25JRCwgdXJsLCBzcmNVUkws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5
cGUpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kKQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwot
ICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtuZXdVUkwgPSBuZXdVUkwuaXNv
bGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0g
ewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3
VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwotICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
c2Vzc2lvbklELCBuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIG5ld1VSTCA9IG5ld1VS
TC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwg
ZW5kXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNl
c3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOworICAgIH0pOwogfQogCiB1bnNp
Z25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdFNpemU7CiAgICAgaWYgKGlz
TWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJs
KTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHRTaXplOworICAgIEJpbmFyeVNlbWFw
aG9yZSBzZW1hcGhvcmU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVk
Q29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0gewogICAgICAgICByZXN1bHRTaXplID0g
YmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQmluYXJ5
U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJs
Lmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0gewotICAgICAgICAgICAg
cmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7Ci0gICAgICAgICAgICBz
ZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBzZW1hcGhvcmUud2FpdCgp
OwotICAgIH0KKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFw
aG9yZS53YWl0KCk7CiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1
cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkp
OwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTCh1cmwpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAgIH0pOworICAgIGlmIChpc01haW5UaHJl
YWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9u
SUQsIHVybCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FsbE9uTWFpblRocmVhZChb
c2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpOworICAgIH0pOwogfQogCiBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9y
aWdpbihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTljNzlmZTIyOTJmODk1YjMxYzYwZjc1NjdmZmQwNDkz
ZmVkYzgzMi4uMzE1ZjVjYWRiNDY2Mzg5ODBiNGMxZmQ4ZWM1YjY3ZGJlM2U0MTI3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTQw
LDEyICs0MCwxMiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8
QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKLSAgICBzdGF0aWMg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGxv
bmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJlZGJhZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdk
N2ZiMC4uN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4YTA3Yzc4ZTZjNTc5ZDY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0yNiw4ICsyNiw5IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCi0jaW5jbHVk
ZSA8d3RmL1VSTC5oPgorCiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggOGI5MWUx
YzMyNGQ3OGU3MTVlOGRlN2Y3NzhmNDM4YmNjZGNhOGNjZS4uNTM2MzcwM2I4Y2I0M2MyYmQ5MzAw
ZmI2NWE5NzQ0ZjQ4NWRkZWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcApAQCAtMTA2LDEwICsxMDYsMTEgQEAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUg
UG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3NhcnkoUmUKIAogICAg
IC8vIENyZWF0ZSBhIG5ldyB0ZW1wb3JhcnkgYmxvYlVSTCBpbiBjYXNlIHRoaXMgb25lIGdldHMg
cmV2b2tlZCBkdXJpbmcgdGhlIGFzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lv
bi4KICAgICBVUkwgdGVtcG9yYXJ5QmxvYlVSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTCgm
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCwgcmVxdWVzdC51cmwoKSk7CisgICAg
YXV0byBzZXNzaW9uSUQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNlc3Npb25JRCgpOworICAgIGJs
b2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkws
IHJlcXVlc3QudXJsKCkpOwogICAgIHJlcXVlc3Quc2V0VVJMKHRlbXBvcmFyeUJsb2JVUkwpOwot
ICAgIHJldHVybiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KFt0ZW1wb3JhcnlCbG9iVVJMID0g
V1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKKyAgICByZXR1cm4gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1w
b3JhcnlCbG9iVVJMKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVS
TChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCAyZTg5M2JkY2M4
OGEzMWZjOWViNGE5ZjM0YzlkZDc4YjY5YzQ4Y2ZkLi42NjBhNzk2ZDBiMmQ4OTg2MjUxYjgwNmQz
OTEzYmY5MTQ1NGU5ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdp
c3RyeTsKK2NsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiAKIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdp
c3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKQEAgLTQ2LDI3ICs0OCwyNyBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVibGljOgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxv
YiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAg
IC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2Ig
ZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3Rv
cjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3Rv
cjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogICAgIAogICAg
IC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBp
ZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQgc3JjVVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBVUkwmIHNyY1VSTCkgPSAwOwogCiAgICAgLy8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJl
ZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNV
Ukwgb3IsIGlmIG5vbmUgZm91bmQsIHJlZmVycmluZyB0byB0aGUgZmlsZSBmb3VuZCBhdCB0aGUg
Z2l2ZW4gcGF0aC4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAKICAgICAvLyBOZWdh
dGl2ZSBzdGFydCBhbmQgZW5kIHZhbHVlcyBzZWxlY3QgZnJvbSB0aGUgZW5kLgotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JikgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3Qg
VVJMJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5SW1wbCog
YmxvYlJlZ2lzdHJ5SW1wbCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMTI5MDk1YjQ0NmE0NGYyODAz
ZWExMDE4YzI2ZGI3NTE4NTI3MDFhNS4uNWIyMmJkMTY4YzNlYTUzYTkyY2E0YWU4OTQ0MmU5Yjkx
MTQ0ODVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeUltcGwuY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgQmxvYlJlZ2lzdHJ5SW1wbDo6
fkJsb2JSZWdpc3RyeUltcGwoKSA9IGRlZmF1bHQ7CiAKIHN0YXRpYyBSZWY8UmVzb3VyY2VIYW5k
bGU+IGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuY3JlYXRlUmVzb3VyY2VIYW5k
bGUocmVxdWVzdCwgY2xpZW50KTsKKyAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lz
dHJ5SW1wbCgpLT5jcmVhdGVSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQpOwogfQogCiBz
dGF0aWMgdm9pZCBsb2FkQmxvYlJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVj
dG9yPGNoYXI+JiBkYXRhKQogewotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0
PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHJl
cXVlc3QudXJsKCkpOworICAgIGF1dG8qIGJsb2JEYXRhID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJl
Z2lzdHJ5SW1wbCgpLT5nZXRCbG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgQmxv
YlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGJsb2JEYXRhLCByZXF1
ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCkBAIC0zNDMsNCArMzQzLDE5IEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JV
UkwsIGNvbnN0IFN0cmluZyYgcGF0CiAgICAgfSk7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPj4gQmxvYlJlZ2lzdHJ5SW1wbDo6ZmlsZXNJbkJsb2IoY29uc3QgVVJM
JiB1cmwpIGNvbnN0Cit7CisgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwo
dXJsKTsKKyAgICBpZiAoIWJsb2JEYXRhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVj
dG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7CisgICAgZm9yIChjb25z
dCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgeworICAgICAgICBpZiAo
aXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChpdGVtLmZpbGUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBlMTUxZDNhZmIwNjZkYmY1YjVlZThm
ZWQ3ZDhhZjY4NjJlMDhiZTg2Li5kYjlkNmRmNzBiNzhkMTUzNTQ5NzAyMzZjNzVkMTBmMzQ2OWU4
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAogLy8gQmxvYlJlZ2lzdHJ5SW1wbCBpcyBub3QgdGhy
ZWFkLXNhZmUuIEl0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIG1haW4gdGhyZWFkLgotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5SW1wbCBmaW5hbCA6IHB1YmxpYyBCbG9iUmVn
aXN0cnkgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5SW1wbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5
SW1wbCgpOwpAQCAtNTgsMTcgKzU4LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3Rv
cmFnZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKLSAgICBib29sIGlzQmxvYlJlZ2lzdHJ5
SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogCi0gICAgdW5z
aWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAotICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxl
UGF0aHMpPiYmKTsKIAogICAgIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcgewogICAgICAgICBT
dHJpbmcgYmxvYlVSTDsKQEAgLTc2LDYgKzc1LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBi
b29sIHBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIFZlY3RvcjxCbG9iRm9yRmlsZVdyaXRpbmc+Jik7CisgICAgVmVjdG9yPFJlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZDZm
MjkxNjFhNDdkYjU0ZjRkNGZhYmExNDUxZmQ5YjY1MjE3MDE3YS4uZDcxYjFlZGNjZmNhZDE4YzVl
ZWM3MDJlMmYxZWVkZjdmOTZiNjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI4NiwxNCArMjg2LDE0IEBAIFN0cmluZyBGb3JtRGF0YTo6
ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6
ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYg
YmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQorc3RhdGlj
IHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwg
Rm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIWJsb2JSZWdp
c3RyeS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgeworICAgIGlmICghYmxvYlJlZ2lzdHJ5KSB7CiAg
ICAgICAgIExPR19FUlJPUigiVHJpZWQgdG8gcmVzb2x2ZSBhIGJsb2Igd2l0aG91dCBhIHVzYWJs
ZSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogYmxvYkRh
dGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KS5nZXRCbG9i
RGF0YUZyb21VUkwodXJsKTsKKyAgICBhdXRvKiBibG9iRGF0YSA9IGJsb2JSZWdpc3RyeS0+Z2V0
QmxvYkRhdGFGcm9tVVJMKHVybCk7CiAgICAgaWYgKCFibG9iRGF0YSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRhIGZyb20gYSByZWdpc3RyeSIpOwogICAgICAg
ICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29s
dmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9ybURhdGEsIGMKICAg
ICB9CiB9CiAKLVJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhC
bG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29s
dmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnkpCiB7CiAgICAg
Ly8gRmlyc3QgY2hlY2sgaWYgYW55IGJsb2JzIG5lZWRzIHRvIGJlIHJlc29sdmVkLCBvciB3ZSBj
YW4gdGFrZSB0aGUgZmFzdCBwYXRoLgogICAgIGJvb2wgaGFzQmxvYiA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDIwYmY2MmUyMTAwMGY1
NTM2YTU5YzY5YjZjNTI1OTIwNTlhNWYzM2YuLjdjNjg2ZThiNDIzYjM2ZGU4YjEyZjEwYjU3ZGYx
OGRlM2U0MDk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBCbG9i
UmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBj
bGFzcyBGaWxlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFJlc29sdmUgYWxsIGJsb2IgcmVmZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUg
ZmlsZSBhbmQgZGF0YS4KICAgICAvLyBJZiB0aGUgRm9ybURhdGEgaGFzIG5vIGJsb2IgcmVmZXJl
bmNlcyB0byByZXNvbHZlLCB0aGlzIGlzIHJldHVybmVkLgotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdp
c3RyeUltcGwqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZvcm1EYXRhRm9yVXBsb2FkIHByZXBh
cmVGb3JVcGxvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggNDdmMTU0MThmMmFkNGQ1
Zjg1ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNC4uNTNmZWEwNTYzNTk4YWMxODk1ZTk2NzY0MzcyYTE3
ZTdkOWQyZWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgc3Rh
dGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJl
YW1FdmVudFR5cGUgdHlwZSwgdm8KIAogUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRl
SFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEmIGZvcm1EYXRhKQogewotICAgIGF1dG8gcmVz
b2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0
cnkoKSk7CisgICAgYXV0byByZXNvbHZlZEZvcm1EYXRhID0gZm9ybURhdGEucmVzb2x2ZUJsb2JS
ZWZlcmVuY2VzKGJsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKSk7CiAgICAgYXV0byBk
YXRhRm9yVXBsb2FkID0gcmVzb2x2ZWRGb3JtRGF0YS0+cHJlcGFyZUZvclVwbG9hZCgpOwogCiAg
ICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gQ0ZOZXR3b3JrIGRvZXNuJ3Qg
dXNlIGNodW5rZWQgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCAzMWM2YTBlNGViYWJjYTYyMmM3OWVh
MzZhYTE3ZDg3MTVmNWE5Nzc0Li5lOThiYTE4ODRmNTQ1YzNlNGM1NjBlMDA3Njg1ODNjNDg3YmIw
NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorICAgIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CisKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC04Nyw3ICs4OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdlSGVhZGVy
cyhTb3VwTWVzc2FnZUhlYWRlcnMqKSBjb25zdDsKICAgICAgICAgdm9pZCB1cGRhdGVGcm9tU291
cE1lc3NhZ2VIZWFkZXJzKFNvdXBNZXNzYWdlSGVhZGVycyopOwotICAgICAgICB2b2lkIHVwZGF0
ZVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKikgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlU291
cE1lc3NhZ2UoU291cE1lc3NhZ2UqLCBCbG9iUmVnaXN0cnlJbXBsJikgY29uc3Q7CiAgICAgICAg
IHZvaWQgdXBkYXRlRnJvbVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKik7CiAgICAgICAgIHZvaWQg
dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqKSBjb25zdDsKICAgICAgICAgdm9pZCB1cGRh
dGVGcm9tU291cFJlcXVlc3QoU291cFJlcXVlc3QqKTsKQEAgLTExMSw3ICsxMTMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBtX2luaXRp
YXRpbmdQYWdlSUQ7CiAKICAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZU1lbWJlcnMoU291
cE1lc3NhZ2UqKSBjb25zdDsKLSAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291
cE1lc3NhZ2UqKSBjb25zdDsKKyAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291
cE1lc3NhZ2UqLCBCbG9iUmVnaXN0cnlJbXBsJikgY29uc3Q7CiAgICAgICAgIHZvaWQgZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0KICAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDk2MDFlNjYzMTdiMDU5NGZiOTA0ZDNiOTEyZjYy
NmM4MmY3M2NhYjkuLjMzNWIzZDkyYWNmMGI5OTZkODQxNTI3OGRhOGVhOWQ3YjNmNGM5ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHVpbnQ2NF90
IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3Vw
TWVzc2FnZSwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0Cit2b2lkIFJl
c291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KSBjb25zdAogewogICAgIGF1dG8q
IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKICAgICBpZiAoIWZvcm1EYXRhIHx8IGZvcm1EYXRhLT5p
c0VtcHR5KCkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVT
b3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKSBjb25zdAogICAgICAgICAg
ICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kX2J1ZmZlcihzb3VwTWVzc2Fn
ZS0+cmVxdWVzdF9ib2R5LCBzb3VwQnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRh
JiBibG9iKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gc3RhdGljX2Nh
c3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwo
YmxvYi51cmwpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gYmxvYlJl
Z2lzdHJ5LmdldEJsb2JEYXRhRnJvbVVSTChibG9iLnVybCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBib2R5U2l6ZSArPSBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNz
YWdlQm9keShzb3VwTWVzc2FnZSwgaXRlbSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGcm9tU291cE1lc3NhZ2VIZWFk
ZXJzKFNvdXBNZXNzYWdlSGVhZGVycyogc291cEhlYWRlCiAgICAgICAgIG1faHR0cEhlYWRlckZp
ZWxkcy5zZXQoU3RyaW5nKGhlYWRlck5hbWUpLCBTdHJpbmcoaGVhZGVyVmFsdWUpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3Vw
TWVzc2FnZSkgY29uc3QKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZShT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSkg
Y29uc3QKIHsKICAgICBnX29iamVjdF9zZXQoc291cE1lc3NhZ2UsIFNPVVBfTUVTU0FHRV9NRVRI
T0QsIGh0dHBNZXRob2QoKS5hc2NpaSgpLmRhdGEoKSwgTlVMTCk7CiAKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2UoU291cE1lc3NhZ2Uq
IHNvdXBNZXNzYWdlKSBjb25zdAogICAgIHNvdXBfbWVzc2FnZV9zZXRfdXJpKHNvdXBNZXNzYWdl
LCB1cmkuZ2V0KCkpOwogCiAgICAgdXBkYXRlU291cE1lc3NhZ2VNZW1iZXJzKHNvdXBNZXNzYWdl
KTsKLSAgICB1cGRhdGVTb3VwTWVzc2FnZUJvZHkoc291cE1lc3NhZ2UpOworICAgIHVwZGF0ZVNv
dXBNZXNzYWdlQm9keShzb3VwTWVzc2FnZSwgYmxvYlJlZ2lzdHJ5KTsKIH0KIAogdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwTWVzc2FnZShTb3VwTWVzc2FnZSogc291cE1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEyZGRjM2UxM2EwMjBiMjU2NGE2MmRj
NTUzZjBiNWQ0NGQwLi5mZmZiNDczNWRiMjFlZDU0YTgwYjRkMDNmNGQ0ZTcwNDU0NmJmOWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJEb3dubG9h
ZE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkRvd25sb2FkLmgiCi0jaW5jbHVkZSAiTmV0d29ya0Js
b2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgpA
QCAtNTUsMTAgKzU0LDEwIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hCiAgICAgcGFyYW1ldGVy
cy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xp
Y3kgPSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsK
ICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBwYXJhbWV0
ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5m
aWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJl
ZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0
cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogCi0g
ICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9h
ZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAm
Y2xpZW50KCkubmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWRO
YW1lKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2Vf
dW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25G
b3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtT
ZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+YmxvYlJlZ2lzdHJ5
KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNr
QmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRy
PERvd25sb2FkPiYmIGRvd25sb2FkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAzODZjOWU3NmZlYzkz
NmMxNTRlZjc0YWZhYWQxYjg1MDZhN2E1N2Y0Li43NGVkMTNiZTYxM2Q3MWZkMzMyNDE2OTVlNWRi
MzYxNmMyNDUwODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNTUsNyArNTUsNiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyOwogY2xhc3MgRG93bmxv
YWQ7Ci1jbGFzcyBOZXR3b3JrQmxvYlJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsK
QEAgLTc1LDcgKzc0LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIEF1dGhlbnRpY2F0aW9u
TWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5hZ2VyKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIE5ldHdvcmtTZXNzaW9uKiBuZXR3b3JrU2Vzc2lvbihjb25zdCBQQUw6OlNl
c3Npb25JRCYpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBOZXR3b3JrQmxvYlJlZ2lzdHJ5
JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkg
Y29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdWludDMyX3QgZG93bmxvYWRNb25pdG9yU3BlZWRNdWx0aXBsaWVyKCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDYzOTk4ZDU4NjgxNTg4NTg2NTlh
ZDkyYWMyMDA1M2EyMzZlMDY2MzQuLjc2NGFlOTRlZjBmNDQ0YTgxZTA1YjZiMjk4ODdmN2M5ODZj
OGVlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTE2NiwyMCArMTY2LDQgQEAgVmVj
dG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpm
aWxlc0luQmxvYihOZXR3b3JrQ28KICAgICByZXR1cm4gZmlsZXNJbkJsb2IodXJsKTsKIH0KIAot
VmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpmaWxlc0luQmxvYihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQobV9ibG9iUmVnaXN0
cnkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpOwotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9IG1fYmxv
YlJlZ2lzdHJ5LmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwotICAgIGlmICghYmxvYkRhdGEpCi0g
ICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IHJlc3VsdDsKLSAgICBmb3IgKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA6IGJsb2JE
YXRhLT5pdGVtcygpKSB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06
OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0uZmlsZSgpKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0Y2ZlZDlkYWY3OTgwM2JjNWFmODE1Zjg0OWJj
YTJhMTBjZTdlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KLSNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwotY2xhc3MgQmxvYlBhcnQ7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKLWNsYXNzIFNhbmRib3hFeHRlbnNpb247Ci0KLWNsYXNzIE5ldHdvcmtCbG9iUmVnaXN0
cnkgewotV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya0Jsb2JSZWdpc3RyeSk7Ci1wdWJsaWM6
Ci0gICAgTmV0d29ya0Jsb2JSZWdpc3RyeSgpOwotICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7
Ci0KLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hl
Y2spOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBp
bnQ2NF90IGVuZCk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYpOwotICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Ci0gICAgdm9pZCB3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgd3JpdGVC
bG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKLQotICAgIHZvaWQgY29ubmVj
dGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZp
bGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0lu
QmxvYihjb25zdCBVUkwmKTsKLSAgICAKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBi
bG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeTsgfQotCi1wcml2YXRlOgotICAg
IHR5cGVkZWYgSGFzaE1hcDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8
VVJMPj4gQmxvYkZvckNvbm5lY3Rpb25NYXA7Ci0gICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9i
bG9ic0ZvckNvbm5lY3Rpb247Ci0gICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JS
ZWdpc3RyeTsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWIxYjli
ODYwNDM4ZDliNmEzZjEyNjg5MTQ2MmIzMzZiYzU5ZmM0ZC4uMmU0ZjUzZDJhZGMwZTg1MjAyNmIw
MzcxYjUxNTRkNGIzYzg5OTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMw
MSw3ICszMDEsNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICAgICBtX25ldHdvcmtQcm9jZXNzLT53
ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pOwogCi0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZSgqdGhpcyk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKnRoaXMpOwogCiAjaWYgVVNFKExJQldFQlJUQykKQEAgLTM3NCwxMyArMzcz
LDE5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuZFN1c3BlbnNpb24o
KQogCiBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9u
SUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8m
IGJsb2JSZWdpc3RyeSA9IHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpOworCiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlczsKICAgICBpZiAoYXV0
byogYm9keSA9IHBhcmFtZXRlcnMucmVxdWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGJvZHktPmVsZW1lbnRzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBibG9iRGF0YSA9IFdURjo6Z2V0X2lmPEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRh
PihlbGVtZW50LmRhdGEpKQotICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZlY3RvcihtX25l
dHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IoKnRoaXMsIGJs
b2JEYXRhLT51cmwpKTsKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmRWZWN0b3IoYmxvYlJl
Z2lzdHJ5LmZpbGVzSW5CbG9iKGJsb2JEYXRhLT51cmwpKTsKICAgICAgICAgfQotICAgICAgICBj
b25zdF9jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCY+KHBhcmFtZXRlcnMucmVxdWVzdCku
c2V0SFRUUEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSkpOworICAgICAgICBjb25zdF9j
YXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCY+KHBhcmFtZXRlcnMucmVxdWVzdCkuc2V0SFRU
UEJvZHkoYm9keS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCZibG9iUmVnaXN0cnkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gZmlsZXM7CkBAIC01NjgsNjcgKzU3Myw4OSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdAogICAgIHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25J
RCkuZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAg
ICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCgqdGhpcywgdXJsLCBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShl
eHRlbnNpb25IYW5kbGUpKSwgY29udGVudFR5cGUpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShleHRlbnNp
b25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBh
cnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29y
a0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVy
bCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsLCBzcmNVUkwsIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25D
aGVjayk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAg
IHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCgqdGhpcywgdXJsLCBz
cmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBu
dWxscHRyKSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgZW5kKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSgqdGhpcywgdXJsLCBzcmNVUkwsIHN0YXJ0
LCBlbmQpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3Ry
eSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUoKnRo
aXMsIHVybCkpOworICAgIGF1dG8qIGJsb2JSZWdpc3RyeSA9IG5ldHdvcmtQcm9jZXNzKCkuYmxv
YlJlZ2lzdHJ5KCp0aGlzKTsKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29tcGxldGlvbkhhbmRsZXIoYmxvYlJlZ2lzdHJ5LT5ibG9iU2l6ZSh1cmwpKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwog
ICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZVJlZmVyZW5jZXM7
CiAgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykKLSAgICAgICAgZmlsZVJlZmVyZW5jZXMu
YXBwZW5kVmVjdG9yKG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxl
c0luQmxvYigqdGhpcywgeyB7IH0sIHVybCB9KSk7CisgICAgICAgIGZpbGVSZWZlcmVuY2VzLmFw
cGVuZFZlY3RvcihzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYih7IHsgfSwgdXJs
IH0pKTsKIAogICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICBm
aWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCi0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya0Jsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBb
ZmlsZVJlZmVyZW5jZXMgPSBXVEZNb3ZlKGZpbGVSZWZlcmVuY2VzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGZpbGVOYW1lcykgbXV0YWJs
ZSB7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFtmaWxlUmVmZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZmls
ZU5hbWVzKSBtdXRhYmxlIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5j
ZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZU5hbWVzKSk7CiAgICAgfSk7CiB9CiAKLVZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiBt
X25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IoKnRoaXMs
IHVybCk7Ci19Ci0KLVdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpibG9iUmVnaXN0cnkoKQotewotICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCk7Ci19Ci0KIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzRW5hYmxlZCA9IGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
ZDdiMmYxYjYzYmM3YjA0ZmUwMzBlMDM2NWUyMTM2Zjc1YWI0OGNlNi4uOGZlOWYzMmM5ZWZjNjJm
ZDNjNTNlMGIxMmMyZGQ1ZDJjNDVkZTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MTM4LDggKzEzOCw2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQo
UmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OjpDb21wbGV0aW9uQ29kZSk7CiAKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9i
UmVnaXN0cnkoKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGNvbnN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJik7CiAKICAgICB2b2lkIHdlYlBhZ2VXYXNBZGRl
ZChQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG9sZFBhZ2VJRCk7CkBAIC0xODMsMTQgKzE4MSwxNCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQp
OwogICAgIHZvaWQgYmxvYlNpemUoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7Ci0g
ICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwor
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpOwor
ICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7CiAKICAgICB2b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGZhMmMzMWE0MTNhZjYyMTk0OTNjZDRjZWEyYmM3YzRhZmE5MjA1OTAuLjFl
NzdjOGFiOTg0NDlmZjA0ZWZhYjc5MzA1ZDUxMzhkZWJkODVkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDEsMTQgKzQxLDE0IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBH
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0
cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAg
ICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5n
IGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBw
YXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0
cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdp
c3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKQotICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRl
bnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFVSTCB1cmwsIFVSTCBzcmNVUkws
IGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQotICAgIFVucmVnaXN0ZXJCbG9iVVJMKFVSTCB1
cmwpCisgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+
IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMKQorICAgIFJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29u
dGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
KyAgICBVbnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwp
CiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIFN5bmNocm9u
b3VzCi0gICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmluZz4gYmxvYlVS
THMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFzeW5jCisgICAgV3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBi
bG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKIAogICAgIFNldENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDlj
YjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcuLmE5OGY3MGZhOTlhNTY1MDFj
N2MxZGFmNTI5YWVlYjA3MDlkMmM2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MTIsNiArNjEyLDEzIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
CiAgICAgbV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAorQmxv
YlJlZ2lzdHJ5SW1wbCogTmV0d29ya1Byb2Nlc3M6OmJsb2JSZWdpc3RyeShOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKK3sKKyAgICAvLyBGSVhNRTogRGVwcmVjYXRl
IHRoaXMgbWV0aG9kIGFuZCB1c2Ugc2Vzc2lvbklEIC0+IE5ldHdvcmtTZXNzaW9uIC0+IGJsb2Ig
cmVnaXN0cnkuCisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uQnlDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKKyAgICByZXR1cm4gc2Vzc2lvbiA/ICZzZXNzaW9u
LT5ibG9iUmVnaXN0cnkoKSA6IG51bGxwdHI7Cit9CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZmI3YTZjZDM2ZWE5ZjM1OTRhN2ZiOWRlODU1
MzUzMjNmYTgyMTcwOC4uOTQ4NjkwNDY1YWExNjQwYjlhYWVlYWVmYThiMmU0NGJjNjUyZDM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJEb3dubG9h
ZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKLSNp
bmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTMyNyw3ICszMjYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVDYWNoZUVuZ2luZShjb25zdCBQQUw6OlNlc3Npb25JRCYpOwog
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1
aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVp
bnQ2NF90Pik+JiYpOwogCi0gICAgTmV0d29ya0Jsb2JSZWdpc3RyeSYgbmV0d29ya0Jsb2JSZWdp
c3RyeSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbmV0d29ya0Jsb2JSZWdpc3RyeTsgfQorICAgIFdl
YkNvcmU6OkJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOwogCiAgICAgdm9pZCBzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQgZHVtcEFk
Q2xpY2tBdHRyaWJ1dGlvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcpPiYmKTsKQEAgLTQ5OCw3ICs0OTcsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4+IG1fbmV0d29ya1Nl
c3Npb25zOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBtX25ldHdvcmtTdG9yYWdlU2Vzc2lvbnM7CiAg
ICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb247Ci0gICAgTmV0d29ya0Jsb2JSZWdpc3Ry
eSBtX25ldHdvcmtCbG9iUmVnaXN0cnk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZjIzNGUyOTQxZDNlMWU1MTZlYTM4YjZkZjZlYzUzZWMyMGE3NTAxNy4uMGM4NDZkYjAy
NDJmM2E3NTEzZTZjM2IxMTFlYWFjMWQ4ODYwZWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTUyLDE1ICs1MiwxNCBAQCBCbG9iUmVnaXN0cnkqIE5ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNzIEVtcHR5QmxvYlJlZ2lzdHJ5IDogcHVibGlj
IFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
ICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBS
ZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
ICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBWZWN0
b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9Ci0gICAgICAgIGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIH07CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5
QmxvYlJlZ2lzdHJ5PiBibG9iUmVnaXN0cnk7CiAgICAgcmV0dXJuICZibG9iUmVnaXN0cnkuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggM2RiZjQ3YWIyNGYxZmQ3ZGRlNDU4YWYwNzllMDBlOGE1OWUw
OTUwMC4uNTU3ZmI2ZGIxYWZlOTRhN2ZjYjgxYWRkMzU5ZjExNTRiNGJlZWM0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMzAwLDkgKzMwMCw2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgaWYg
KHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSAmJiBtX25ldHdvcmtMb2FkQ2hlY2tlcikKICAgICAgICAgcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fbmV0d29ya0xvYWRDaGVja2VyLT5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSgpOwogCi0gICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0Jsb2IoKSkKLSAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBtX2Nv
bm5lY3Rpb24tPmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKLQogICAgIGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKICAgICBpZiAoIW5ldHdvcmtTZXNzaW9u
ICYmIHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhwYXJhbWV0ZXJzLnNlc3Np
b25JRCkpOwpAQCAtMzE2LDggKzMxMywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Js
b2IoKSkKKyAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vz
c2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkp
OworCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25l
dHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5l
Y3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Np
b24pOworICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigq
dGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCBjMmJmNDNkMjRlMDkxZmY3NmQ5ZGI4YjcwYTE2YWUzZmExN2IyZDUw
Li5jNGUxMDJlNzc1MjdlZWMxZmFmNTFlN2IwNGUwZTk1Nzk0NjY3YTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTE0LDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYpIHsgfQogCisgICAg
V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9ibG9i
UmVnaXN0cnk7IH0KKwogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtMTQz
LDYgKzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNl
IH07CiAjZW5kaWYKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKKyAg
ICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggODdlODViNTVlOTFlYzY5NmFj
MTViMWM1ZjFhMTEzNTFhM2UyNmFiNy4uZDQ2YzUwM2Q4MWU5ODM0ZTVkMmEyNTY2MGM4NzIzZWFl
N2UxNzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6Y3JlYXRlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQogCiAgICAgdW5zaWduZWQgbWVzc2FnZUZsYWdzID0gU09VUF9NRVNTQUdFX05PX1JFRElSRUNU
OwogCi0gICAgbV9jdXJyZW50UmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5n
ZXQoKSk7CisgICAgbV9jdXJyZW50UmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2Fn
ZS5nZXQoKSwgbV9zZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKG1fc2hvdWxkQ29u
dGVudFNuaWZmID09IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQpCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9kaXNhYmxlX2ZlYXR1cmUoc291cE1lc3NhZ2UuZ2V0KCksIFNP
VVBfVFlQRV9DT05URU5UX1NOSUZGRVIpOwogICAgIGlmIChtX3VzZXIuaXNFbXB0eSgpICYmIG1f
cGFzc3dvcmQuaXNFbXB0eSgpICYmIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCmluZGV4IDczNTUy
NTdiZWRhMWU1YWRjZGU1NTRlNmJkMzNiY2U5ZTJmNjBkMGQuLjMwZmM4YTUzNTVkMDg0NTJhYzM2
MWIxZGNlYTk3Yzg0ZjM2MDdmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBHUmVmUHRyPFNvdXBNZXNzYWdlPiBzb3VwTWVzc2FnZSA9IGFkb3B0R1JlZihzb3VwX21lc3Nh
Z2VfbmV3X2Zyb21fdXJpKFNPVVBfTUVUSE9EX0dFVCwgc291cFVSSS5nZXQoKSkpOwotICAgIHJl
cXVlc3QudXBkYXRlU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCkpOworICAgIHJlcXVlc3Qu
dXBkYXRlU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIGJsb2JSZWdpc3RyeSgpKTsKICAg
ICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChzb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdl
YlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwogICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCks
IHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1YjRmZjY5YzU0
ZjUwMjdhYzllNDRkOTA1ODAxZGIzYmY5YWRhZjIzLi5hZWI1ODk4ZTRlNDAyMjdhOTM2Zjc1OGI0
MDIxZjgzNzk4NDVjNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU3LDggKzU3LDYgQEAgTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTW9uaXRvci5jcHAKIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuY3BwCiAKLU5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHAKLQogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAKIAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGUxNjY0MDYwY2E5MzdiNzg3M2IzZTRlNGUwYmY0NmRlN2YxZjg3Zjgu
LjVkNTZhMmExNzk4ZWQxYTNiZDk0OTlmYThlMDk1YWU0NmM5Y2JhMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMxNiw3ICsxMzE2
LDYgQEAKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkz
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwMkE3MDgxRUMwRUVFOTAwRDgx
RDgyIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIGluIENvcHkg
UGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5
ZXIgRVNSLnBsdWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdL
UERGVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9OwotCQlBMTA1RDBE
MTIxMjczNEIyMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNUQwRDAyMTI3MzRCMTAwMzRGNkM3
IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJQTExNURDNzIxOTFEODJEQTAwREE4
MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dl
YlZpZXdQcmludEZvcm1hdHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLzsg
fTsKIAkJQTExOEE5RjMxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUYx
MTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5ODUsNyArMzk4NCw2IEBA
CiAJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMuaDsgcGF0
aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tQREZWaWV3Lmg7IHBhdGggPSBpb3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2Qzcg
LyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkxRDgyQUIw
MERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tM
b29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYxOSw3ICs0NjE3LDYgQEAKIAkJRTE2
NEEyRjAxOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JEYXRhRmls
ZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxNzA4NzY5MTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCbG9iUmVnaXN0cnlQcm94eS5j
cHA7IHBhdGggPSBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTcwODc2QTE2RDZDQTY5MDBGOTkyMjYgLyogQmxv
YlJlZ2lzdHJ5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQmxvYlJl
Z2lzdHJ5UHJveHkuaDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTc5OEM3NzE2RTY4MTg4MDAyNDAx
MzkgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTE3QUUyQzExNkI5QzEzOTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0
d29ya1Byb2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5z
Yi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3QUUyQzIxNkI5QzYzQTAwMUM0
MkYxIC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYjsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTE4QzkyRjMxMkRCOUU3MTAwQ0Yy
QUVCIC8qIFByaW50SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcmludEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjY2NCw3ICs2
NjYxLDYgQEAKIAkJCQk1QzE0MjZGMjFDMjNGODJEMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xz
ICovLAogCQkJCTVDMTQyNkYxMUMyM0Y4MTcwMEQ0MTE4MyAvKiBEb3dubG9hZHMgKi8sCiAJCQkJ
QkM4MjgzN0MxNkI0NURBNTAwQTI3OEZFIC8qIEVudHJ5UG9pbnQgKi8sCi0JCQkJRTE3OThDNzYx
NkU2ODE1NTAwMjQwMTM5IC8qIEZpbGVBUEkgKi8sCiAJCQkJOTM5Mjg4RTAyMTQwNERGMDAwRUJC
QTMzIC8qIEluZGV4ZWREQiAqLywKIAkJCQkyREE5NDRCQjE4ODUxMUREMDBFRDg2REIgLyogaW9z
ICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCkBAIC05MDI0LDE1
ICs5MDIwLDYgQEAKIAkJCW5hbWUgPSBGaWxlQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKLQkJRTE3OThDNzYxNkU2ODE1NTAwMjQwMTM5IC8qIEZpbGVBUEkgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxNzk4Qzc3MTZFNjgxODgw
MDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLywKLQkJCQlBMTA1RDBEMDIxMjcz
NEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovLAotCQkJKTsKLQkJCXBhdGgg
PSBGaWxlQVBJOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRTE5OTg3NUIx
NDJCRjlDRjAwQkIyREU3IC8qIFBERiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC05NDgwLDcgKzk0NjcsNiBAQAogCQkJCTFBNEE5QzU2MTJCODE2Q0YwMDhG
RTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTg4
OTIxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MzVCQ0I5MjIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3IC8qIE5ldHdv
cmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2RUNDMUEwRDA0MEIwMEVB
RDIwNCAvKiBOZXR3b3JrQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OUQ0MEQ3MUFEM0ZC
MTcwMDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ4OUQyOEMxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVycy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggMjRlMzU1OWNmZjA2OWJkMzE3OTFlZTY1MTc4ZWFm
NGU0ZGMwZTQ3ZC4uMmYzYjZiYTgzMTQ3ODQ1ZTY4NjJjNGY5MDM5N2QyNTFjNjViMTdmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsK
IApAQCAtNDQsMzcgKzQ0LDMzIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlCiAgICAgaWYgKCFm
aWxlLT5wYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgZXh0
ZW5zaW9uSGFuZGxlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBh
dGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJG
aWxlQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUs
IGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxvYlBhcnRzLCBjb250ZW50VHlwZSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBl
KSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0gICAgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hl
Y2sgPSBmYWxzZTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOwotI2VuZGlmCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgdXJsLCBzcmNVUkws
IHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVS
TEZyb21VUkwgeyBzZXNzaW9uSUQsIHVybCwgc3JjVVJMIH0sIDApOwogfQogCi12b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgQVNTRVJUKGZpbGUpOwotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5
cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Np
b25JRCwgdXJsLCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAot
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwp
Cit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwo
dXJsKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCksIDApOwog
fQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0
IFVSTCYgdXJsKQpAQCAtODUsOSArODEsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lz
dHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiByZXN1bHRTaXpl
OwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoc2Vz
c2lvbklELCBibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuaAppbmRleCA2YWJlZTM2NzQ4ZGZlY2MyY2FkNDZjY2MyMjJhNzRjNTE3NmQ4OWQ0Li5kNzY2
MTU4N2UzZTc0MzgzMmUyMzI1YzY3OTZjZmEzNDViYjk1NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDE0
ICszMSwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25z
dCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShj
b25zdCBVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmlu
YWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxG
b3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWw7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYp
IGZpbmFsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggZDlhZGNjMjFh
OGE5NmIyYWE1NDUzNjZkZTA5NWQwNDdjNjI1N2VkZi4uYWZkNzQ3YTViOTkxODU3MDMwODNmYWM1
NzBmYzQ4YjRlNWNiZWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTEsOSAr
MjExLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlMKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
IGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoc2Vzc2lvbklELCBibG9iVVJMcyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZEZp
bmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYm
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDBjZGU1OTliMWUwNDlkODgzMTNhMGQwMzA1ZjgwMmFmNTI3OWRjZDkuLjYyNmRhYjEx
YjJkZjI5OTRjYWRiYTc3M2Y5MjUxMDhmMWM1NzliNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpOwogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAgICAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyKiBleGlzdGluZ0lE
QkNvbm5lY3Rpb25Ub1NlcnZlckZvcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcikgY29u
c3QgeyByZXR1cm4gbV93ZWJJREJDb25uZWN0aW9uc0J5SWRlbnRpZmllci5nZXQoaWRlbnRpZmll
cik7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMDhhOTAyNjIwYzY2YjNj
ZmVjN2UxMDRhMDM0OGUzZjI2NDMxNDRjYy4uN2IzMWFiMGIwYWNiYjFmYzgwODY2ZTZmODMxODcz
NDJjNmJkYzUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtNjIsOSArNjIs
MjUgQEAgUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBh
c3RlYm9hcmRTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK2NsYXNzIFdlYkJsb2JS
ZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgeworcHJpdmF0ZToK
KyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFy
dD4mJiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdp
c3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9
CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JV
UkwodXJsLCBzcmNVUkwpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50
VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51
bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6ZSh1
cmwpOyB9CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwg
eyBtX2Jsb2JSZWdpc3RyeS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOyB9CisKKyAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9i
UmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CisKKyAgICBC
bG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OworfTsKKwogQmxvYlJlZ2lzdHJ5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgcmV0dXJuIG5l
dyBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOworICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lz
dHJ5OwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376069</attachid>
            <date>2019-08-12 09:29:52 -0700</date>
            <delta_ts>2019-08-13 00:38:53 -0700</delta_ts>
            <desc>Win fix</desc>
            <filename>bug-200567-20190812182938.patch</filename>
            <type>text/plain</type>
            <size>96229</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2NWNlZmM2N2EzZjAy
YmE5OGJhZWU2ZjIxNjcyNzFmZjIwNGM5MC4uNTBlZGY0YTc3YjcxY2RmZmM2MmIyMDc2M2Q3M2Rm
NTc4NzllZTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3Mgc2Vzc2lvbiBJRHMgdG8gYWxsIEJsb2JSZWdpc3RyeSBtZXRob2RzIGluIHBhcnRpY3Vs
YXIgVGhyZWFkYWJsZUxvYWRlclJlZ2lzdHJ5LgorICAgICAgICBUaGUgb25seSBleGNlcHRpb24g
aXMgYmxvYlNpemUgd2hpY2ggc2hvdWxkIGJlIGRlYWx0IHdpdGggYSBmb2xsb3ctdXAgcGF0Y2gu
CisgICAgICAgIGJsb2JTaXplIGJsb2IgcmVnaXN0cnkgaXMgcmV0cmlldmVkIGZyb20gdGhlIGNv
bm5lY3Rpb24gLT4gc2Vzc2lvbklEIG1hcCBpbiBOZXR3b3JrIFByb2Nlc3MuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6fkZpbGVSZWFkZXJMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Lmg6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQmxvYlJlc291
cmNlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmZpbGVzSW5CbG9iIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEJsb2JSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZSBjb25zdCk6
CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBJREJWYWx1ZTo6bV9zZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjU0YzkxMDc3NTFj
ZTQ2MjI0ZDY4NDJiYTEzMzhiYzAwZjE2MzQ0NS4uNDY0MjhjY2JkMzY0Y2U2MzllZjljNjQ0NmY2
YjRjOTkzZGEwNzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxOS0wOC0xMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVz
IHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NDEyMDIxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIGJsb2IgcmVnaXN0cnkgdG8gTmV0d29ya1Nlc3Npb24gc28gdGhhdCBpdCBpcyBwYXJ0
aXRpb25lZCBieSBzZXNzaW9uIElELgorICAgICAgICBJbiBjYXNlIHNlc3Npb24gSUQgaXMgbm90
IGdpdmVuIHRocm91Z2ggSVBDLCB1c2UgdGhlIGNvbm5lY3Rpb24gYXMga2V5IHRvIGdldCB0aGUg
bmV0d29yayBzZXNzaW9uLgorICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIGJsb2JTaXplLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZy
b21VUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
ckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpjcmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6
Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAg
ICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggN2YwZWY1MGQzNTQzODFlYTU4ZDUwZjdhYzMyN2IyZWQ3
MWM5NzRlZC4uOTYyYTM4ZmE1NjNjMzZkNTk5Yjg2OWRhMDRlMmNkYmVjZmNjMzAzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lz
dHJ5KToKKyAgICAgICAgSWdub3JlIHNlc3Npb25JRCBwYXJhbWV0ZXIgZm9yIFdLMS4KKwogMjAx
OS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGY1
MWUwNDQyZTU2YmY3MjNhMDFiMzBkZTg4ZmJjODE1ODMxODQ0MDkuLjdhZjliZTkzOGMxMDM0M2Y4
M2Q3YTgxM2I4MzQ3MGU4OTRjZGQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9u
IElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
NTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDEyMDIxMj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUJsb2JSZWdpc3RyeSk6CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggYzBkYmY1ZmU1NzhmMWY1
OWI2ZjRjMWIwN2FiYzAxZTdkMjUxZDc3OS4uZDhkYjkwY2NiMTQ0OTQ2MGUyODczODFmZGY3NGIz
YTJiMjAyOWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmV0Y2hMb2FkZXI6
On5GZXRjaExvYWRlcigpCiB7CiAgICAgaWYgKCFtX3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQot
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZv
clJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTCgqbV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmV0Y2hMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJs
b2IpCkBAIC02NCw3ICs2NCw4IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JV
UkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwoY29udGV4dC5zZWN1cml0eU9yaWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwor
ICAgIG1fc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQoKTsKKyAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoKm1fc2Vzc2lvbklELCBjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYlVSTCk7CiAKICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9ySWRl
bnRpZmllcihjb250ZXh0LnJlc291cmNlUmVxdWVzdElkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNDAxMWIzNzM4Yzk3OWJiOTc4
YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZi4uYjZjNjUwOGNhMzc2M2UzMTMzZDRhM2RiZDQxMTk4YWNh
NTg0ZTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApA
QCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1
bWVyOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogICAgIFVSTCBtX3VybEZvclJl
YWRpbmc7CisgICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbklEOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZh
YmZmYTNlMWMyZjY3ZGVlNDgxOS4uMTE0ZmYzYzhhNWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2
ZTdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCkBAIC0zNTY5LDEzICszNTY5LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYlVSTHNJc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2Jz
VG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElEQlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JV
UkxzKCkpOwogCi0gICAgLy8gRklYTUU6IEdldCB0aGUgcmlnaHQgYmxvYiByZWdpc3RyeSBmcm9t
IHRoZSBnaXZlbiBzZXNzaW9uSUQuCi0gICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1
dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsKKyAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZpbGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNF
bXB0eSgpKSB7CkBAIC0zNTg2LDcgKzM1ODUsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25JRCwgQ29tcGxldAog
ICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG1fYmxvYlVSTHMuc2l6ZSgpID09IGJsb2JGaWxl
UGF0aHMuc2l6ZSgpKTsKLSAgICAgICAgCisKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyAq
dGhpcywgbV9ibG9iVVJMcywgYmxvYkZpbGVQYXRocyB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwCmluZGV4IDQ2NGMxMzcyYjBmMzc3Nzc1MWNhZDMzOWJhMmVkN2FhNTQ2ZDg0
YmIuLjhkYWEwYzExYzZmZDkyMTM5NmZkNTc4MTM5YzdiYzAzN2RmYzVkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHB1YmxpYzoKIHZvaWQgQmxvYlVSTFJl
Z2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUmIGJsb2IpCiB7CiAgICAgQVNTRVJUKCZi
bG9iLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNf
Y2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCBjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKIH0KIAotdm9p
ZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKKyAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1
cmwpOwogfQogCiBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC04
Miw3ICs4Miw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICwg
bV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFs
VVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50
ZXJuYWxVUkwsIHsgfSwgIHsgfSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCiBC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFu
dD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQpAQCAtMTAwLDcgKzEwMCw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsCiAgICAgICAgICk7
CiAgICAgfQogCi0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkws
IGJ1aWxkZXIuZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQpAQCAtMTE0LDcgKzExNCw3IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChC
bG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwor
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwg
bV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJs
b2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTI1LDcgKzEyNSw3IEBAIEJsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGNvbnRlCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxv
YlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVS
TCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwg
Y29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50
VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgY29uc3QgQmxvYiYgYmxvYikKQEAgLTEzNCw3ICsxMzQsNyBAQCBCbG9iOjpCbG9iKFJlZmVy
ZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImIGJsb2IpCiAgICAgLCBt
X3R5cGUoYmxvYi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkpCiB7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHsgQmxv
YlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0
KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlv
bkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJh
Y2tlZFBhdGgpCkBAIC0xNDQsOSArMTQ0LDkgQEAgQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVIKIHsK
ICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBp
ZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKKyAg
ICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklE
LCBudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOwogICAgIGVsc2UKLSAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
bV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKKyAgICAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1f
dHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcm
IHR5cGUpCkBAIC0xNTUsMTIgKzE1NSwxMiBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsbwogICAg
ICwgbV9zaXplKC0xKSAvLyBzaXplIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBz
dGFydC4KIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwo
KTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSht
X2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJM
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCiBCbG9iOjp+QmxvYigpCiB7Ci0gICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCk7CisgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1f
aW50ZXJuYWxVUkwpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYjo6c2l6ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBlYjViNmExNzY3OGEzNGRhM2MwYzZhZWI5Zjhj
NWJlZjRlZDBhZjIwLi5iM2U4MWM4YjhhNDIyYWQxZTY5ZWExZTkyNjI3MWQ5ODc0MTBhNmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgRmlsZTo6RmlsZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBtX2ludGVybmFs
VVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBtX3NpemUgPSAtMTsKICAg
ICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKG1fcGF0aCwgU3RyaW5nKCksIG1fbmFtZSwgbV90
eXBlKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlw
ZSk7CiB9CiAKIEZpbGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQpAQCAtNjMsNyArNjMsNyBAQCBG
aWxlOjpGaWxlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycgogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwogICAgIG1fc2l6ZSA9IC0xOwogICAgIGNvbXB1dGVOYW1lQW5kQ29u
dGVudFR5cGUobV9wYXRoLCBuYW1lT3ZlcnJpZGUsIG1fbmFtZSwgbV90eXBlKTsKLSAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKG1faW50ZXJuYWxVUkwsIHBh
dGgsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChzZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHBhdGgsIG1fdHlwZSk7CiB9CiAKIEZpbGU6
OkZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmll
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDg5
NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1YTcuLjRkY2QwZGQwYzA5YzdmMGMw
ZTg3NDZhZDgwMTM2NmQ4Y2FlNjk4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBGaWxlUmVhZGVyTG9hZGVyOjp+Rmls
ZVJlYWRlckxvYWRlcigpCiB7CiAgICAgdGVybWluYXRlKCk7CiAgICAgaWYgKCFtX3VybEZvclJl
YWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIG1fdXJsRm9yUmVhZGluZyk7CiB9
CiAKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiYgYmxvYikKQEAgLTgxLDcgKzgxLDggQEAgdm9p
ZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBCbG8KICAgICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlf
RVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKKyAgICBtX3Nlc3Npb25JRCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNlc3Npb25JRCgpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYi51cmwoKSk7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QobV91cmxGb3JSZWFkaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKaW5kZXggN2E0MjhiZTUwNTdkMmJjNmFjNDFjZTkyOThiMjU0ZmM1YTI5ZTAwYS4u
NDE5YjIwOTNjN2Q3OTBiZjIxNTNkYTJiY2QyOTE1NGRkYjYwZDQwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0x
MDIsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kYXRhVHlwZTsKIAogICAgIFVS
TCBtX3VybEZvclJlYWRpbmc7CisgICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lv
bklEOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKIAogICAgIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA1YmM5YmFmNzgyNzk2YmE0MzNk
N2U4MjljMTBhZjY3NzE3YWE0MzkwLi5hOTViMjQ5ZjhjODQyM2ZkNzQ1YmMyYWM5N2IyN2JjMDRh
YTNhNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKQEAgLTY0LDEwOSArNjQsOTcgQEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJs
b2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQogCi1zdGF0
aWMgdm9pZCBwb3N0VG9NYWluVGhyZWFkKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCit2b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
LSAgICBzdGF0aWMgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+KiBxdWV1ZTsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBxdWV1ZSA9IG5ldyBDcm9z
c1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz47Ci0gICAgfSk7Ci0KLSAgICBxdWV1ZS0+YXBw
ZW5kKFdURk1vdmUodGFzaykpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbXSB7Ci0gICAgICAgIGF1dG8gdGFz
ayA9IHF1ZXVlLT50cnlHZXRNZXNzYWdlKCk7Ci0gICAgICAgIEFTU0VSVCh0YXNrKTsKLSAgICAg
ICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQs
IHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNv
bnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIAotdm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0g
ICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRl
bnRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJs
Lmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUg
PSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KHBhdGgpLCBjb250ZW50VHlwZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotdm9pZCBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byYgcGFydCA6
IGJsb2JQYXJ0cykKLSAgICAgICAgICAgIHBhcnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBibG9i
UGFydHMgPSBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNv
bGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAgICAg
ICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250
ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgZm9yIChhdXRvJiBwYXJ0IDog
YmxvYlBhcnRzKQorICAgICAgICBwYXJ0LmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJs
b2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBl
KTsKKyAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgLy8gSWYgdGhlIGJsb2IgVVJMIGNvbnRh
aW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29udGV4dCB3aXRoIHVuaXF1ZSBzZWN1cml0eSBv
cmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1hcHBpbmcgYmV0d2VlbiB1cmwgYW5kIG9yaWdp
biBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJldHJpdmVkIHdoZW4gZG9pbmcgc2VjdXJpdHkg
b3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4gJiYgQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkg
PT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+YWRkKHVybC5zdHJpbmcoKSwgb3JpZ2lu
KTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0
ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1
cmwsIHNyY1VSTCk7Ci0gICAgICAgIH0pOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIHNyY1VS
TCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9u
SUQsIHVybCwgc3JjVVJMKTsKKyAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIGlmIChpc01haW5UaHJlYWQo
KSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNr
ZWRQYXRoKSwgY29udGVudFR5cGUpOwotICAgIGVsc2UKLSAgICAgICAgcG9zdFRvTWFpblRocmVh
ZChjcmVhdGVDcm9zc1RocmVhZFRhc2soVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQsIHVybCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwg
Y29udGVudFR5cGUpKTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1
cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgp
LCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbE9uTWFpblRo
cmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VS
TC5pc29sYXRlZENvcHkoKSwgZmlsZUJhY2tlZFBhdGggPSBmaWxlQmFja2VkUGF0aC5pc29sYXRl
ZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChz
ZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxl
QmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIG5ld1VSTCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKK3ZvaWQg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkp
Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwg
c3JjVVJMLCBzdGFydCwgZW5kKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbbmV3VVJMID0gbmV3VVJMLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0
ZWRDb3B5KCksIHN0YXJ0LCBlbmRdIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKLSAgICAgICAg
fSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBl
bmQpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vz
c2lvbklELCBuZXdVUkwgPSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5p
c29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5k
KTsKKyAgICB9KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXN1bHRTaXplOwogICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGJsb2JS
ZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0
U2l6ZTsKKyAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsK
ICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgJnNlbWFwaG9yZSwgJnJlc3Vs
dFNpemVdIHsKLSAgICAgICAgICAgIHJlc3VsdFNpemUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6
ZSh1cmwpOwotICAgICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICB9KTsKLSAg
ICAgICAgc2VtYXBob3JlLndhaXQoKTsKLSAgICB9CisgICAgICAgIHNlbWFwaG9yZS5zaWduYWwo
KTsKKyAgICB9KTsKKyAgICBzZW1hcGhvcmUud2FpdCgpOwogICAgIHJldHVybiByZXN1bHRTaXpl
OwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
IChCbG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAibnVsbCIpCiAgICAgICAgIG9yaWdpbk1hcCgp
LT5yZW1vdmUodXJsLnN0cmluZygpKTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAg
ICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICB9
KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5y
ZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpOworICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgp
XSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwg
dXJsKTsKKyAgICB9KTsKIH0KIAogUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGE5Yzc5ZmUyMjky
Zjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIuLjMxNWY1Y2FkYjQ2NjM4OTgwYjRjMWZkOGVj
NWI2N2RiZTNlNDEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5oCkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwotICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCk7Ci0gICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0
IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpOworICAgIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKTsKIAog
ICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IGQ1YjliZWRiYWQwNDcw
NDYxYTU4YWI1Y2IwMTRhNjhjMDQ3ZDdmYjAuLjdiZWJjN2ExMGNjYmVkNTNjZmU4Y2FmOGEwN2M3
OGU2YzU3OWQ2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApA
QCAtMjYsOCArMjYsOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHVibGlj
VVJMTWFuYWdlci5oIgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKwogI2luY2x1ZGUgIlVSTFJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwCmluZGV4IDhiOTFlMWMzMjRkNzhlNzE1ZThkZTdmNzc4ZjQzOGJjY2RjYThjY2Uu
LjUzNjM3MDNiOGNiNDNjMmJkOTMwMGZiNjVhOTc0NGY0ODVkZGVlNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTEwNiwxMCArMTA2LDExIEBAIENvbXBsZXRp
b25IYW5kbGVyQ2FsbGluZ1Njb3BlIFBvbGljeUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGlt
ZUlmTmVjZXNzYXJ5KFJlCiAKICAgICAvLyBDcmVhdGUgYSBuZXcgdGVtcG9yYXJ5IGJsb2JVUkwg
aW4gY2FzZSB0aGlzIG9uZSBnZXRzIHJldm9rZWQgZHVyaW5nIHRoZSBhc3luY2hyb25vdXMgbmF2
aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCiAgICAgVVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSk7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHRlbXBvcmFyeUJsb2JVUkws
IHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8gc2Vzc2lvbklEID0gbV9mcmFtZS5kb2N1bWVudCgp
LT5zZXNzaW9uSUQoKTsKKyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lv
bklELCB0ZW1wb3JhcnlCbG9iVVJMLCByZXF1ZXN0LnVybCgpKTsKICAgICByZXF1ZXN0LnNldFVS
TCh0ZW1wb3JhcnlCbG9iVVJMKTsKLSAgICByZXR1cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PihbdGVtcG9yYXJ5QmxvYlVSTCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCldIHsKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCk7Cisg
ICAgcmV0dXJuIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4oW3Nlc3Npb25JRCwgdGVtcG9yYXJ5
QmxvYlVSTCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCldIHsKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5LmgKaW5kZXggMmU4OTNiZGNjODhhMzFmYzllYjRhOWYzNGM5ZGQ3OGI2OWM0OGNmZC4uNjYw
YTc5NmQwYjJkODk4NjI1MWI4MDZkMzkxM2JmOTE0NTRlOWU3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC0zMSw2ICszMSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxv
YlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogCiBX
RUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpOwogCkBAIC00NiwyNyAr
NDgsMjcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKIAog
ICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGZp
bGUuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVm
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcg
dG8gdGhlIHNwZWNpZmllZCBibG9iIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpID0gMDsKICAgICAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJy
aW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAogICAgIC8vIFJlZ2lz
dGVycyBhIG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVk
IGJ5IHRoZSBzcGVjaWZpZWQgc3JjVVJMIG9yLCBpZiBub25lIGZvdW5kLCByZWZlcnJpbmcgdG8g
dGhlIGZpbGUgZm91bmQgYXQgdGhlIGdpdmVuIHBhdGguCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgPSAwOwogCiAgICAgLy8gTmVnYXRpdmUgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgc2VsZWN0IGZy
b20gdGhlIGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpID0gMDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmlu
ZGV4IDEyOTA5NWI0NDZhNDRmMjgwM2VhMTAxOGMyNmRiNzUxODUyNzAxYTUuLjViMjJiZDE2OGMz
ZWE1M2E5MmNhNGFlODk0NDJlOWI5MTE0NDg1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNTQsMTIgKzU0LDEy
IEBAIEJsb2JSZWdpc3RyeUltcGw6On5CbG9iUmVnaXN0cnlJbXBsKCkgPSBkZWZhdWx0OwogCiBz
dGF0aWMgUmVmPFJlc291cmNlSGFuZGxlPiBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5
KCkpLmNyZWF0ZVJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudCk7CisgICAgcmV0dXJuIGJs
b2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKS0+Y3JlYXRlUmVzb3VyY2VIYW5kbGUocmVx
dWVzdCwgY2xpZW50KTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9u
b3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBCbG9iRGF0YSog
YmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkp
LmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBhdXRvKiBibG9iRGF0YSA9
IGJsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHJl
cXVlc3QudXJsKCkpOwogICAgIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShibG9iRGF0YSwgcmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIApA
QCAtMzQzLDQgKzM0MywxOSBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdAogICAgIH0pOwogfQog
CitWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IEJsb2JSZWdpc3RyeUltcGw6
OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIGF1dG8qIGJsb2JEYXRh
ID0gZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CisgICAgaWYgKCFibG9iRGF0YSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
cmVzdWx0OworICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0
ZW1zKCkpIHsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6
RmlsZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKCkpOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXgg
ZTE1MWQzYWZiMDY2ZGJmNWI1ZWU4ZmVkN2Q4YWY2ODYyZTA4YmU4Ni4uZGI5ZDZkZjcwYjc4ZDE1
MzU0OTcwMjM2Yzc1ZDEwZjM0NjllODg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXI7CiAKIC8vIEJsb2JS
ZWdpc3RyeUltcGwgaXMgbm90IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQg
ZnJvbSBtYWluIHRocmVhZC4KLWNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwg
ZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JS
ZWdpc3RyeUltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkJsb2JSZWdpc3RyeUltcGwoKTsKQEAgLTU4LDE3ICs1OCwxNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iRGF0YSosIGNvbnN0IEJsb2JEYXRh
SXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKIAotICAgIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBS
ZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJy
aWRlOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7
CiAKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CiAKICAgICBzdHJ1Y3QgQmxvYkZvckZp
bGVXcml0aW5nIHsKICAgICAgICAgU3RyaW5nIGJsb2JVUkw7CkBAIC03Niw2ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgYm9vbCBwb3B1bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiYp
OworICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2Io
Y29uc3QgVVJMJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxCbG9iRGF0YT4+IG1fYmxvYnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCmluZGV4IGQ2ZjI5MTYxYTQ3ZGI1NGY0ZDRmYWJhMTQ1MWZkOWI2NTIxNzAx
N2EuLmQ3MWIxZWRjY2ZjYWQxOGM1ZWVjNzAyZTJmMWVlZGY3Zjk2YjYzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0yODYsMTQgKzI4Niwx
NCBAQCBTdHJpbmcgRm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJu
IExhdGluMUVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ5
dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEJsb2JS
ZXNvbHZlZChCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBj
b25zdCBVUkwmIHVybCkKK3N0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnksIEZvcm1EYXRhJiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwp
CiB7Ci0gICAgaWYgKCFibG9iUmVnaXN0cnkuaXNCbG9iUmVnaXN0cnlJbXBsKCkpIHsKKyAgICBp
ZiAoIWJsb2JSZWdpc3RyeSkgewogICAgICAgICBMT0dfRVJST1IoIlRyaWVkIHRvIHJlc29sdmUg
YSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8qIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+
KGJsb2JSZWdpc3RyeSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CisgICAgYXV0byogYmxvYkRh
dGEgPSBibG9iUmVnaXN0cnktPmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwogICAgIGlmICghYmxv
YkRhdGEpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IGJsb2IgZGF0YSBmcm9t
IGEgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSwgRm9y
bURhdGEmIGZvcm1EYXRhLCBjCiAgICAgfQogfQogCi1SZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkpCitSZWY8Rm9y
bURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoQmxvYlJlZ2lzdHJ5SW1wbCog
YmxvYlJlZ2lzdHJ5KQogewogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGFueSBibG9icyBuZWVkcyB0
byBiZSByZXNvbHZlZCwgb3Igd2UgY2FuIHRha2UgdGhlIGZhc3QgcGF0aC4KICAgICBib29sIGhh
c0Jsb2IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCAyMGJmNjJlMjEwMDBmNTUzNmE1OWM2OWI2YzUyNTkyMDU5YTVmMzNmLi43YzY4NmU4
YjQyM2IzNmRlOGIxMmYxMGI1N2RmMThkZTNlNDA5NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQmxvYlJlZ2lzdHJ5OworY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsK
IGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAg
LTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVy
ZW5jZXMgc28gd2Ugb25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCiAgICAgLy8gSWYgdGhlIEZvcm1E
YXRhIGhhcyBubyBibG9iIHJlZmVyZW5jZXMgdG8gcmVzb2x2ZSwgdGhpcyBpcyByZXR1cm5lZC4K
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Rm9ybURhdGE+IHJlc29sdmVCbG9iUmVmZXJlbmNlcyhC
bG9iUmVnaXN0cnkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Rm9ybURhdGE+IHJlc29sdmVC
bG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBsKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBG
b3JtRGF0YUZvclVwbG9hZCBwcmVwYXJlRm9yVXBsb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
CmluZGV4IDQ3ZjE1NDE4ZjJhZDRkNWY4NWQ2MDliNzk3ODM2Njc5NjBmYmJkZjQuLjUzZmVhMDU2
MzU5OGFjMTg5NWU5Njc2NDM3MmExN2U3ZDlkMmViZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApA
QCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVhZFN0
cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRUeXBlIHR5cGUsIHZvCiAKIFJldGFpblB0cjxD
RlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3Jt
RGF0YSkKIHsKLSAgICBhdXRvIHJlc29sdmVkRm9ybURhdGEgPSBmb3JtRGF0YS5yZXNvbHZlQmxv
YlJlZmVyZW5jZXMoYmxvYlJlZ2lzdHJ5KCkpOworICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9
IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0
cnlJbXBsKCkpOwogICAgIGF1dG8gZGF0YUZvclVwbG9hZCA9IHJlc29sdmVkRm9ybURhdGEtPnBy
ZXBhcmVGb3JVcGxvYWQoKTsKIAogICAgIC8vIFByZWNvbXB1dGUgdGhlIGNvbnRlbnQgbGVuZ3Ro
IHNvIENGTmV0d29yayBkb2Vzbid0IHVzZSBjaHVua2VkIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXgg
MzFjNmEwZTRlYmFiY2E2MjJjNzllYTM2YWExN2Q4NzE1ZjVhOTc3NC4uZTk4YmExODg0ZjU0NWMz
ZTRjNTYwZTAwNzY4NTgzYzQ4N2JiMDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMzMsNiArMzMsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwor
CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2Ug
ewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJs
KQpAQCAtODcsNyArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCB1
cGRhdGVTb3VwTWVzc2FnZUhlYWRlcnMoU291cE1lc3NhZ2VIZWFkZXJzKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgdXBkYXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyhTb3VwTWVzc2FnZUhlYWRlcnMq
KTsKLSAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZShTb3VwTWVzc2FnZSopIGNvbnN0Owor
ICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiwgQmxvYlJlZ2lzdHJ5
SW1wbCYpIGNvbnN0OwogICAgICAgICB2b2lkIHVwZGF0ZUZyb21Tb3VwTWVzc2FnZShTb3VwTWVz
c2FnZSopOwogICAgICAgICB2b2lkIHVwZGF0ZVNvdXBSZXF1ZXN0KFNvdXBSZXF1ZXN0KikgY29u
c3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlRnJvbVNvdXBSZXF1ZXN0KFNvdXBSZXF1ZXN0Kik7CkBA
IC0xMTEsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gbV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRl
U291cE1lc3NhZ2VNZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7Ci0gICAgICAgIHZvaWQgdXBk
YXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CisgICAgICAgIHZvaWQgdXBk
YXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiwgQmxvYlJlZ2lzdHJ5SW1wbCYpIGNvbnN0
OwogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CiAgICAgICAgIHZv
aWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KICAgICAgICAgdm9pZCBkb1VwZGF0ZVBs
YXRmb3JtSFRUUEJvZHkoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCA5NjAxZTY2
MzE3YjA1OTRmYjkwNGQzYjkxMmY2MjZjODJmNzNjYWI5Li4zMzViM2Q5MmFjZjBiOTk2ZDg0MTUy
NzhkYThlYTlkN2IzZjRjOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdl
Qm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBN
ZXNzYWdlKSBjb25zdAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9k
eShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3Ry
eSkgY29uc3QKIHsKICAgICBhdXRvKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKCFm
b3JtRGF0YSB8fCBmb3JtRGF0YS0+aXNFbXB0eSgpKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZF9idWZmZXIoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlci5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVs
ZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYikgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnko
KSkuZ2V0QmxvYkRhdGFGcm9tVVJMKGJsb2IudXJsKSkgeworICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBibG9iRGF0YSA9IGJsb2JSZWdpc3RyeS5nZXRCbG9iRGF0YUZyb21VUkwoYmxvYi51cmwp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGJsb2JEYXRh
LT5pdGVtcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYXBwZW5kRW5j
b2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoc291cE1lc3NhZ2UsIGl0ZW0pOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyhTb3VwTWVzc2FnZUhlYWRlcnMqIHNvdXBIZWFkZQog
ICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KFN0cmluZyhoZWFkZXJOYW1lKSwgU3RyaW5n
KGhlYWRlclZhbHVlKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVz
c2FnZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVxdWVz
dDo6dXBkYXRlU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBCbG9iUmVnaXN0
cnlJbXBsJiBibG9iUmVnaXN0cnkpIGNvbnN0CiB7CiAgICAgZ19vYmplY3Rfc2V0KHNvdXBNZXNz
YWdlLCBTT1VQX01FU1NBR0VfTUVUSE9ELCBodHRwTWV0aG9kKCkuYXNjaWkoKS5kYXRhKCksIE5V
TEwpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNv
dXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3VyaShzb3VwTWVzc2FnZSwgdXJpLmdldCgpKTsKIAogICAgIHVwZGF0ZVNvdXBNZXNz
YWdlTWVtYmVycyhzb3VwTWVzc2FnZSk7Ci0gICAgdXBkYXRlU291cE1lc3NhZ2VCb2R5KHNvdXBN
ZXNzYWdlKTsKKyAgICB1cGRhdGVTb3VwTWVzc2FnZUJvZHkoc291cE1lc3NhZ2UsIGJsb2JSZWdp
c3RyeSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGcm9tU291cE1lc3NhZ2Uo
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggODBmZTFh
MmRkYzNlMTNhMDIwYjI1NjRhNjJkYzU1M2YwYjVkNDRkMC4uZmZmYjQ3MzVkYjIxZWQ1NGE4MGI0
ZDAzZjRkNGU3MDQ1NDZiZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZC5o
IgotI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Nlc3Npb24uaCIKQEAgLTU1LDEwICs1NCwxMCBAQCB2b2lkIERvd25sb2FkTWFu
YWdlcjo6c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYQogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcGFyYW1ldGVy
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHM7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Js
b2IoKSkKLSAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5u
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CisgICAgICAg
IHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAg
ICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2Fk
SUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9i
UmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQo
ZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyks
IGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25s
b2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgKaW5kZXggMzg2YzllNzZmZWM5MzZjMTU0ZWY3NGFmYWFkMWI4NTA2YTdhNTdmNC4uNzRlZDEz
YmU2MTNkNzFmZDMzMjQxNjk1ZTVkYjM2MTZjMjQ1MDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAg
LTU1LDcgKzU1LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjsKIGNsYXNzIERvd25sb2FkOwotY2xhc3MgTmV0d29ya0Jsb2JSZWdpc3RyeTsKIGNs
YXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBj
bGFzcyBQZW5kaW5nRG93bmxvYWQ7CkBAIC03NSw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRpY2F0aW9uTWFu
YWdlcigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBlbmRpbmdEb3dubG9hZENhbmNlbGVk
KERvd25sb2FkSUQpID0gMDsKICAgICAgICAgdmlydHVhbCBOZXR3b3JrU2Vzc2lvbiogbmV0d29y
a1Nlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgTmV0d29ya0Jsb2JSZWdpc3RyeSYgbmV0d29ya0Jsb2JSZWdpc3RyeSgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRl
cmVmKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHVpbnQzMl90IGRvd25sb2FkTW9uaXRv
clNwZWVkTXVsdGlwbGllcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCA2Mzk5OGQ1ODY4MTU4ODU4NjU5YWQ5MmFjMjAwNTNhMjM2ZTA2NjM0Li43NjRhZTk0ZWYwZjQ0
NGE4MWUwNWI2YjI5ODg3ZjdjOTg2YzhlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBA
IC0xNjYsMjAgKzE2Niw0IEBAIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0NvCiAgICAgcmV0dXJuIGZp
bGVzSW5CbG9iKHVybCk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0g
ICAgQVNTRVJUKG1fYmxvYlJlZ2lzdHJ5LmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKTsKLSAgICBCbG9i
RGF0YSogYmxvYkRhdGEgPSBtX2Jsb2JSZWdpc3RyeS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsK
LSAgICBpZiAoIWJsb2JEYXRhKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBCbG9i
RGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgewotICAgICAgICBpZiAoaXRlbS50
eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChpdGVtLmZpbGUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NGNmZWQ5
ZGFmNzk4MDNiYzVhZjgxNWY4NDliY2EyYTEwY2U3ZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2ViQ29yZS9CbG9i
UmVnaXN0cnlJbXBsLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9VUkxI
YXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTsKLWNsYXNzIEJsb2JQYXJ0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci1jbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwotCi1j
bGFzcyBOZXR3b3JrQmxvYlJlZ2lzdHJ5IHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtC
bG9iUmVnaXN0cnkpOwotcHVibGljOgotICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKLSAgICB+
TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwotCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB1
aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVS
TCYpOwotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKLSAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4m
Jik7Ci0KLSAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIGNvbnN0IFVSTCYpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9ibG9iUmVnaXN0
cnk7IH0KLQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwotICAgIEJs
b2JGb3JDb25uZWN0aW9uTWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwotICAgIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDliMWI5Yjg2MDQzOGQ5YjZhM2YxMjY4OTE0NjJiMzM2YmM1OWZjNGQu
LjJlNGY1M2QyYWRjMGU4NTIwMjZiMDM3MWI1MTU0ZDRiM2M4OTk2YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0zMDEsNyArMzAxLDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChjb25uZWN0aW9u
KTsKIAotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoKnRoaXMpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJl
bW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCp0aGlzKTsKIAogI2lmIFVTRShMSUJX
RUJSVEMpCkBAIC0zNzQsMTMgKzM3MywxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplbmRTdXNwZW5zaW9uKCkKIAogVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb2x2ZUJs
b2JSZWZlcmVuY2VzKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHBhcmFtZXRlcnMuc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvJiBibG9iUmVnaXN0cnkgPSBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gZmlsZXM7CiAgICAgaWYgKGF1dG8qIGJvZHkgPSBwYXJhbWV0ZXJzLnJlcXVlc3QuaHR0cEJv
ZHkoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBib2R5LT5lbGVtZW50cygpKSB7
CiAgICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVs
ZW1lbnQ6OkVuY29kZWRCbG9iRGF0YT4oZWxlbWVudC5kYXRhKSkKLSAgICAgICAgICAgICAgICBm
aWxlcy5hcHBlbmRWZWN0b3IobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgp
LmZpbGVzSW5CbG9iKCp0aGlzLCBibG9iRGF0YS0+dXJsKSk7CisgICAgICAgICAgICAgICAgZmls
ZXMuYXBwZW5kVmVjdG9yKGJsb2JSZWdpc3RyeS5maWxlc0luQmxvYihibG9iRGF0YS0+dXJsKSk7
CiAgICAgICAgIH0KLSAgICAgICAgY29uc3RfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
PihwYXJhbWV0ZXJzLnJlcXVlc3QpLnNldEhUVFBCb2R5KGJvZHktPnJlc29sdmVCbG9iUmVmZXJl
bmNlcyhtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5
KCkpKTsKKyAgICAgICAgY29uc3RfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmPihwYXJh
bWV0ZXJzLnJlcXVlc3QpLnNldEhUVFBCb2R5KGJvZHktPnJlc29sdmVCbG9iUmVmZXJlbmNlcygm
YmxvYlJlZ2lzdHJ5KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVzOwpAQCAtNTY4LDY3ICs1
NzMsODkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3
b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdp
c3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoKnRoaXMsIHVybCwgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSksIGNvbnRlbnRUeXBlKTsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qmxv
YlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoKnRo
aXMsIHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JV
UkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRC
eXBhc3NDb25uZWN0aW9uQ2hlY2spCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5l
dHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoKnRoaXMsIHVybCwgc3JjVVJMLCBz
aG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwodXJsLCBzcmNVUkwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoKnRoaXMsIHVybCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgY29udGVudFR5cGUp
OworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1
cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShmaWxlQmFja2VkUGF0aCwgbnVsbHB0ciksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVu
ZCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoKnRo
aXMsIHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgbV9uZXR3
b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKCp0aGlz
LCB1cmwpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JS
ZWdpc3RyeSgpLmJsb2JTaXplKCp0aGlzLCB1cmwpKTsKKyAgICBhdXRvKiBibG9iUmVnaXN0cnkg
PSBuZXR3b3JrUHJvY2VzcygpLmJsb2JSZWdpc3RyeSgqdGhpcyk7CisgICAgaWYgKCFibG9iUmVn
aXN0cnkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGJsb2JSZWdp
c3RyeS0+YmxvYlNpemUodXJsKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IGZpbGVSZWZlcmVuY2VzOwogICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCi0g
ICAgICAgIGZpbGVSZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihtX25ldHdvcmtQcm9jZXNzLT5uZXR3
b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IoKnRoaXMsIHsgeyB9LCB1cmwgfSkpOworICAg
ICAgICBmaWxlUmVmZXJlbmNlcy5hcHBlbmRWZWN0b3Ioc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
ZmlsZXNJbkJsb2IoeyB7IH0sIHVybCB9KSk7CiAKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxl
UmVmZXJlbmNlcykKICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAg
IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhibG9iVVJMcywgW2ZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJl
bmNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBmaWxlTmFtZXMpIG11dGFibGUgeworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLndy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBbZmlsZVJlZmVyZW5jZXMgPSBXVEZN
b3ZlKGZpbGVSZWZlcmVuY2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIGZpbGVOYW1lcykgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0
byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFj
Y2VzcygpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVOYW1lcykpOwog
ICAgIH0pOwogfQogCi1WZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaWxlc0luQmxvYihjb25zdCBVUkwm
IHVybCkKLXsKLSAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3Ry
eSgpLmZpbGVzSW5CbG9iKCp0aGlzLCB1cmwpOwotfQotCi1XZWJDb3JlOjpCbG9iUmVnaXN0cnlJ
bXBsJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KCkKLXsKLSAg
ICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdp
c3RyeSgpOwotfQotCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBt
X2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQgPSBlbmFibGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCmluZGV4IGQ3YjJmMWI2M2JjN2IwNGZlMDMwZTAzNjVlMjEzNmY3NWFi
NDhjZTYuLjhmZTlmMzJjOWVmYzYyZmQzYzUzZTBiMTJjMmRkNWQyYzQ1ZGUxMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzOCw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gc3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwogICAgIHZvaWQgc3Rv
cFRyYWNraW5nUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwg
TmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCi0gICAgV2ViQ29yZTo6
QmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc29sdmVC
bG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYpOwogCiAg
ICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwpAQCAtMTgzLDE0ICsx
ODEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNo
ZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90
IGVuZCk7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JT
bGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0
X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKICAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCiAgICAgdm9pZCBzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmYTJjMzFhNDEzYWY2MjE5NDkzY2Q0
Y2VhMmJjN2M0YWZhOTIwNTkwLi4xZTc3YzhhYjk4NDQ5ZmYwNGVmYWI3OTMwNWQ1MTM4ZGViZDg1
ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQx
LDE0ICs0MSwxNCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBj
b29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJGaWxlQmxv
YlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9i
VVJMKFVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcg
Y29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChVUkwgdXJsLCBVUkwgc3Jj
VVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKLSAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJh
Y2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGlj
ZShVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKLSAgICBV
bnJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsKQorICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCisg
ICAgUmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVmVj
dG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKKyAg
ICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVy
bCwgVVJMIHNyY1VSTCkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmluZyBmaWxl
QmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBlbmQpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgdXJsKQogICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRf
dCByZXN1bHRTaXplKSBTeW5jaHJvbm91cwotICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBB
c3luYworICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFt
ZXMpIEFzeW5jCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA5Y2I0YTkyNTIyMDkwNWI0YzIxYTRmNzZhZTc3NmFlMTQ1MDI1
Zjg3Li5hOThmNzBmYTk5YTU2NTAxYzdjMWRhZjUyOWFlZWIwNzA5ZDJjNmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjEyLDYg
KzYxMiwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogICAgIG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMucmVtb3Zl
KHNlc3Npb25JRCk7CiB9CiAKK0Jsb2JSZWdpc3RyeUltcGwqIE5ldHdvcmtQcm9jZXNzOjpibG9i
UmVnaXN0cnkoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCit7Cisg
ICAgLy8gRklYTUU6IERlcHJlY2F0ZSB0aGlzIG1ldGhvZCBhbmQgdXNlIHNlc3Npb25JRCAtPiBO
ZXR3b3JrU2Vzc2lvbiAtPiBibG9iIHJlZ2lzdHJ5LgorICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbkJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CisgICAgcmV0
dXJuIHNlc3Npb24gPyAmc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkgOiBudWxscHRyOworfQorCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2
Y2QzNmVhOWYzNTk0YTdmYjlkZTg1NTM1MzIzZmE4MjE3MDguLjk0ODY5MDQ2NWFhMTY0MGI5YWFl
ZWFlZmE4YjJlNDRiYzY1MmQzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZU1vZGVs
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgiCi0jaW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBA
IC0zMjcsNyArMzI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2FjaGVFbmdpbmUoY29u
c3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1
aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4pPiYmKTsKIAotICAgIE5ldHdvcmtCbG9iUmVn
aXN0cnkmIG5ldHdvcmtCbG9iUmVnaXN0cnkoKSBvdmVycmlkZSB7IHJldHVybiBtX25ldHdvcmtC
bG9iUmVnaXN0cnk7IH0KKyAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0
cnkoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAogICAgIHZvaWQgc3RvcmVBZENs
aWNrQXR0cmlidXRpb24oUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlv
biYmKTsKICAgICB2b2lkIGR1bXBBZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CkBAIC00OTgsNyArNDk3LDYgQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a1Nlc3Npb24+PiBtX25ldHdvcmtTZXNzaW9uczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gbV9uZXR3
b3JrU3RvcmFnZVNlc3Npb25zOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwot
ICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkgbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0Nv
Y29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGYyMzRlMjk0MWQzZTFlNTE2ZWEzOGI2ZGY2ZWM1
M2VjMjBhNzUwMTcuLjBjODQ2ZGIwMjQyZjNhNzUxM2U2YzNiMTExZWFhYzFkODg2MGVjOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC01MiwxNSArNTIsMTQgQEAgQmxv
YlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJl
Z2lzdHJ5KCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBjbGFzcyBFbXB0
eUJsb2JSZWdpc3RyeSA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewotICAgICAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0
b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAg
ICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQot
ICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
ICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAgICAgIHZvaWQg
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICBib29sIGlzQmxvYlJlZ2lz
dHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRo
cyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAgIHJl
dHVybiAmYmxvYlJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDNkYmY0N2FiMjRmMWZk
N2RkZTQ1OGFmMDc5ZTAwZThhNTllMDk1MDAuLjU1N2ZiNmRiMWFmZTk0YTdmY2I4MWFkZDM1OWYx
MTU0YjRiZWVjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwMCw5ICszMDAsNiBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgIGlmIChwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgJiYgbV9uZXR3b3JrTG9h
ZENoZWNrZXIpCiAgICAgICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKTsKIAotICAgIGlm
IChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYmxv
YkZpbGVSZWZlcmVuY2VzID0gbV9jb25uZWN0aW9uLT5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVl
c3QoKS51cmwoKSk7Ci0KICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CiAg
ICAgaWYgKCFuZXR3b3JrU2Vzc2lvbiAmJiBwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKSB7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5hZGRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFt
ZXRlcnMocGFyYW1ldGVycy5zZXNzaW9uSUQpKTsKQEAgLTMxNiw4ICszMTMsMTEgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChyZXF1
ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpCisgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVS
ZWZlcmVuY2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9y
aWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKKwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a0xvYWQ+KCp0aGlzLCAmbV9jb25uZWN0aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlw
dGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29y
a0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZk
OWRiOGI3MGExNmFlM2ZhMTdiMmQ1MC4uYzRlMTAyZTc3NTI3ZWVjMWZhZjUxZTdiMDRlMGU5NTc5
NDY2N2ExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5
SW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTExNCw2ICsx
MTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVdlYlNvY2tldFRhc2soV2Vi
U29ja2V0VGFzayYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlNv
Y2tldFRhc2smKSB7IH0KIAorICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9CisKIHByb3RlY3RlZDoKICAgICBOZXR3
b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CiAKQEAgLTE0Myw2ICsxNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBt
X2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUmVmUHRyPE5ldHdvcmtDYWNo
ZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JS
ZWdpc3RyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmlu
ZGV4IDg3ZTg1YjU1ZTkxZWM2OTZhYzE1YjFjNWYxYTExMzUxYTNlMjZhYjcuLmQ0NmM1MDNkODFl
OTgzNGU1ZDJhMjU2NjBjODcyM2VhZTdlMTcwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIAogICAgIHVuc2lnbmVkIG1lc3NhZ2VGbGFncyA9IFNP
VVBfTUVTU0FHRV9OT19SRURJUkVDVDsKIAotICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRlU291
cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCkpOworICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRl
U291cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIG1fc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkp
OwogICAgIGlmIChtX3Nob3VsZENvbnRlbnRTbmlmZiA9PSBDb250ZW50U25pZmZpbmdQb2xpY3k6
OkRvTm90U25pZmZDb250ZW50KQogICAgICAgICBzb3VwX21lc3NhZ2VfZGlzYWJsZV9mZWF0dXJl
KHNvdXBNZXNzYWdlLmdldCgpLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSKTsKICAgICBpZiAo
bV91c2VyLmlzRW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKSAmJiBtX3N0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID09IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFkY2RlNTU0ZTZiZDMzYmNlOWUyZjYwZDBk
Li4zMGZjOGE1MzU1ZDA4NDUyYWMzNjFiMWRjZWE5N2M4NGYzNjA3ZmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBO
ZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgR1JlZlB0cjxTb3VwTWVzc2FnZT4gc291cE1lc3NhZ2Ug
PSBhZG9wdEdSZWYoc291cF9tZXNzYWdlX25ld19mcm9tX3VyaShTT1VQX01FVEhPRF9HRVQsIHNv
dXBVUkkuZ2V0KCkpKTsKLSAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdl
LmdldCgpKTsKKyAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgp
LCBibG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3Nz
IikpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3Jr
LWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2sp
LCBudWxscHRyKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihj
aGFubmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggNWI0ZmY2OWM1NGY1MDI3YWM5ZTQ0ZDkwNTgwMWRiM2JmOWFkYWYyMy4uYWVi
NTg5OGU0ZTQwMjI3YTkzNmY3NThiNDAyMWY4Mzc5ODQ1YzczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01
Nyw4ICs1Nyw2IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1vbml0b3IuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAogCi1OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCi0KIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMTY2NDA2MGNhOTM3Yjc4NzNi
M2U0ZTRlMGJmNDZkZTdmMWY4N2Y4Li41ZDU2YTJhMTc5OGVkMWEzYmQ5NDk5ZmE4ZTA5NWFlNDZj
OWNiYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMTYsNyArMTMxNiw2IEBACiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIg
RVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29t
Lm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CiAJCUExMDQ2RUEx
MjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZp
ZXcuaCAqLzsgfTsKLQkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3IC8qIE5ldHdvcmtCbG9iUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi87IH07CiAJ
CUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZFMTkx
RDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTE4QTlFRjE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tM
b29rRG9jdW1lbnREYXRhLmggKi87IH07CiAJCUExMThBOUYzMTkwOEI4RUEwMEY3QzkyQiAvKiBf
V0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTE4QTlGMTE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zOTg1LDcgKzM5ODQsNiBAQAogCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Nv
bnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQ
REZWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUERGVmlldy5oOyBwYXRoID0gaW9zL1dLUERGVmll
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA0NkVBMDIwNzkyNjMxMDBGMEM1
RDggLyogV0tQREZWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQREZWaWV3Lm1tOyBw
YXRoID0gaW9zL1dLUERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTEw
NUQwRDAyMTI3MzRCMTAwMzRGNkM3IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Jsb2JSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTE1REM2RDE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlFQzE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGggPSBpb3MvUXVp
Y2tMb29rRG9jdW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2
MTksNyArNDYxNyw2IEBACiAJCUUxNjRBMkYwMTkxQUYxNEUwMDEwNzM3RCAvKiBCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTcwODc2OTE2RDZDQTY5MDBGOTkyMjYgLyog
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NkEx
NkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEJsb2JSZWdpc3RyeVByb3h5Lmg7IHBhdGggPSBXZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTE3OThDNzcxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxN0FFMkMxMTZCOUMxMzkwMDFDNDJGMSAv
KiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxN0FFMkMyMTZCOUM2M0EwMDFDNDJGMSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1By
b2Nlc3Muc2I7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL2NvbS5hcHBsZS5XZWJLaXQu
TmV0d29ya1Byb2Nlc3Muc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY2NjQsNyArNjY2MSw2IEBACiAJCQkJNUMxNDI2RjIxQzIzRjgyRDAwRDQx
MTgzIC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1QzE0MjZGMTFDMjNGODE3MDBENDExODMg
LyogRG93bmxvYWRzICovLAogCQkJCUJDODI4MzdDMTZCNDVEQTUwMEEyNzhGRSAvKiBFbnRyeVBv
aW50ICovLAotCQkJCUUxNzk4Qzc2MTZFNjgxNTUwMDI0MDEzOSAvKiBGaWxlQVBJICovLAogCQkJ
CTkzOTI4OEUwMjE0MDRERjAwMEVCQkEzMyAvKiBJbmRleGVkREIgKi8sCiAJCQkJMkRBOTQ0QkIx
ODg1MTFERDAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQk1MTBDQzdEQzE2MTM4RTI5MDBEMDNFRDMg
LyogbWFjICovLApAQCAtOTAyNCwxNSArOTAyMCw2IEBACiAJCQluYW1lID0gRmlsZUFQSTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUUxNzk4Qzc2MTZFNjgxNTUwMDI0MDEz
OSAvKiBGaWxlQVBJICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQlFMTc5OEM3NzE2RTY4MTg4MDAyNDAxMzkgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAg
Ki8sCi0JCQkJQTEwNUQwRDAyMTI3MzRCMTAwMzRGNkM3IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnku
aCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gRmlsZUFQSTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7Ci0JCX07CiAJCUUxOTk4NzVCMTQyQkY5Q0YwMEJCMkRFNyAvKiBQREYgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTQ4MCw3ICs5NDY3LDYgQEAKIAkJ
CQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQTU4ODkyMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdp
blN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1QkNCOTIyMDY5QzQ5QzAwQ0NDRTAyIC8q
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExMDVEMEQxMjEy
NzM0QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDlENDBENzFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODlEMjhDMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3
b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDI0ZTM1NTlj
ZmYwNjliZDMxNzkxZWU2NTE3OGVhZjRlNGRjMGU0N2QuLjJmM2I2YmE4MzE0Nzg0NWU2ODYyYzRm
OTAzOTdkMjUxYzY1YjE3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDM3ICs0NCwzMyBAQCB2b2lkIEJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZQogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGZpbGUtPnBh
dGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9i
UGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywg
Y29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwg
YmxvYlBhcnRzLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewotICAgIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayA9IFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSNlbmRpZgotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTCB7IHVybCwgc3JjVVJMLCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgfSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGcm9tVVJMIHsgc2Vzc2lvbklELCB1cmwsIHNyY1VSTCB9
LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIEFTU0VSVChmaWxlKTsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBm
aWxlLT5wYXRoKCksIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBmaWxlLT5wYXRoKCksIGNv
bnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlVucmVnaXN0ZXJCbG9iVVJMKHVybCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwo
c2Vzc2lvbklELCB1cmwpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdp
c3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgdXJsLCBzcmNV
UkwsIHN0YXJ0LCBlbmQpLCAwKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3Ry
eVByb3h5OjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCkKQEAgLTg1LDkgKzgxLDkgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCkK
ICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6d3Jp
dGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5kZXggNmFiZWUzNjc0OGRmZWNjMmNhZDQ2Y2Nj
MjIyYTc0YzUxNzZkODlkNC4uZDc2NjE1ODdlM2U3NDM4MzJlMjMyNWM2Nzk2Y2ZhMzQ1YmI5NTZj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5oCkBAIC0zMSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEJsb2JSZWdpc3RyeVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eSB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJl
ZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKLSAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYsIFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWw7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpIGZpbmFsOworICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFs
OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBmaW5hbDsKKyAg
ICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IGQ5YWRjYzIxYThhOTZiMmFhNTQ1MzY2ZGUwOTVkMDQ3YzYyNTdlZGYuLmFm
ZDc0N2E1Yjk5MTg1NzAzMDgzZmFjNTcwZmM0OGI0ZTVjYmVmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcApAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTCiB7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoYmxvYlVSTHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgYmxv
YlVSTHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50
aWZpZXIsIFJlc291cmNlRXJyb3ImJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwY2RlNTk5YjFlMDQ5ZDg4MzEzYTBkMDMwNWY4
MDJhZjUyNzlkY2Q5Li42MjZkYWIxMWIyZGYyOTk0Y2FkYmE3NzNmOTI1MTA4ZjFjNTc5YjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMp
PiYmKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlciogZXhpc3RpbmdJREJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JJZGVudGlmaWVyKHVp
bnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fd2ViSURCQ29ubmVjdGlvbnNCeUlk
ZW50aWZpZXIuZ2V0KGlkZW50aWZpZXIpOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CmluZGV4IDA4YTkwMjYyMGM2NmIzY2ZlYzdlMTA0YTAzNDhlM2YyNjQzMTQ0Y2MuLmRlZjk4ZGFl
MmZlYjQ0ODA3ZWZiMzIxN2FjZGNjZWNiYjY1OTlkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KQEAgLTYyLDkgKzYyLDI1IEBAIFBhc3RlYm9hcmRTdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlz
OwogfQogCitjbGFzcyBXZWJCbG9iUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5
IHsKK3ByaXZhdGU6CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2Us
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0
ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8QmxvYlBhcnQ+JiYgcGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShwYXJ0cyksIGNv
bnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnku
cmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2Us
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUocmVmZXJl
bmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOyB9CisgICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9i
bG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsgfQorICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBibG9iU2l6ZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyByZXR1cm4gbV9ibG9iUmVnaXN0
cnkuYmxvYlNpemUodXJsKTsgfQorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
YmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQorCisgICAgQmxvYlJlZ2lz
dHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIGZpbmFsIHsgcmV0dXJuICZtX2Jsb2JSZWdpc3Ry
eTsgfQorCisgICAgQmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JSZWdpc3RyeTsKK307CisKIEJsb2JS
ZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewot
ICAgIHJldHVybiBuZXcgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDsKKyAgICByZXR1cm4gbmV3
IFdlYkJsb2JSZWdpc3RyeTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDk4YzljMDkyOTg2ZWRhYzQ2NGUz
NjQ3YWVkOThmODIzODFiMjg3MmEuLmI3NjkwZGZiZGZmMTlhYzhlNDY1ZGYwYWM5ZDkzNjIwNjJi
MzRlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CkBAIC01OSw3ICs2MCwyMyBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAorY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3Ry
eSB7Citwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lz
dGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
VmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5h
bCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBj
b250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVy
ZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1f
YmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lz
dHJ5LmJsb2JTaXplKHVybCk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7IH0KKworICAgIEJsb2JSZWdp
c3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0
cnk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7Cit9OworCiBCbG9i
UmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsK
LSAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeUltcGw7CisgICAgcmV0dXJuIG5ldyBXZWJCbG9i
UmVnaXN0cnk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376142</attachid>
            <date>2019-08-13 00:38:59 -0700</date>
            <delta_ts>2019-08-13 00:49:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200567-20190813093856.patch</filename>
            <type>text/plain</type>
            <size>97016</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg2NWNlZmM2N2EzZjAy
YmE5OGJhZWU2ZjIxNjcyNzFmZjIwNGM5MC4uMzQyZTFmM2FmOTZjYjYxMTZiNDljNTE5YzY1ZGYw
ZmU1NTRhZWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgUGFzcyBzZXNzaW9uIElEcyB0byBhbGwgQmxvYlJlZ2lzdHJ5IG1ldGhvZHMgaW4gcGFydGlj
dWxhciBUaHJlYWRhYmxlTG9hZGVyUmVnaXN0cnkuCisgICAgICAgIFRoZSBvbmx5IGV4Y2VwdGlv
biBpcyBibG9iU2l6ZSB3aGljaCBzaG91bGQgYmUgZGVhbHQgd2l0aCBhIGZvbGxvdy11cCBwYXRj
aC4KKyAgICAgICAgYmxvYlNpemUgYmxvYiByZWdpc3RyeSBpcyByZXRyaWV2ZWQgZnJvbSB0aGUg
Y29ubmVjdGlvbiAtPiBzZXNzaW9uSUQgbWFwIGluIE5ldHdvcmsgUHJvY2Vzcy4KKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6On5GZXRjaExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RhcnRMb2FkaW5nQmxvYlVSTCk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjp+RmlsZVJlYWRlckxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpzdGFydCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNr
ZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEJsb2JSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6ZmlsZXNJbkJsb2Ig
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kQmxvYlJlc29sdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNv
bHZlQmxvYlJlZmVyZW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlIGNvbnN0
KToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIElEQlZhbHVlOjptX3Nlc3Npb25JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNTRjOTEwNzc1
MWNlNDYyMjRkNjg0MmJhMTMzOGJjMDBmMTYzNDQ1Li41MmNkMjNiMTFhOWNkZmY5YzJmOTBkNjQz
ZGJmNmVmY2UzODE5NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE5LTA4LTEyICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJp
ZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU0MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAg
ICAgICAgTW92ZSBibG9iIHJlZ2lzdHJ5IHRvIE5ldHdvcmtTZXNzaW9uIHNvIHRoYXQgaXQgaXMg
cGFydGl0aW9uZWQgYnkgc2Vzc2lvbiBJRC4KKyAgICAgICAgSW4gY2FzZSBzZXNzaW9uIElEIGlz
IG5vdCBnaXZlbiB0aHJvdWdoIElQQywgdXNlIHRoZSBjb25uZWN0aW9uIGFzIGtleSB0byBnZXQg
dGhlIG5ldHdvcmsgc2Vzc2lvbi4KKyAgICAgICAgVGhpcyBpcyB1c2VkIGZvciBibG9iU2l6ZS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JV
UkxGcm9tVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbGVzSW5CbG9iKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmJsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OmJsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNv
dXA6OmNyZWF0ZVdlYlNvY2tldFRhc2spOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6Qmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6
CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdmMGVmNTBkMzU0MzgxZWE1OGQ1MGY3YWMzMjdi
MmVkNzFjOTc0ZWQuLjdlNjhkZTNiMzdkYjE5OTQ5NzM5Y2VmZTY4MzAyMjFlMjc0OGRmODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3Ry
aWVzIHNob3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxv
YlJlZ2lzdHJ5KToKKyAgICAgICAgSWdub3JlIHNlc3Npb25JRCBwYXJhbWV0ZXIgZm9yIFdLMS4K
KwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGY1MWUwNDQyZTU2YmY3MjNhMDFiMzBkZTg4ZmJjODE1ODMxODQ0MDkuLjE1ZmU3YWZmZWZk
YTlmYThmODllOTg3N2U1NjdhYjQzYTVjNWYyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3VsZCBiZSBrZXllZCBieSBz
ZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDEyMDIxMj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBjMGRiZjVm
ZTU3OGYxZjU5YjZmNGMxYjA3YWJjMDFlN2QyNTFkNzc5Li5kOGRiOTBjY2IxNDQ5NDYwZTI4NzM4
MWZkZjc0YjNhMmIyMDI5ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBGZXRj
aExvYWRlcjo6fkZldGNoTG9hZGVyKCkKIHsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0Vt
cHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgbV91cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBG
ZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
QmxvYiYgYmxvYikKQEAgLTY0LDcgKzY0LDggQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RhcnRMb2Fk
aW5nQmxvYlVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxv
YlVSTCk7CisgICAgbV9zZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgpOworICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIGNvbnRleHQu
c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsKIAogICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KG1fdXJsRm9yUmVhZGluZyk7CiAgICAgcmVxdWVzdC5zZXRJbml0
aWF0b3JJZGVudGlmaWVyKGNvbnRleHQucmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0MDExYjM3Mzhj
OTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmLi5iNmM2NTA4Y2EzNzYzZTMxMzNkNGEzZGJk
NDExOThhY2E1ODRlOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIq
IG1fY29uc3VtZXI7CiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiAgICAgVVJMIG1f
dXJsRm9yUmVhZGluZzsKKyAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAxZDAwNTRjMjg5MmQ1
MDEzZGYyNmFiZmZhM2UxYzJmNjdkZWU0ODE5Li4xMTRmZjNjOGE1ZGYwMzkwMjgzYjFhNjdjZTYw
OGQ3ZjQyNDZlN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM1NjksMTMgKzM1NjksMTIgQEAgVmVjdG9yPFN0
cmluZz4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
aGFzQmxvYlVSTHMoKSk7CiAKLSAgICAvLyBGSVhNRTogR2V0IHRoZSByaWdodCBibG9iIHJlZ2lz
dHJ5IGZyb20gdGhlIGdpdmVuIHNlc3Npb25JRC4KLSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgp
LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAoYmxvYkZpbGVQ
YXRocy5pc0VtcHR5KCkpIHsKQEAgLTM1ODYsNyArMzU4NSw3IEBAIHZvaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQobV9ibG9iVVJMcy5zaXplKCkgPT0g
YmxvYkZpbGVQYXRocy5zaXplKCkpOwotICAgICAgICAKKwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7ICp0aGlzLCBtX2Jsb2JVUkxzLCBibG9iRmlsZVBhdGhzIH0pOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggNDY0YzEzNzJiMGYzNzc3NzUxY2FkMzM5YmEyZWQ3
YWE1NDZkODRiYi4uOGRhYTBjMTFjNmZkOTIxMzk2ZmQ1NzgxMzljN2JjMDM3ZGZjNWQ0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgcHVibGljOgogdm9pZCBC
bG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFVSTCYgcHVibGljVVJMLCBVUkxSZWdpc3RyYWJsZSYgYmxvYikKIHsKICAgICBB
U1NFUlQoJmJsb2IucmVnaXN0cnkoKSA9PSB0aGlzKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9yaWdpbigpLCBwdWJsaWNVUkws
IHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwoKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2Vzc2lvbklEKCksIGNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNfY2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOwog
fQogCi12b2lkIEJsb2JVUkxSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgVVJMJiB1cmwpCit2b2lkIEJsb2JVUkxSZWdpc3RyeTo6dW5yZWdpc3Rl
clVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOworICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2Vzc2lv
bklEKCksIHVybCk7CiB9CiAKIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5
KCkKQEAgLTgyLDcgKzgyLDcgQEAgQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiAgICAgLCBtX3NpemUoMCkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwobV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHsgfSwgIHsgfSk7
CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8QmxvYlBh
cnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJv
cGVydHlCYWcpCkBAIC0xMDAsNyArMTAwLDcgQEAgQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywKICAg
ICAgICAgKTsKICAgICB9CiAKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwobV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOworICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRl
cm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOwogfQogCiBCbG9iOjpCbG9iKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC0xMTQsNyArMTE0LDcgQEAgQmxvYjo6QmxvYihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGMKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsKICAgICBibG9iUGFydHMu
YXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpKTsKICAgICBtX2ludGVybmFsVVJMID0gQmxv
YlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50
VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vz
c2lvbklELCBtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsK
IH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC0xMjUsNyArMTI1LDcgQEAg
QmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIGNvbnN0IFN0cmluZyYgY29udGUKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsK
ICAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpKTsKICAgICBtX2lu
dGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKIH0KIAogQmxvYjo6QmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNv
bnN0cnVjdG9yLCBjb25zdCBCbG9iJiBibG9iKQpAQCAtMTM0LDcgKzEzNCw3IEBAIEJsb2I6OkJs
b2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYgYmxvYikK
ICAgICAsIG1fdHlwZShibG9iLnR5cGUoKSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKIHsK
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHsg
QmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoRGVzZXJp
YWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCkKQEAgLTE0NCw5ICsxNDQsOSBAQCBCbG9iOjpCbG9iKERlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBz
cmNVUgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgp
OwogICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNV
UkwpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9z
ZXNzaW9uSUQsIG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CiAgICAgZWxzZQotICAg
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBtX3R5cGUpOwor
ICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxlQmFja2Vk
UGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKQEAgLTE1NSwxMiArMTU1LDEyIEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvCiAgICAgLCBtX3NpemUoLTEpIC8vIHNpemUgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRv
IGVuZCAtIHN0YXJ0LgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRl
cm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobV9zZXNzaW9uSUQsIG1faW50
ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9CiAKIEJsb2I6On5CbG9iKCkKIHsKLSAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJM
KTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Np
b25JRCwgbV9pbnRlcm5hbFVSTCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iOjpzaXpl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGViNWI2YTE3Njc4YTM0ZGEzYzBj
NmFlYjlmOGM1YmVmNGVkMGFmMjAuLmIzZTgxYzhiOGE0MjJhZDFlNjllYTFlOTI2MjcxZDk4NzQx
MGE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBGaWxlOjpG
aWxlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIG1f
aW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIG1fc2l6ZSA9
IC0xOwogICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUobV9wYXRoLCBTdHJpbmcoKSwgbV9u
YW1lLCBtX3R5cGUpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJs
b2JVUkwobV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgcGF0
aCwgbV90eXBlKTsKIH0KIAogRmlsZTo6RmlsZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCkBAIC02Myw3ICs2
Myw3IEBAIEZpbGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JV
Ukw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgbV9zaXplID0gLTE7CiAgICAgY29tcHV0ZU5h
bWVBbmRDb250ZW50VHlwZShtX3BhdGgsIG5hbWVPdmVycmlkZSwgbV9uYW1lLCBtX3R5cGUpOwot
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwobV9pbnRlcm5h
bFVSTCwgcGF0aCwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgcGF0aCwgbV90eXBlKTsKIH0K
IAogRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFz
dE1vZGlmaWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAK
aW5kZXggODk3MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNy4uNGRjZDBkZDBj
MDljN2YwYzBlODc0NmFkODAxMzY2ZDhjYWU2OThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIEZpbGVSZWFkZXJMb2Fk
ZXI6On5GaWxlUmVhZGVyTG9hZGVyKCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKICAgICBpZiAoIW1f
dXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnVucmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgbV91cmxGb3JSZWFk
aW5nKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iJiBibG9iKQpAQCAtODEsNyArODEs
OCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJsbwogICAgICAgICBmYWlsZWQoRmlsZUVycm9yOjpT
RUNVUklUWV9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2IudXJsKCkpOworICAgIG1fc2Vzc2lvbklE
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vzc2lvbklEKCk7CisgICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsK
IAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCA3YTQyOGJlNTA1N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVh
MjllMDBhLi40MTliMjA5M2M3ZDc5MGJmMjE1M2RhMmJjZDI5MTU0ZGRiNjBkNDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwog
CiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4g
bV9zZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCiAg
ICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDViYzliYWY3ODI3
OTZiYTQzM2Q3ZTgyOWMxMGFmNjc3MTdhYTQzOTAuLmE5NWIyNDlmOGM4NDIzZmQ3NDViYzJhYzk3
YjI3YmMwNGFhM2E3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTA5ICs2NCw5NyBAQCBzdGF0aWMgVGhyZWFkU3Bl
Y2lmaWM8QmxvYlVybE9yaWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9
CiAKLXN0YXRpYyB2b2lkIHBvc3RUb01haW5UaHJlYWQoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykK
K3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwotICAgIHN0YXRpYyBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4qIHF1
ZXVlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIHF1ZXVlID0g
bmV3IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKLSAgICB9KTsKLQotICAgIHF1
ZXVlLT5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Cisg
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtdIHsKLSAgICAgICAg
YXV0byB0YXNrID0gcXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKLSAgICAgICAgQVNTRVJUKHRhc2sp
OwotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nl
c3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENv
cHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwogICAgIH0pOwog
fQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKLXsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRo
KSwgY29udGVudFR5cGUpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250
ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi12
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVh
ZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3Zl
KGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRv
JiBwYXJ0IDogYmxvYlBhcnRzKQotICAgICAgICAgICAgcGFydC5kZXRhY2hGcm9tQ3VycmVudFRo
cmVhZCgpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5
KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50
VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUp
OwotICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0
cyksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBmb3IgKGF1dG8m
IHBhcnQgOiBibG9iUGFydHMpCisgICAgICAgIHBhcnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQo
KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENv
cHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29u
dGVudFR5cGUpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICAvLyBJZiB0aGUgYmxvYiBV
UkwgY29udGFpbnMgbnVsbCBvcmlnaW4sIGFzIGluIHRoZSBjb250ZXh0IHdpdGggdW5pcXVlIHNl
Y3VyaXR5IG9yaWdpbiBvciBmaWxlIFVSTCwgc2F2ZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHVybCBh
bmQgb3JpZ2luIHNvIHRoYXQgdGhlIG9yaWdpbiBjYW4gYmUgcmV0cml2ZWQgd2hlbiBkb2luZyBz
ZWN1cml0eSBvcmlnaW4gY2hlY2suCiAgICAgaWYgKG9yaWdpbiAmJiBCbG9iVVJMOjpnZXRPcmln
aW4odXJsKSA9PSAibnVsbCIpCiAgICAgICAgIG9yaWdpbk1hcCgpLT5hZGQodXJsLnN0cmluZygp
LCBvcmlnaW4pOwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwotICAgIGVsc2UgewotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VS
TC5pc29sYXRlZENvcHkoKV0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMKHVybCwgc3JjVVJMKTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVy
bCwgc3JjVVJMKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KHNlc3Npb25JRCwgdXJsLCBzcmNVUkwpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFp
blRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUo
ZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7Ci0gICAgZWxzZQotICAgICAgICBwb3N0VG9N
YWluVGhyZWFkKGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNr
ZWRQYXRoLCBjb250ZW50VHlwZSkpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNz
aW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFj
a2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJM
ID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBmaWxlQmFja2VkUGF0aCA9IGZpbGVCYWNrZWRQYXRo
Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgp
XSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3Jl
YXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOworICAgIH0pOwogfQogCi12b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYg
bmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
KQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIGlmIChpc01haW5U
aHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
bmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtuZXdVUkwgPSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VS
TC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwot
ICAgICAgICB9KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uoc2Vzc2lvbklELCBuZXdVUkwsIHNyY1VSTCwg
c3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtzZXNzaW9uSUQsIG5ld1VSTCA9IG5ld1VSTC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0g
c3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwgZW5kXSB7CisgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0
YXJ0LCBlbmQpOworICAgIH0pOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIHJlc3VsdFNpemU7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1
cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyByZXN1bHRTaXplOworICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgY2FsbE9u
TWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0
U2l6ZV0gewogICAgICAgICByZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJs
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3Jl
LCAmcmVzdWx0U2l6ZV0gewotICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgp
LmJsb2JTaXplKHVybCk7Ci0gICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAg
IH0pOwotICAgICAgICBzZW1hcGhvcmUud2FpdCgpOwotICAgIH0KKyAgICAgICAgc2VtYXBob3Jl
LnNpZ25hbCgpOworICAgIH0pOworICAgIHNlbWFwaG9yZS53YWl0KCk7CiAgICAgcmV0dXJuIHJl
c3VsdFNpemU7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3Jp
Z2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgp
KQotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgIGVs
c2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0g
ICAgICAgIH0pOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0
cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vz
c2lvbklELCB1cmwpOworICAgIH0pOwogfQogCiBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwmIHVybCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTlj
NzlmZTIyOTJmODk1YjMxYzYwZjc1NjdmZmQwNDkzZmVkYzgzMi4uMzE1ZjVjYWRiNDY2Mzg5ODBi
NGMxZmQ4ZWM1YjY3ZGJlM2U0MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKTsKLSAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklELCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VS
TCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7Cisg
ICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJl
ZGJhZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdkN2ZiMC4uN2JlYmM3YTEwY2NiZWQ1M2NmZThj
YWY4YTA3Yzc4ZTZjNTc5ZDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJs
aWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCkBAIC0yNiw4ICsyNiw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQdWJsaWNVUkxNYW5hZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgorCiAjaW5jbHVkZSAi
VVJMUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKaW5kZXggOGI5MWUxYzMyNGQ3OGU3MTVlOGRlN2Y3NzhmNDM4YmNj
ZGNhOGNjZS4uNTM2MzcwM2I4Y2I0M2MyYmQ5MzAwZmI2NWE5NzQ0ZjQ4NWRkZWU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTA2LDEwICsxMDYsMTEgQEAg
Q29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVS
TExpZmV0aW1lSWZOZWNlc3NhcnkoUmUKIAogICAgIC8vIENyZWF0ZSBhIG5ldyB0ZW1wb3Jhcnkg
YmxvYlVSTCBpbiBjYXNlIHRoaXMgb25lIGdldHMgcmV2b2tlZCBkdXJpbmcgdGhlIGFzeW5jaHJv
bm91cyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KICAgICBVUkwgdGVtcG9yYXJ5QmxvYlVS
TCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTCgmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKTsKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5
QmxvYlVSTCwgcmVxdWVzdC51cmwoKSk7CisgICAgYXV0byBzZXNzaW9uSUQgPSBtX2ZyYW1lLmRv
Y3VtZW50KCktPnNlc3Npb25JRCgpOworICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwsIHJlcXVlc3QudXJsKCkpOwogICAgIHJlcXVl
c3Quc2V0VVJMKHRlbXBvcmFyeUJsb2JVUkwpOwotICAgIHJldHVybiBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+KFt0ZW1wb3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0g
ewotICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9i
VVJMKTsKKyAgICByZXR1cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0
ZW1wb3JhcnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0geworICAgICAgICBi
bG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JV
UkwpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaAppbmRleCAyZTg5M2JkY2M4OGEzMWZjOWViNGE5ZjM0YzlkZDc4YjY5YzQ4
Y2ZkLi42NjBhNzk2ZDBiMmQ4OTg2MjUxYjgwNmQzOTEzYmY5MTQ1NGU5ZTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDYgKzMx
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBj
bGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKK2NsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CiAKIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKQEAg
LTQ2LDI3ICs0OCwyNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVi
bGljOgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVj
aWZpZWQgZmlsZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJl
ZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVS
TCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQg
c3JjVVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgPSAwOwogCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlk
ZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwgb3IsIGlmIG5vbmUgZm91bmQsIHJlZmVy
cmluZyB0byB0aGUgZmlsZSBmb3VuZCBhdCB0aGUgZ2l2ZW4gcGF0aC4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSA9IDA7CiAKICAgICAvLyBOZWdhdGl2ZSBzdGFydCBhbmQgZW5kIHZhbHVlcyBz
ZWxlY3QgZnJvbSB0aGUgZW5kLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JT
bGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgZW5kKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKaW5kZXggMTI5MDk1YjQ0NmE0NGYyODAzZWExMDE4YzI2ZGI3NTE4NTI3MDFhNS4uNWIy
MmJkMTY4YzNlYTUzYTkyY2E0YWU4OTQ0MmU5YjkxMTQ0ODVhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC01NCwx
MiArNTQsMTIgQEAgQmxvYlJlZ2lzdHJ5SW1wbDo6fkJsb2JSZWdpc3RyeUltcGwoKSA9IGRlZmF1
bHQ7CiAKIHN0YXRpYyBSZWY8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRs
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9i
UmVnaXN0cnkoKSkuY3JlYXRlUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50KTsKKyAgICBy
ZXR1cm4gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5jcmVhdGVSZXNvdXJjZUhh
bmRsZShyZXF1ZXN0LCBjbGllbnQpOwogfQogCiBzdGF0aWMgdm9pZCBsb2FkQmxvYlJlc291cmNl
U3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIEJs
b2JEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVn
aXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8qIGJs
b2JEYXRhID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5nZXRCbG9iRGF0YUZy
b21VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGJsb2JEYXRhLCByZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogfQogCkBAIC0zNDMsNCArMzQzLDE5IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVC
bG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0CiAgICAg
fSk7CiB9CiAKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gQmxvYlJlZ2lz
dHJ5SW1wbDo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgYXV0byog
YmxvYkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBpZiAoIWJsb2JEYXRhKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiByZXN1bHQ7CisgICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9i
RGF0YS0+aXRlbXMoKSkgeworICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVt
OjpUeXBlOjpGaWxlKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpbGUoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aAppbmRleCBlMTUxZDNhZmIwNjZkYmY1YjVlZThmZWQ3ZDhhZjY4NjJlMDhiZTg2Li5kYjlkNmRm
NzBiNzhkMTUzNTQ5NzAyMzZjNzVkMTBmMzQ2OWU4ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAog
Ly8gQmxvYlJlZ2lzdHJ5SW1wbCBpcyBub3QgdGhyZWFkLXNhZmUuIEl0IHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBmcm9tIG1haW4gdGhyZWFkLgotY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lz
dHJ5SW1wbCBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgQmxvYlJlZ2lzdHJ5SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5SW1wbCgpOwpAQCAtNTgsMTcgKzU4LDE2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3Qg
QmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwog
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVy
cmlkZTsKLSAgICBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVm
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYpOwogCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNv
bnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25z
dCBVUkwmKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKTsKIAogICAgIHN0cnVjdCBC
bG9iRm9yRmlsZVdyaXRpbmcgewogICAgICAgICBTdHJpbmcgYmxvYlVSTDsKQEAgLTc2LDYgKzc1
LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBib29sIHBvcHVsYXRlQmxvYnNGb3JGaWxlV3Jp
dGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxCbG9iRm9yRmlsZVdy
aXRpbmc+Jik7CisgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxl
c0luQmxvYihjb25zdCBVUkwmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZDZmMjkxNjFhNDdkYjU0ZjRkNGZhYmExNDUxZmQ5
YjY1MjE3MDE3YS4uZDcxYjFlZGNjZmNhZDE4YzVlZWM3MDJlMmYxZWVkZjdmOTZiNjNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI4Niwx
NCArMjg2LDE0IEBAIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gTGF0aW4xRW5jb2RpbmcoKS5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBw
ZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9y
bURhdGEsIGNvbnN0IFVSTCYgdXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJs
b2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBV
UkwmIHVybCkKIHsKLSAgICBpZiAoIWJsb2JSZWdpc3RyeS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkg
eworICAgIGlmICghYmxvYlJlZ2lzdHJ5KSB7CiAgICAgICAgIExPR19FUlJPUigiVHJpZWQgdG8g
cmVzb2x2ZSBhIGJsb2Igd2l0aG91dCBhIHVzYWJsZSByZWdpc3RyeSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0
cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBhdXRv
KiBibG9iRGF0YSA9IGJsb2JSZWdpc3RyeS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CiAgICAg
aWYgKCFibG9iRGF0YSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBk
YXRhIGZyb20gYSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcg
QEAgc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lz
dHJ5LCBGb3JtRGF0YSYgZm9ybURhdGEsIGMKICAgICB9CiB9CiAKLVJlZjxGb3JtRGF0YT4gRm9y
bURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkK
K1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnkpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgYW55IGJsb2Jz
IG5lZWRzIHRvIGJlIHJlc29sdmVkLCBvciB3ZSBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLgogICAg
IGJvb2wgaGFzQmxvYiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCmluZGV4IDIwYmY2MmUyMTAwMGY1NTM2YTU5YzY5YjZjNTI1OTIwNTlhNWYzM2Yu
LjdjNjg2ZThiNDIzYjM2ZGU4YjEyZjEwYjU3ZGYxOGRlM2U0MDk1YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBCbG9iUmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0
cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlc29sdmUgYWxsIGJs
b2IgcmVmZXJlbmNlcyBzbyB3ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KICAgICAvLyBJZiB0
aGUgRm9ybURhdGEgaGFzIG5vIGJsb2IgcmVmZXJlbmNlcyB0byByZXNvbHZlLCB0aGlzIGlzIHJl
dHVybmVkLgotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKEJsb2JSZWdpc3RyeSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4g
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3RyeUltcGwqKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIEZvcm1EYXRhRm9yVXBsb2FkIHByZXBhcmVGb3JVcGxvYWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKaW5kZXggNDdmMTU0MThmMmFkNGQ1Zjg1ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNC4u
NTNmZWEwNTYzNTk4YWMxODk1ZTk2NzY0MzcyYTE3ZTdkOWQyZWJlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2so
Q0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIAogUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURh
dGEmIGZvcm1EYXRhKQogewotICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJl
c29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKSk7CisgICAgYXV0byByZXNvbHZlZEZv
cm1EYXRhID0gZm9ybURhdGEucmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGJsb2JSZWdpc3RyeSgpLmJs
b2JSZWdpc3RyeUltcGwoKSk7CiAgICAgYXV0byBkYXRhRm9yVXBsb2FkID0gcmVzb2x2ZWRGb3Jt
RGF0YS0+cHJlcGFyZUZvclVwbG9hZCgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVu
dCBsZW5ndGggc28gQ0ZOZXR3b3JrIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0
YVN0cmVhbS5jcHAKaW5kZXggZGQ2M2E0YWI0MjcwM2Y2ZTk0MmY4ZWY5NTUxMzZhODZiY2RmNjY1
MS4uMmJiYTVhNmMzYTRiMjY5NWViOWI0ZTEwNWY4NTJkNTE0ZThiZjhjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0
YVN0cmVhbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQ3VybEZvcm1EYXRhU3RyZWFtOjpDdXJsRm9y
bURhdGFTdHJlYW0oY29uc3QgRm9ybURhdGEqIGZvcm1EYXRhKQogICAgIG1fZm9ybURhdGEgPSBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICAvLyBSZXNvbHZlIHRoZSBibG9iIGVsZW1l
bnRzIHNvIHRoZSBmb3JtRGF0YSBjYW4gY29ycmVjdGx5IHJlcG9ydCBpdCdzIHNpemUuCi0gICAg
bV9mb3JtRGF0YSA9IG1fZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0
cnkoKSk7CisgICAgbV9mb3JtRGF0YSA9IG1fZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhibG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnlJbXBsKCkpOwogfQogCiBDdXJsRm9ybURhdGFT
dHJlYW06On5DdXJsRm9ybURhdGFTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDMxYzZhMGU0ZWJh
YmNhNjIyYzc5ZWEzNmFhMTdkODcxNWY1YTk3NzQuLmU5OGJhMTg4NGY1NDVjM2U0YzU2MGUwMDc2
ODU4M2M0ODdiYjA0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKKwogICAgIGNsYXNz
IFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKQEAgLTg3LDcg
Kzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1l
c3NhZ2VIZWFkZXJzKFNvdXBNZXNzYWdlSGVhZGVycyopIGNvbnN0OwogICAgICAgICB2b2lkIHVw
ZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoU291cE1lc3NhZ2VIZWFkZXJzKik7Ci0gICAgICAg
IHZvaWQgdXBkYXRlU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKSBjb25zdDsKKyAgICAgICAgdm9p
ZCB1cGRhdGVTb3VwTWVzc2FnZShTb3VwTWVzc2FnZSosIEJsb2JSZWdpc3RyeUltcGwmKSBjb25z
dDsKICAgICAgICAgdm9pZCB1cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKTsKICAg
ICAgICAgdm9pZCB1cGRhdGVTb3VwUmVxdWVzdChTb3VwUmVxdWVzdCopIGNvbnN0OwogICAgICAg
ICB2b2lkIHVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCopOwpAQCAtMTExLDcgKzEx
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG1faW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdl
TWVtYmVycyhTb3VwTWVzc2FnZSopIGNvbnN0OwotICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSopIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSosIEJsb2JSZWdpc3RyeUltcGwmKSBjb25zdDsKICAgICAgICAg
dm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCkgeyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBC
b2R5KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggOTYwMWU2NjMxN2IwNTk0ZmI5
MDRkM2I5MTJmNjI2YzgyZjczY2FiOS4uMzM1YjNkOTJhY2YwYjk5NmQ4NDE1Mjc4ZGE4ZWE5ZDdi
M2Y0YzlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1l
c3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29u
c3QKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3Nh
Z2UqIHNvdXBNZXNzYWdlLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkpIGNvbnN0CiB7
CiAgICAgYXV0byogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmICghZm9ybURhdGEgfHwg
Zm9ybURhdGEtPmlzRW1wdHkoKSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0
CiAgICAgICAgICAgICAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmRfYnVmZmVy
KHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIHNvdXBCdWZmZXIuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkQmxvYkRhdGEmIGJsb2IpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEg
PSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JE
YXRhRnJvbVVSTChibG9iLnVybCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogYmxvYkRh
dGEgPSBibG9iUmVnaXN0cnkuZ2V0QmxvYkRhdGFGcm9tVVJMKGJsb2IudXJsKSkgewogICAgICAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlTaXplICs9IGFwcGVuZEVuY29kZWRCbG9iSXRl
bVRvU291cE1lc3NhZ2VCb2R5KHNvdXBNZXNzYWdlLCBpdGVtKTsKICAgICAgICAgICAgICAgICB9
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3Vw
TWVzc2FnZUhlYWRlcnMoU291cE1lc3NhZ2VIZWFkZXJzKiBzb3VwSGVhZGUKICAgICAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoaGVhZGVyTmFtZSksIFN0cmluZyhoZWFkZXJWYWx1
ZSkpOwogfQogCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2UoU291cE1l
c3NhZ2UqIHNvdXBNZXNzYWdlKSBjb25zdAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNv
dXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxv
YlJlZ2lzdHJ5KSBjb25zdAogewogICAgIGdfb2JqZWN0X3NldChzb3VwTWVzc2FnZSwgU09VUF9N
RVNTQUdFX01FVEhPRCwgaHR0cE1ldGhvZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsKIApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZShT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgc291cF9tZXNzYWdlX3NldF91cmko
c291cE1lc3NhZ2UsIHVyaS5nZXQoKSk7CiAKICAgICB1cGRhdGVTb3VwTWVzc2FnZU1lbWJlcnMo
c291cE1lc3NhZ2UpOwotICAgIHVwZGF0ZVNvdXBNZXNzYWdlQm9keShzb3VwTWVzc2FnZSk7Cisg
ICAgdXBkYXRlU291cE1lc3NhZ2VCb2R5KHNvdXBNZXNzYWdlLCBibG9iUmVnaXN0cnkpOwogfQog
CiB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdl
KiBzb3VwTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDgwZmUxYTJkZGMzZTEzYTAy
MGIyNTY0YTYyZGM1NTNmMGI1ZDQ0ZDAuLmZmZmI0NzM1ZGIyMWVkNTRhODBiNGQwM2Y0ZDRlNzA0
NTQ2YmY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1
ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKLSNpbmNsdWRl
ICJOZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtT
ZXNzaW9uLmgiCkBAIC01NSwxMCArNTQsMTAgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIHBhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNy
ZWRlbnRpYWxzOwogICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya0Jsb2JS
ZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOworICAgICAgICBwYXJhbWV0ZXJz
LmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkt
PmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRl
cnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29y
a1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCks
IHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQs
IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElE
LCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5i
bG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdl
cjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6
OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDM4
NmM5ZTc2ZmVjOTM2YzE1NGVmNzRhZmFhZDFiODUwNmE3YTU3ZjQuLjc0ZWQxM2JlNjEzZDcxZmQz
MzI0MTY5NWU1ZGIzNjE2YzI0NTA4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC01NSw3ICs1NSw2
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CiBj
bGFzcyBEb3dubG9hZDsKLWNsYXNzIE5ldHdvcmtCbG9iUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGlu
Z0Rvd25sb2FkOwpAQCAtNzUsNyArNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElE
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgTmV0d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKGNv
bnN0IFBBTDo6U2Vzc2lvbklEJikgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIE5ldHdvcmtC
bG9iUmVnaXN0cnkmIG5ldHdvcmtCbG9iUmVnaXN0cnkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0
ID0gMDsKICAgICAgICAgdmlydHVhbCB1aW50MzJfdCBkb3dubG9hZE1vbml0b3JTcGVlZE11bHRp
cGxpZXIoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggNjM5OThkNTg2
ODE1ODg1ODY1OWFkOTJhYzIwMDUzYTIzNmUwNjYzNC4uNzY0YWU5NGVmMGY0NDRhODFlMDViNmIy
OTg4N2Y3Yzk4NmM4ZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTY2LDIwICsx
NjYsNCBAQCBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDbwogICAgIHJldHVybiBmaWxlc0luQmxvYih1
cmwpOwogfQogCi1WZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtC
bG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKQotewotICAgIEFTU0VSVCht
X2Jsb2JSZWdpc3RyeS5pc0Jsb2JSZWdpc3RyeUltcGwoKSk7Ci0gICAgQmxvYkRhdGEqIGJsb2JE
YXRhID0gbV9ibG9iUmVnaXN0cnkuZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7Ci0gICAgaWYgKCFi
bG9iRGF0YSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0OwotICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBp
dGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJs
b2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5m
aWxlKCkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdp
c3RyeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjRjZmVkOWRhZjc5ODAzYmM1
YWY4MTVmODQ5YmNhMmExMGNlN2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1w
bC5oPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7Ci1jbGFzcyBC
bG9iUGFydDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwotY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKLQotY2xhc3MgTmV0d29y
a0Jsb2JSZWdpc3RyeSB7Ci1XVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5
KTsKLXB1YmxpYzoKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7Ci0gICAgfk5ldHdvcmtCbG9i
UmVnaXN0cnkoKTsKLQotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3Qg
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nv
bm5lY3Rpb25DaGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0
X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Ci0gICAgdWludDY0X3QgYmxv
YlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAg
dm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwotCi0gICAg
dm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25z
dCBVUkwmKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVSTCYpOwotICAgIAotICAgIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9Ci0KLXBy
aXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiwgSGFzaFNldDxVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKLSAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlvbjsKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJ
bXBsIG1fYmxvYlJlZ2lzdHJ5OwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA5YjFiOWI4NjA0MzhkOWI2YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi4yZTRmNTNkMmFk
YzBlODUyMDI2YjAzNzFiNTE1NGQ0YjNjODk5NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMzAxLDcgKzMwMSw2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogICAgIG1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7CiAKLSAgICBt
X25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0RpZENsb3NlKCp0aGlzKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygqdGhpcyk7CiAKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAt
Mzc0LDEzICszNzMsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5k
U3VzcGVuc2lvbigpCiAKIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihwYXJhbWV0
ZXJzLnNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byYgYmxvYlJlZ2lzdHJ5ID0gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCk7CisKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzOwog
ICAgIGlmIChhdXRvKiBib2R5ID0gcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBCb2R5KCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogYm9keS0+ZWxlbWVudHMoKSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIGJsb2JEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkQmxvYkRhdGE+KGVsZW1lbnQuZGF0YSkpCi0gICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5k
VmVjdG9yKG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxv
YigqdGhpcywgYmxvYkRhdGEtPnVybCkpOworICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZl
Y3RvcihibG9iUmVnaXN0cnkuZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9
Ci0gICAgICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVy
cy5yZXF1ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9uZXR3
b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpKSk7CisgICAg
ICAgIGNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1
ZXN0KS5zZXRIVFRQQm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoJmJsb2JSZWdpc3Ry
eSkpOwogICAgIH0KIAogICAgIHJldHVybiBmaWxlczsKQEAgLTU2OCw2NyArNTczLDg5IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3Mo
KSwgc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBl
eHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdp
c3RlckZpbGVCbG9iVVJMKCp0aGlzLCB1cmwsIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZN
b3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZl
Y3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwsIFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJC
bG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwg
c3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9i
VVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKCp0
aGlzLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJh
Y2tlZFBhdGgsIG51bGxwdHIpLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwg
aW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya0Jsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKCp0aGlzLCB1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCku
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3Mt
Pm5ldHdvcmtCbG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsKTsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+
YmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAogdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5i
bG9iU2l6ZSgqdGhpcywgdXJsKSk7CisgICAgYXV0byogYmxvYlJlZ2lzdHJ5ID0gbmV0d29ya1By
b2Nlc3MoKS5ibG9iUmVnaXN0cnkoKnRoaXMpOworICAgIGlmICghYmxvYlJlZ2lzdHJ5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihibG9iUmVnaXN0cnktPmJsb2JT
aXplKHVybCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAg
cmV0dXJuOworCiAgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxl
UmVmZXJlbmNlczsKICAgICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBmaWxl
UmVmZXJlbmNlcy5hcHBlbmRWZWN0b3IobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdp
c3RyeSgpLmZpbGVzSW5CbG9iKCp0aGlzLCB7IHsgfSwgdXJsIH0pKTsKKyAgICAgICAgZmlsZVJl
ZmVyZW5jZXMuYXBwZW5kVmVjdG9yKHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9i
KHsgeyB9LCB1cmwgfSkpOwogCiAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMp
CiAgICAgICAgIGZpbGUtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKLSAgICBtX25ldHdvcmtQ
cm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
YmxvYlVSTHMsIFtmaWxlUmVmZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZmlsZU5h
bWVzKSBtdXRhYmxlIHsKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgW2ZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVm
ZXJlbmNlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8mJiBmaWxlTmFtZXMpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlUmVmZXJlbmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShmaWxlTmFtZXMpKTsKICAgICB9KTsKIH0K
IAotVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0g
ICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0lu
QmxvYigqdGhpcywgdXJsKTsKLX0KLQotV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JSZWdpc3RyeSgpCi17Ci0gICAgcmV0dXJuIG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsKLX0K
LQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCBkN2IyZjFiNjNiYzdiMDRmZTAzMGUwMzY1ZTIxMzZmNzVhYjQ4Y2U2Li44ZmU5
ZjMyYzllZmM2MmZkM2M1M2UwYjEyYzJkZDVkMmM0NWRlMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0xMzgsOCArMTM4LDYgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5S
ZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFja2luZ1Jl
c291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGwmIGJsb2JSZWdpc3RyeSgpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7CiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXNvbHZlQmxvYlJlZmVyZW5j
ZXMoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmKTsKIAogICAgIHZvaWQgd2Vi
UGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKTsKQEAgLTE4MywxNCArMTgxLDE0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAg
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBp
bnQ2NF90IGVuZCk7CiAgICAgdm9pZCBibG9iU2l6ZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmEyYzMxYTQxM2FmNjIxOTQ5M2NkNGNlYTJiYzdjNGFm
YTkyMDU5MC4uMWU3N2M4YWI5ODQ0OWZmMDRlZmFiNzkzMDVkNTEzOGRlYmQ4NWRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00MSwxNCArNDEsMTQg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3lu
Y2hyb25vdXMKICAgICBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwg
dXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAotICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVy
bCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lv
bkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJs
LCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBl
KQotICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9vbCBz
aG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBT
dHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoVVJMIHVybCwg
VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJs
b2JVUkwoVVJMIHVybCkKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFZlY3RvcjxXZWJDb3Jl
OjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJC
bG9iVVJMRnJvbVVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNV
UkwpCisgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgs
IFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKQorICAgIFVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIHVybCkKICAgICBCbG9iU2l6ZShVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6
ZSkgU3luY2hyb25vdXMKLSAgICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3Ry
aW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBX
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwog
CiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJs
ZWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggOWNiNGE5MjUyMjA5MDViNGMyMWE0Zjc2YWU3NzZhZTE0NTAyNWY4Ny4uYTk4Zjcw
ZmE5OWE1NjUwMWM3YzFkYWY1MjlhZWViMDcwOWQyYzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTYxMiw2ICs2MTIsMTMgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQm
IHNlc3Npb25JRCkKICAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShzZXNzaW9uSUQp
OwogfQogCitCbG9iUmVnaXN0cnlJbXBsKiBOZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQoreworICAgIC8vIEZJWE1F
OiBEZXByZWNhdGUgdGhpcyBtZXRob2QgYW5kIHVzZSBzZXNzaW9uSUQgLT4gTmV0d29ya1Nlc3Np
b24gLT4gYmxvYiByZWdpc3RyeS4KKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb25C
eUNvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOworICAgIHJldHVybiBzZXNzaW9u
ID8gJnNlc3Npb24tPmJsb2JSZWdpc3RyeSgpIDogbnVsbHB0cjsKK30KKwogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkdW1wUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5
NGE3ZmI5ZGU4NTUzNTMyM2ZhODIxNzA4Li45NDg2OTA0NjVhYTE2NDBiOWFhZWVhZWZhOGIyZTQ0
YmM2NTJkMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1
ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5oIgotI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMzI3LDcgKzMy
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8dWludDY0X3Q+KT4mJik7CiAKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5JiBuZXR3
b3JrQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5
OyB9CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5KE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0
aW9uKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAg
dm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpAQCAtNDk4LDcgKzQ5Nyw2IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPj4g
bV9uZXR3b3JrU2Vzc2lvbnM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IG1fbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKLSAgICBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5IG1fbmV0d29ya0Jsb2JSZWdpc3RyeTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAppbmRleCBmMjM0ZTI5NDFkM2UxZTUxNmVhMzhiNmRmNmVjNTNlYzIwYTc1MDE3
Li4wYzg0NmRiMDI0MmYzYTc1MTNlNmMzYjExMWVhYWMxZDg4NjBlYzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTIsMTUgKzUyLDE0IEBAIEJsb2JSZWdpc3RyeSog
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0
cnkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKLSAgICAgICAgdm9pZCByZWdpc3Rl
ckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0gICAgICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmlu
YWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWwgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgICAgICB2b2lkIHdyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgfTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8RW1wdHlCbG9iUmVnaXN0cnk+IGJsb2JSZWdpc3RyeTsKICAgICByZXR1cm4gJmJsb2JS
ZWdpc3RyeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzZGJmNDdhYjI0ZjFmZDdkZGU0NThhZjA3
OWUwMGU4YTU5ZTA5NTAwLi41NTdmYjZkYjFhZmU5NGE3ZmNiODFhZGQzNTlmMTE1NGI0YmVlYzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0zMDAsOSArMzAwLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RM
b2EKICAgICBpZiAocGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKQog
ICAgICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9uZXR3b3JrTG9h
ZENoZWNrZXItPnN0b3JlZENyZWRlbnRpYWxzUG9saWN5KCk7CiAKLSAgICBpZiAocmVxdWVzdC51
cmwoKS5wcm90b2NvbElzQmxvYigpKQotICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJl
bmNlcyA9IG1fY29ubmVjdGlvbi0+ZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkp
OwotCiAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0
d29ya1Nlc3Npb24gJiYgcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAg
ICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMuc2Vzc2lvbklEKSk7CkBAIC0zMTYsOCArMzEzLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAocmVxdWVzdC51cmwoKS5w
cm90b2NvbElzQmxvYigpKQorICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9
IG5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVl
c3QoKS51cmwoKSk7CisKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
OwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhp
cywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpu
ZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1
YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNj
cmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZh
ZTNmYTE3YjJkNTAuLmM0ZTEwMmU3NzUyN2VlYzFmYWY1MWU3YjA0ZTBlOTU3OTQ2NjdhMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNr
QXR0cmlidXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMTQsNiArMTE1LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2sm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikg
eyB9CiAKKyAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKSB7IHJl
dHVybiBtX2Jsb2JSZWdpc3RyeTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24o
TmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYp
OwogCkBAIC0xNDMsNiArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0ludmFsaWRh
dGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBt
X2NhY2hlOworICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1
NWU5MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3Li5kNDZjNTAzZDgxZTk4MzRlNWQyYTI1
NjYwYzg3MjNlYWU3ZTE3MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCiAKICAgICB1bnNpZ25lZCBtZXNzYWdlRmxhZ3MgPSBTT1VQX01FU1NBR0Vf
Tk9fUkVESVJFQ1Q7CiAKLSAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNv
dXBNZXNzYWdlLmdldCgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdl
KHNvdXBNZXNzYWdlLmdldCgpLCBtX3Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpKTsKICAgICBpZiAo
bV9zaG91bGRDb250ZW50U25pZmYgPT0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZm
Q29udGVudCkKICAgICAgICAgc291cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2Fn
ZS5nZXQoKSwgU09VUF9UWVBFX0NPTlRFTlRfU05JRkZFUik7CiAgICAgaWYgKG1fdXNlci5pc0Vt
cHR5KCkgJiYgbV9wYXNzd29yZC5pc0VtcHR5KCkgJiYgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAK
aW5kZXggNzM1NTI1N2JlZGExZTVhZGNkZTU1NGU2YmQzM2JjZTllMmY2MGQwZC4uMzBmYzhhNTM1
NWQwODQ1MmFjMzYxYjFkY2VhOTdjODRmMzYwN2ZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Np
b25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+IHNvdXBNZXNzYWdlID0gYWRvcHRHUmVm
KHNvdXBfbWVzc2FnZV9uZXdfZnJvbV91cmkoU09VUF9NRVRIT0RfR0VULCBzb3VwVVJJLmdldCgp
KSk7Ci0gICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSk7Cisg
ICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSwgYmxvYlJlZ2lz
dHJ5KCkpOwogICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndzcyIpKQogICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KHNvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdf
Q0FMTEJBQ0sod2ViU29ja2V0TWVzc2FnZU5ldHdvcmtFdmVudENhbGxiYWNrKSwgbnVsbHB0cik7
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291
cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDViNGZmNjljNTRmNTAyN2FjOWU0NGQ5MDU4MDFkYjNiZjlhZGFmMjMuLmFlYjU4OThlNGU0MDIy
N2E5MzZmNzU4YjQwMjFmODM3OTg0NWM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsOCArNTcsNiBA
QCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmNwcAotCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTE2NjQwNjBjYTkzN2I3ODczYjNlNGU0ZTBiZjQ2
ZGU3ZjFmODdmOC4uNWQ1NmEyYTE3OThlZDFhM2JkOTQ5OWZhOGUwOTVhZTQ2YzljYmEzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MzE2LDcgKzEzMTYsNiBAQAogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0
UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFF
QzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4u
c2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzkyNjMxMDBG
MEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggKi87IH07
Ci0JCUExMDVEMEQxMjEyNzM0QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA1RDBEMDIxMjcz
NEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovOyB9OwogCQlBMTE1REM3MjE5
MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgw
NzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50
RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFu
YWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk4NSw3
ICszOTg0LDYgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERG
Vmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9X
S1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMDVEMEQwMjEyNzM0
QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURD
NkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3Vt
ZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjE5LDcgKzQ2MTcs
NiBAQAogCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NjkxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3Ry
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JSZWdp
c3RyeVByb3h5LmNwcDsgcGF0aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4NzZBMTZENkNBNjkwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCbG9iUmVnaXN0cnlQcm94eS5oOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzk4Qzc3MTZF
NjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMTE2QjlDMTM5MDAxQzQyRjEgLyogY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMjE2
QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMThDOTJGMzEy
REI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaW50SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NjY0LDcgKzY2NjEsNiBAQAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQwMEQ0MTE4MyAvKiBDdXN0
b21Qcm90b2NvbHMgKi8sCiAJCQkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERvd25sb2Fk
cyAqLywKIAkJCQlCQzgyODM3QzE2QjQ1REE1MDBBMjc4RkUgLyogRW50cnlQb2ludCAqLywKLQkJ
CQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQSSAqLywKIAkJCQk5MzkyODhFMDIx
NDA0REYwMDBFQkJBMzMgLyogSW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTExREQwMEVE
ODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywK
QEAgLTkwMjQsMTUgKzkwMjAsNiBAQAogCQkJbmFtZSA9IEZpbGVBUEk7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQ
SSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTE3OThD
NzcxNkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovLAotCQkJCUEx
MDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8sCi0JCQkp
OwotCQkJcGF0aCA9IEZpbGVBUEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owog
CQlFMTk5ODc1QjE0MkJGOUNGMDBCQjJERTcgLyogUERGICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTk0ODAsNyArOTQ2Nyw2IEBACiAJCQkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNUJDQjkyMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTA1RDBEMTIxMjczNEIyMDAzNEY2
QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0Mx
QTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5
RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29k
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCAyNGUzNTU5Y2ZmMDY5YmQzMTc5
MWVlNjUxNzhlYWY0ZTRkYzBlNDdkLi4yZjNiNmJhODMxNDc4NDVlNjg2MmM0ZjkwMzk3ZDI1MWM2
NWIxN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3Ry
eVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlOwogCkBAIC00NCwzNyArNDQsMzMgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmUK
ICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVy
bCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBmaWxlLT5wYXRoKCksIGV4dGVu
c2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94
eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxv
YlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94
eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBl
KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywg
Y29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKLSAgICBib29sIHNob3VsZEJ5cGFzc0Nv
bm5lY3Rpb25DaGVjayA9IGZhbHNlOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBz
aG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2sgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCk7Ci0jZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1
cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrIH0sIDApOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVn
aXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHNlc3Npb25JRCwgdXJsLCBzcmNVUkwgfSwgMCk7CiB9CiAK
LXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgp
LCBjb250ZW50VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoc2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSks
IDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lz
dGVyQmxvYlVSTCh1cmwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwg
dXJsKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBzdGFydCwg
ZW5kKSwgMCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6Ymxv
YlNpemUoY29uc3QgVVJMJiB1cmwpCkBAIC04NSw5ICs4MSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJu
IHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVS
THMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5oCmluZGV4IDZhYmVlMzY3NDhkZmVjYzJjYWQ0NmNjYzIyMmE3NGM1MTc2
ZDg5ZDQuLmQ3NjYxNTg3ZTNlNzQzODMyZTIzMjVjNjc5NmNmYTM0NWJiOTU2YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCbG9iUmVn
aXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGlj
OgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25n
IGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVt
cG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCBkOWFkY2MyMWE4YTk2YjJhYTU0NTM2NmRlMDk1ZDA0N2M2MjU3ZWRmLi5hZmQ3NDdhNWI5OTE4
NTcwMzA4M2ZhYzU3MGZjNDhiNGU1Y2JlZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6UwogewogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNv
dXJjZUVycm9yJiYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggMGNkZTU5OWIxZTA0OWQ4ODMxM2EwZDAzMDVmODAyYWY1Mjc5ZGNk
OS4uNjI2ZGFiMTFiMmRmMjk5NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKIAotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIq
IGV4aXN0aW5nSURCQ29ubmVjdGlvblRvU2VydmVyRm9ySWRlbnRpZmllcih1aW50NjRfdCBpZGVu
dGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdl
dChpZGVudGlmaWVyKTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAwOGE5
MDI2MjBjNjZiM2NmZWM3ZTEwNGEwMzQ4ZTNmMjY0MzE0NGNjLi5kZWY5OGRhZTJmZWI0NDgwN2Vm
YjMyMTdhY2RjY2VjYmI2NTk5ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBA
IC02Miw5ICs2MiwyNSBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAorY2xh
c3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7Citwcml2YXRl
OgorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQ
YXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7
IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxv
YlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRl
bnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNp
emUoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXpl
KHVybCk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bCB7IG1fYmxvYlJlZ2lzdHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwqIGJs
b2JSZWdpc3RyeUltcGwoKSBmaW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7IH0KKworICAg
IEJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7Cit9OworCiBCbG9iUmVnaXN0cnkqIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICByZXR1cm4g
bmV3IFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw7CisgICAgcmV0dXJuIG5ldyBXZWJCbG9iUmVn
aXN0cnk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA5OGM5YzA5Mjk4NmVkYWM0NjRlMzY0N2FlZDk4Zjgy
MzgxYjI4NzJhLi5iNzY5MGRmYmRmZjE5YWM4ZTQ2NWRmMGFjOWQ5MzYyMDYyYjM0ZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpAQCAt
NTksNyArNjAsMjMgQEAgUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Ns
YXNzIFdlYkJsb2JSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgeworcHJpdmF0
ZToKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9i
VVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9i
UGFydD4mJiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JS
ZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUp
OyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJs
b2JVUkwodXJsLCBzcmNVUkwpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250
ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JT
bGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JT
aXplKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6
ZSh1cmwpOyB9CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwgeyBtX2Jsb2JSZWdpc3RyeS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOyB9CisKKyAgICBCbG9iUmVnaXN0cnlJbXBsKiBi
bG9iUmVnaXN0cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CisKKyAg
ICBCbG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5OworfTsKKwogQmxvYlJlZ2lzdHJ5KiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgcmV0dXJu
IG5ldyBCbG9iUmVnaXN0cnlJbXBsOworICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lzdHJ5Owog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376143</attachid>
            <date>2019-08-13 00:49:13 -0700</date>
            <delta_ts>2019-08-13 03:06:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-200567-20190813094910.patch</filename>
            <type>text/plain</type>
            <size>96599</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwZWJmYzEwNDczZDli
Y2U5NzM0ODNkMmY4M2ZiOTEyMGFmZjY5OC4uNzhkOGEyMjFlMWJmM2UzYjAzZjdkODkyNDFlMWYy
MGNhMjg2ZDA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMg
c2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
MTIwMjEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgUGFzcyBzZXNzaW9uIElEcyB0byBhbGwgQmxvYlJlZ2lzdHJ5IG1ldGhvZHMgaW4gcGFydGlj
dWxhciBUaHJlYWRhYmxlTG9hZGVyUmVnaXN0cnkuCisgICAgICAgIFRoZSBvbmx5IGV4Y2VwdGlv
biBpcyBibG9iU2l6ZSB3aGljaCBzaG91bGQgYmUgZGVhbHQgd2l0aCBhIGZvbGxvdy11cCBwYXRj
aC4KKyAgICAgICAgYmxvYlNpemUgYmxvYiByZWdpc3RyeSBpcyByZXRyaWV2ZWQgZnJvbSB0aGUg
Y29ubmVjdGlvbiAtPiBzZXNzaW9uSUQgbWFwIGluIE5ldHdvcmsgUHJvY2Vzcy4KKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6On5GZXRjaExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RhcnRMb2FkaW5nQmxvYlVSTCk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjp+RmlsZVJlYWRlckxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpzdGFydCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNr
ZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCbG9iUmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEJsb2JSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6ZmlsZXNJbkJsb2Ig
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kQmxvYlJlc29sdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNv
bHZlQmxvYlJlZmVyZW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlIGNvbnN0
KToKKwogMjAxOS0wOC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBGcmFtZUxvYWRlcjo6b3BlbiBjYW4gZXhlY3V0ZSBzY3JpdHBzIHZpYSBzdHlsZSByZWNh
bGMgaW4gRnJhbWU6OnNldERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhNGE4MTdmMDliMjRiZDhiNzI0
OTEzOGZjYzliNzQ3ZjEwNTU4ZDIuLmY0NTA5ZmJlZWQxNzc5NTNkZjQ4YTBjYTdhZjIxYmJhNjg1
N2IxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTktMDgtMTIgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEJsb2IgcmVnaXN0cmllcyBzaG91bGQg
YmUga2V5ZWQgYnkgc2Vzc2lvbiBJRHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDU2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQxMjAyMTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNb3Zl
IGJsb2IgcmVnaXN0cnkgdG8gTmV0d29ya1Nlc3Npb24gc28gdGhhdCBpdCBpcyBwYXJ0aXRpb25l
ZCBieSBzZXNzaW9uIElELgorICAgICAgICBJbiBjYXNlIHNlc3Npb24gSUQgaXMgbm90IGdpdmVu
IHRocm91Z2ggSVBDLCB1c2UgdGhlIGNvbm5lY3Rpb24gYXMga2V5IHRvIGdldCB0aGUgbmV0d29y
ayBzZXNzaW9uLgorICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIGJsb2JTaXplLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Ymxv
YlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6YmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpj
cmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRl
V2ViU29ja2V0VGFzayk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKFdlYktp
dDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktp
dDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oOgorCiAyMDE5LTA4LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGJhZCBSRUxFQVNFX0xPR19FUlJPUiB1bmRlciBQcm92aXNpb25h
bFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDY4NTUzNTY2Mjg4MWU3MTI3ODc2OWU0MTZiNDllOTgxZmE5NTdmMmIuLjNmYzhm
ZGVjM2E0ZDBkYTZmOGJmYjJiZjRiOTAyMjAyMDAwZmQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3VsZCBiZSBrZXll
ZCBieSBzZXNzaW9uIElEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAg
ICAgSWdub3JlIHNlc3Npb25JRCBwYXJhbWV0ZXIgZm9yIFdLMS4KKwogMjAxOS0wOC0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aHJlYWRpbmcgYXNz
ZXJ0aW9ucyB0byBSZWZDb3VudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjUx
ZTA0NDJlNTZiZjcyM2EwMWIzMGRlODhmYmM4MTU4MzE4NDQwOS4uMTVmZTdhZmZlZmRhOWZhOGY4
OWU5ODc3ZTU2N2FiNDNhNWM1ZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24g
SURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTIwMjEyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVCbG9iUmVnaXN0cnkpOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGMwZGJmNWZlNTc4ZjFm
NTliNmY0YzFiMDdhYmMwMWU3ZDI1MWQ3NzkuLmQ4ZGI5MGNjYjE0NDk0NjBlMjg3MzgxZmRmNzRi
M2EyYjIwMjlkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEZldGNoTG9hZGVy
Ojp+RmV0Y2hMb2FkZXIoKQogewogICAgIGlmICghbV91cmxGb3JSZWFkaW5nLmlzRW1wdHkoKSkK
LSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV91cmxG
b3JSZWFkaW5nKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwoKm1fc2Vzc2lvbklELCBtX3VybEZvclJlYWRpbmcpOwogfQogCiB2b2lkIEZldGNoTG9h
ZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCbG9iJiBi
bG9iKQpAQCAtNjQsNyArNjQsOCBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydExvYWRpbmdCbG9i
VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsK
KyAgICBtX3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vzc2lvbklEKCk7CisgICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgY29udGV4dC5zZWN1cml0
eU9yaWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwogCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcklk
ZW50aWZpZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDQwMTFiMzczOGM5NzliYjk3
OGFkZmRjZmNiYTg1NGNhZThjNWRmZmYuLmI2YzY1MDhjYTM3NjNlMzEzM2Q0YTNkYmQ0MTE5OGFj
YTU4NGU5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgK
QEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBGZXRjaEJvZHlDb25zdW1lciogbV9jb25z
dW1lcjsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV91cmxGb3JS
ZWFkaW5nOworICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFkMDA1NGMyODkyZDUwMTNkZjI2
YWJmZmEzZTFjMmY2N2RlZTQ4MTkuLjExNGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0
NmU3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMzU2OSwxMyArMzU2OSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJsb2JVUkxzSXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9i
c1RvRGlza0ZvckluZGV4ZWREQihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJREJWYWx1ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChoYXNCbG9i
VVJMcygpKTsKIAotICAgIC8vIEZJWE1FOiBHZXQgdGhlIHJpZ2h0IGJsb2IgcmVnaXN0cnkgZnJv
bSB0aGUgZ2l2ZW4gc2Vzc2lvbklELgotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChh
dXRvJiYgYmxvYkZpbGVQYXRocykgbXV0YWJsZSB7CisgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoc2Vzc2lvbklELCBtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAgIGlmIChibG9iRmlsZVBhdGhzLmlz
RW1wdHkoKSkgewpAQCAtMzU4Niw3ICszNTg1LDcgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXQK
ICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChtX2Jsb2JVUkxzLnNpemUoKSA9PSBibG9iRmls
ZVBhdGhzLnNpemUoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
KnRoaXMsIG1fYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcAppbmRleCAyYTA2ZDAzYmYwMzkwOGRkYzc1YjZjODkwMTUwZjY2MTg4NjRl
NGI3Li5kODkxYzcwODY4YjhjNzZhOTI5MTExN2M1M2MzMmNmNmYxN2E2NDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYi5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCBwdWJsaWM6CiB2b2lkIEJsb2JVUkxS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBibG9iKQogewogICAgIEFTU0VSVCgm
YmxvYi5yZWdpc3RyeSgpID09IHRoaXMpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCksIHB1YmxpY1VSTCwgc3RhdGlj
X2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZXNzaW9uSUQoKSwgY29udGV4dC5zZWN1cml0eU9yaWdp
bigpLCBwdWJsaWNVUkwsIHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwoKSk7CiB9CiAKLXZv
aWQgQmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBVUkwmIHVybCkKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CisgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZXNzaW9uSUQoKSwg
dXJsKTsKIH0KIAogVVJMUmVnaXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQpAQCAt
ODQsNyArODQsNyBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAs
IG1fc2l6ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2lu
dGVybmFsVVJMLCB7IH0sICB7IH0pOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKIH0KIAog
QmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJh
ZykKQEAgLTEwMSw3ICsxMDEsNyBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLAogICAgICAgICAp
OwogICAgIH0KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCht
X2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CisgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJM
LCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKQEAgLTExNSw3ICsxMTUsNyBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
YwogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwogICAgIGJsb2JQYXJ0cy5hcHBlbmQo
QmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpj
cmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQs
IG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBC
bG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBCbG9iOjpC
bG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBjb250ZQogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwogICAgIGJs
b2JQYXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOwogICAgIG1faW50ZXJuYWxV
UkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVu
dFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0
b3IsIGNvbnN0IEJsb2ImIGJsb2IpCkBAIC0xMzUsNyArMTM1LDcgQEAgQmxvYjo6QmxvYihSZWZl
cmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yLCBjb25zdCBCbG9iJiBibG9iKQogICAgICwg
bV90eXBlKGJsb2IudHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewotICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJs
b2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFy
dChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRp
b25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwg
Y29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKQEAgLTE0NSw5ICsxNDUsOSBAQCBCbG9iOjpC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBzcmNVUgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpOwogICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVy
bmFsVVJMLCBzcmNVUkwpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwobV9zZXNzaW9uSUQsIG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CiAg
ICAgZWxzZQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZChtX2ludGVybmFsVVJMLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRo
LCBtX3R5cGUpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJM
LCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTE1NiwxMiArMTU2LDEyIEBAIEJsb2I6OkJs
b2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvCiAgICAgLy8gbV9zaXplIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0
byBlbmQgLSBzdGFydCBzbyB3ZSBkbyBub3QgaW5pdGlhbGl6ZSBpdCBoZXJlLgogewogICAgIG1f
aW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQs
IGVuZCk7CiB9CiAKIEJsb2I6On5CbG9iKCkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCk7CiB9
CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iOjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuY3BwCmluZGV4IGM3MjcyM2JhNGJkZjk5MmM0Yzk3MWQ1ZTNkNTNjZjNkYjMyMDc2NWMuLmE4
ZjQ2ZDE2NmNiY2M5ZjM4MzVkNTU1ZTk4ZTg0NjExODkyYWE4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbgogICAgIGNv
bXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgbmFtZU92ZXJyaWRlLCBuYW1lLCB0eXBlKTsK
IAogICAgIGF1dG8gaW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwot
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxV
UkwsIHBhdGgsIHR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoc2Vzc2lvbklELCBpbnRlcm5hbFVSTCwgcGF0aCwgdHlwZSk7CiAKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHNlc3Npb25JRCwgV1RGTW92ZShpbnRlcm5hbFVSTCksIFdU
Rk1vdmUodHlwZSksIFN0cmluZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggODk3MTU1YTEyMjkx
ZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNy4uNGRjZDBkZDBjMDljN2YwYzBlODc0NmFkODAx
MzY2ZDhjYWU2OThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIEZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9h
ZGVyKCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0Vt
cHR5KCkpCi0gICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgbV91cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBCbG9iJiBibG9iKQpAQCAtODEsNyArODEsOCBAQCB2b2lkIEZpbGVSZWFk
ZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIEJsbwogICAgICAgICBmYWlsZWQoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBtX3VybEZv
clJlYWRpbmcsIGJsb2IudXJsKCkpOworICAgIG1fc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2Vzc2lvbklEKCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKCptX3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAogICAgIC8vIENvbnN0cnVj
dCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3Vy
bEZvclJlYWRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApp
bmRleCA3YTQyOGJlNTA1N2QyYmM2YWM0MWNlOTI5OGIyNTRmYzVhMjllMDBhLi40MTliMjA5M2M3
ZDc5MGJmMjE1M2RhMmJjZDI5MTU0ZGRiNjBkNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwMiw2ICsxMDMs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCiAgICAgVVJMIG1fdXJsRm9y
UmVhZGluZzsKKyAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiAgICAg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCiAgICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+IG1fcmF3RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDViYzliYWY3ODI3OTZiYTQzM2Q3ZTgyOWMxMGFm
Njc3MTdhYTQzOTAuLmE5NWIyNDlmOGM4NDIzZmQ3NDViYzJhYzk3YjI3YmMwNGFhM2E3MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cApAQCAtNjQsMTA5ICs2NCw5NyBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9yaWdp
bk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyB2b2lkIHBv
c3RUb01haW5UaHJlYWQoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKK3ZvaWQgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRp
YyBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4qIHF1ZXVlOwotICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIHF1ZXVlID0gbmV3IENyb3NzVGhyZWFkUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPjsKLSAgICB9KTsKLQotICAgIHF1ZXVlLT5hcHBlbmQoV1RGTW92
ZSh0YXNrKSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtdIHsKLSAgICAgICAgYXV0byB0YXNrID0gcXVldWUt
PnRyeUdldE1lc3NhZ2UoKTsKLSAgICAgICAgQVNTRVJUKHRhc2spOwotICAgICAgICB0YXNrLT5w
ZXJmb3JtVGFzaygpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJs
Lmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUg
PSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwogICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoaXNN
YWluVGhyZWFkKCkpCi0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwot
ICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRD
b3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRU
eXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNv
bnRlbnRUeXBlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi12b2lkIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0
PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRl
bnRUeXBlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRz
KQotICAgICAgICAgICAgcGFydC5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdU
Rk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwotICAgICAgICB9KTsKKyAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iUGFydHMp
CisgICAgICAgIHBhcnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtzZXNzaW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0g
V1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwo
c2Vzc2lvbklELCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIH0p
OwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCkKIHsKICAgICAvLyBJZiB0aGUgYmxvYiBVUkwgY29udGFpbnMgbnVsbCBv
cmlnaW4sIGFzIGluIHRoZSBjb250ZXh0IHdpdGggdW5pcXVlIHNlY3VyaXR5IG9yaWdpbiBvciBm
aWxlIFVSTCwgc2F2ZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHVybCBhbmQgb3JpZ2luIHNvIHRoYXQg
dGhlIG9yaWdpbiBjYW4gYmUgcmV0cml2ZWQgd2hlbiBkb2luZyBzZWN1cml0eSBvcmlnaW4gY2hl
Y2suCiAgICAgaWYgKG9yaWdpbiAmJiBCbG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAibnVsbCIp
CiAgICAgICAgIG9yaWdpbk1hcCgpLT5hZGQodXJsLnN0cmluZygpLCBvcmlnaW4pOwogCi0gICAg
aWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkwodXJsLCBzcmNVUkwpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKV0g
ewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJM
KTsKLSAgICAgICAgfSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCwgc3JjVVJMKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJs
ID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCldIHsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBz
cmNVUkwpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmws
IHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBj
b250ZW50VHlwZSk7Ci0gICAgZWxzZQotICAgICAgICBwb3N0VG9NYWluVGhyZWFkKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoLCBjb250ZW50VHlw
ZSkpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJM
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRU
eXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVk
Q29weSgpLCBmaWxlQmFja2VkUGF0aCA9IGZpbGVCYWNrZWRQYXRoLmlzb2xhdGVkQ29weSgpLCBj
b250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Npb25JRCwg
dXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRo
KSwgY29udGVudFR5cGUpOworICAgIH0pOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwm
IHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0
YXJ0LCBlbmQpOwotICAgIGVsc2UgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtuZXdVUkwg
PSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwg
c3RhcnQsIGVuZF0gewotICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UobmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwotICAgICAgICB9KTsKKyAgICBp
ZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2Uoc2Vzc2lvbklELCBuZXdVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIG5l
d1VSTCA9IG5ld1VSTC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29w
eSgpLCBzdGFydCwgZW5kXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOworICAgIH0p
OwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6YmxvYlNp
emUoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdFNpemU7
CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5KCku
YmxvYlNpemUodXJsKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHRTaXplOworICAg
IEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0gewogICAgICAgICBy
ZXN1bHRTaXplID0gYmxvYlJlZ2lzdHJ5KCkuYmxvYlNpemUodXJsKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCAmc2VtYXBob3JlLCAmcmVzdWx0U2l6ZV0gewot
ICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLmJsb2JTaXplKHVybCk7Ci0g
ICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBzZW1h
cGhvcmUud2FpdCgpOwotICAgIH0KKyAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0p
OworICAgIHNlbWFwaG9yZS53YWl0KCk7CiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6
OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1
cmwuc3RyaW5nKCkpOwogCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICBibG9iUmVn
aXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgIGVsc2UgewotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGJs
b2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7Ci0gICAgICAgIH0pOworICAgIGlm
IChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxv
YlVSTChzZXNzaW9uSUQsIHVybCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FsbE9u
TWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpOworICAg
IH0pOwogfQogCiBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OmdldENhY2hlZE9yaWdpbihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTljNzlmZTIyOTJmODk1YjMxYzYw
Zjc1NjdmZmQwNDkzZmVkYzgzMi4uMzE1ZjVjYWRiNDY2Mzg5ODBiNGMxZmQ4ZWM1YjY3ZGJlM2U0
MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3Mg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3
VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsK
LSAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKKyAgICBzdGF0
aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9y
PEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBTZWN1cml0eU9yaWdp
biosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNV
UkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7CisgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJlZGJhZDA0NzA0NjFhNThhYjVj
YjAxNGE2OGMwNDdkN2ZiMC4uN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4YTA3Yzc4ZTZjNTc5ZDY0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0yNiw4ICsy
Niw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSA8d3RmL1VSTC5oPgorCiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
aW5kZXggOGI5MWUxYzMyNGQ3OGU3MTVlOGRlN2Y3NzhmNDM4YmNjZGNhOGNjZS4uNTM2MzcwM2I4
Y2I0M2MyYmQ5MzAwZmI2NWE5NzQ0ZjQ4NWRkZWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcApAQCAtMTA2LDEwICsxMDYsMTEgQEAgQ29tcGxldGlvbkhhbmRsZXJD
YWxsaW5nU2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExpZmV0aW1lSWZOZWNlc3Nh
cnkoUmUKIAogICAgIC8vIENyZWF0ZSBhIG5ldyB0ZW1wb3JhcnkgYmxvYlVSTCBpbiBjYXNlIHRo
aXMgb25lIGdldHMgcmV2b2tlZCBkdXJpbmcgdGhlIGFzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbi4KICAgICBVUkwgdGVtcG9yYXJ5QmxvYlVSTCA9IEJsb2JVUkw6OmNyZWF0
ZVB1YmxpY1VSTCgmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCwgcmVxdWVzdC51
cmwoKSk7CisgICAgYXV0byBzZXNzaW9uSUQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNlc3Npb25J
RCgpOworICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBv
cmFyeUJsb2JVUkwsIHJlcXVlc3QudXJsKCkpOwogICAgIHJlcXVlc3Quc2V0VVJMKHRlbXBvcmFy
eUJsb2JVUkwpOwotICAgIHJldHVybiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KFt0ZW1wb3Jh
cnlCbG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0gewotICAgICAgICBibG9iUmVn
aXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKKyAgICByZXR1cm4g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMID0g
V1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRl
eCAyZTg5M2JkY2M4OGEzMWZjOWViNGE5ZjM0YzlkZDc4YjY5YzQ4Y2ZkLi42NjBhNzk2ZDBiMmQ4
OTg2MjUxYjgwNmQzOTEzYmY5MTQ1NGU5ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNs
YXNzIEJsb2JSZWdpc3RyeTsKK2NsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiAKIFdFQkNPUkVfRVhQ
T1JUIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKQEAgLTQ2LDI3ICs0OCwyNyBAQCBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVibGljOgogCiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4KLSAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYs
IFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
ID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3Bl
Y2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAw
OwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhl
IGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQgc3JjVVJMLgotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgPSAwOwogCiAgICAgLy8gUmVnaXN0ZXJzIGEgbmV3
IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50aWZpZWQgYnkgdGhlIHNw
ZWNpZmllZCBzcmNVUkwgb3IsIGlmIG5vbmUgZm91bmQsIHJlZmVycmluZyB0byB0aGUgZmlsZSBm
b3VuZCBhdCB0aGUgZ2l2ZW4gcGF0aC4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0
cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAK
ICAgICAvLyBOZWdhdGl2ZSBzdGFydCBhbmQgZW5kIHZhbHVlcyBzZWxlY3QgZnJvbSB0aGUgZW5k
LgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgYmxv
YlNpemUoY29uc3QgVVJMJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2JS
ZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgQmxvYlJl
Z2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkJsb2JSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMTI5MDk1
YjQ0NmE0NGYyODAzZWExMDE4YzI2ZGI3NTE4NTI3MDFhNS4uNWIyMmJkMTY4YzNlYTUzYTkyY2E0
YWU4OTQ0MmU5YjkxMTQ0ODVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgQmxvYlJl
Z2lzdHJ5SW1wbDo6fkJsb2JSZWdpc3RyeUltcGwoKSA9IGRlZmF1bHQ7CiAKIHN0YXRpYyBSZWY8
UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuY3JlYXRl
UmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50KTsKKyAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5
KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5jcmVhdGVSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGll
bnQpOwogfQogCiBzdGF0aWMgdm9pZCBsb2FkQmxvYlJlc291cmNlU3luY2hyb25vdXNseShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9
IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRh
dGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOworICAgIGF1dG8qIGJsb2JEYXRhID0gYmxvYlJlZ2lz
dHJ5KCkuYmxvYlJlZ2lzdHJ5SW1wbCgpLT5nZXRCbG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwo
KSk7CiAgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGJs
b2JEYXRhLCByZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCkBAIC0zNDMsNCAr
MzQzLDE5IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0CiAgICAgfSk7CiB9CiAKK1ZlY3RvcjxS
ZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gQmxvYlJlZ2lzdHJ5SW1wbDo6ZmlsZXNJbkJs
b2IoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9i
RGF0YUZyb21VUkwodXJsKTsKKyAgICBpZiAoIWJsb2JEYXRhKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7Cisg
ICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgewor
ICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpbGUoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBlMTUxZDNhZmIw
NjZkYmY1YjVlZThmZWQ3ZDhhZjY4NjJlMDhiZTg2Li5kYjlkNmRmNzBiNzhkMTUzNTQ5NzAyMzZj
NzVkMTBmMzQ2OWU4ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAogLy8gQmxvYlJlZ2lzdHJ5SW1w
bCBpcyBub3QgdGhyZWFkLXNhZmUuIEl0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIG1haW4g
dGhyZWFkLgotY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5SW1wbCBmaW5hbCA6IHB1
YmxpYyBCbG9iUmVnaXN0cnkgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5SW1w
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
QmxvYlJlZ2lzdHJ5SW1wbCgpOwpAQCAtNTgsMTcgKzU4LDE2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYs
IGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogCi0gICAgdm9pZCByZWdpc3Rl
ckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKLSAgICBib29sIGlz
QmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYp
OwogCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRl
OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAotICAgIHZv
aWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBmaWxlUGF0aHMpPiYmKTsKIAogICAgIHN0cnVjdCBCbG9iRm9yRmlsZVdyaXRpbmcg
ewogICAgICAgICBTdHJpbmcgYmxvYlVSTDsKQEAgLTc2LDYgKzc1LDcgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBib29sIHBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGluZyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3RvcjxCbG9iRm9yRmlsZVdyaXRpbmc+Jik7CisgICAgVmVj
dG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwm
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JEYXRh
Pj4gbV9ibG9iczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKaW5kZXggZDZmMjkxNjFhNDdkYjU0ZjRkNGZhYmExNDUxZmQ5YjY1MjE3MDE3YS4uZDcxYjFl
ZGNjZmNhZDE4YzVlZWM3MDJlMmYxZWVkZjdmOTZiNjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTI4NiwxNCArMjg2LDE0IEBAIFN0cmlu
ZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gTGF0aW4xRW5j
b2RpbmcoKS5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgp
KSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJs
b2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9ybURhdGEsIGNvbnN0IFVSTCYg
dXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeUltcGwqIGJs
b2JSZWdpc3RyeSwgRm9ybURhdGEmIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBp
ZiAoIWJsb2JSZWdpc3RyeS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgeworICAgIGlmICghYmxvYlJl
Z2lzdHJ5KSB7CiAgICAgICAgIExPR19FUlJPUigiVHJpZWQgdG8gcmVzb2x2ZSBhIGJsb2Igd2l0
aG91dCBhIHVzYWJsZSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lz
dHJ5KS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBhdXRvKiBibG9iRGF0YSA9IGJsb2JS
ZWdpc3RyeS0+Z2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7CiAgICAgaWYgKCFibG9iRGF0YSkgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRhIGZyb20gYSByZWdpc3Ry
eSIpOwogICAgICAgICByZXR1cm47CkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kQmxvYlJlc29sdmVkKEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5LCBGb3JtRGF0YSYgZm9y
bURhdGEsIGMKICAgICB9CiB9CiAKLVJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9i
UmVmZXJlbmNlcyhCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSkKK1JlZjxGb3JtRGF0YT4gRm9y
bURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0
cnkpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgYW55IGJsb2JzIG5lZWRzIHRvIGJlIHJlc29s
dmVkLCBvciB3ZSBjYW4gdGFrZSB0aGUgZmFzdCBwYXRoLgogICAgIGJvb2wgaGFzQmxvYiA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDIw
YmY2MmUyMTAwMGY1NTM2YTU5YzY5YjZjNTI1OTIwNTlhNWYzM2YuLjdjNjg2ZThiNDIzYjM2ZGU4
YjEyZjEwYjU3ZGYxOGRlM2U0MDk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBCbG9iUmVnaXN0cnk7CitjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9N
Rm9ybURhdGE7CiBjbGFzcyBGaWxlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlc29sdmUgYWxsIGJsb2IgcmVmZXJlbmNlcyBzbyB3
ZSBvbmx5IGhhdmUgZmlsZSBhbmQgZGF0YS4KICAgICAvLyBJZiB0aGUgRm9ybURhdGEgaGFzIG5v
IGJsb2IgcmVmZXJlbmNlcyB0byByZXNvbHZlLCB0aGlzIGlzIHJldHVybmVkLgotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKEJsb2JSZWdpc3Ry
eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVu
Y2VzKEJsb2JSZWdpc3RyeUltcGwqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZvcm1EYXRhRm9y
VXBsb2FkIHByZXBhcmVGb3JVcGxvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggNDdm
MTU0MThmMmFkNGQ1Zjg1ZDYwOWI3OTc4MzY2Nzk2MGZiYmRmNC4uNTNmZWEwNTYzNTk4YWMxODk1
ZTk2NzY0MzcyYTE3ZTdkOWQyZWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNzIsNyAr
MzcyLDcgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0
cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm8KIAogUmV0YWluUHRyPENGUmVhZFN0cmVh
bVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEmIGZvcm1EYXRhKQogewot
ICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhibG9iUmVnaXN0cnkoKSk7CisgICAgYXV0byByZXNvbHZlZEZvcm1EYXRhID0gZm9ybURhdGEu
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKGJsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeUltcGwoKSk7
CiAgICAgYXV0byBkYXRhRm9yVXBsb2FkID0gcmVzb2x2ZWRGb3JtRGF0YS0+cHJlcGFyZUZvclVw
bG9hZCgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gQ0ZOZXR3
b3JrIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKaW5kZXgg
ZGQ2M2E0YWI0MjcwM2Y2ZTk0MmY4ZWY5NTUxMzZhODZiY2RmNjY1MS4uMmJiYTVhNmMzYTRiMjY5
NWViOWI0ZTEwNWY4NTJkNTE0ZThiZjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgQ3VybEZvcm1EYXRhU3RyZWFtOjpDdXJsRm9ybURhdGFTdHJlYW0oY29uc3Qg
Rm9ybURhdGEqIGZvcm1EYXRhKQogICAgIG1fZm9ybURhdGEgPSBmb3JtRGF0YS0+aXNvbGF0ZWRD
b3B5KCk7CiAKICAgICAvLyBSZXNvbHZlIHRoZSBibG9iIGVsZW1lbnRzIHNvIHRoZSBmb3JtRGF0
YSBjYW4gY29ycmVjdGx5IHJlcG9ydCBpdCdzIHNpemUuCi0gICAgbV9mb3JtRGF0YSA9IG1fZm9y
bURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKSk7CisgICAgbV9mb3Jt
RGF0YSA9IG1fZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcyhibG9iUmVnaXN0cnkoKS5i
bG9iUmVnaXN0cnlJbXBsKCkpOwogfQogCiBDdXJsRm9ybURhdGFTdHJlYW06On5DdXJsRm9ybURh
dGFTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDMxYzZhMGU0ZWJhYmNhNjIyYzc5ZWEzNmFhMTdk
ODcxNWY1YTk3NzQuLmU5OGJhMTg4NGY1NDVjM2U0YzU2MGUwMDc2ODU4M2M0ODdiYjA0ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0LmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKKwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6
IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKQEAgLTg3LDcgKzg5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VIZWFkZXJzKFNvdXBN
ZXNzYWdlSGVhZGVycyopIGNvbnN0OwogICAgICAgICB2b2lkIHVwZGF0ZUZyb21Tb3VwTWVzc2Fn
ZUhlYWRlcnMoU291cE1lc3NhZ2VIZWFkZXJzKik7Ci0gICAgICAgIHZvaWQgdXBkYXRlU291cE1l
c3NhZ2UoU291cE1lc3NhZ2UqKSBjb25zdDsKKyAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2Fn
ZShTb3VwTWVzc2FnZSosIEJsb2JSZWdpc3RyeUltcGwmKSBjb25zdDsKICAgICAgICAgdm9pZCB1
cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKTsKICAgICAgICAgdm9pZCB1cGRhdGVT
b3VwUmVxdWVzdChTb3VwUmVxdWVzdCopIGNvbnN0OwogICAgICAgICB2b2lkIHVwZGF0ZUZyb21T
b3VwUmVxdWVzdChTb3VwUmVxdWVzdCopOwpAQCAtMTExLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG1faW5pdGlhdGluZ1Bh
Z2VJRDsKIAogICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdlTWVtYmVycyhTb3VwTWVzc2Fn
ZSopIGNvbnN0OwotICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSopIGNvbnN0OworICAgICAgICB2b2lkIHVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSosIEJsb2JSZWdpc3RyeUltcGwmKSBjb25zdDsKICAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRm
b3JtUmVxdWVzdCgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkg
eyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAKaW5kZXggOTYwMWU2NjMxN2IwNTk0ZmI5MDRkM2I5MTJmNjI2YzgyZjcz
Y2FiOS4uMzM1YjNkOTJhY2YwYjk5NmQ4NDE1Mjc4ZGE4ZWE5ZDdiM2Y0YzlmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5k
RW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdl
LAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1l
c3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKK3ZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBC
bG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkpIGNvbnN0CiB7CiAgICAgYXV0byogZm9ybURh
dGEgPSBodHRwQm9keSgpOwogICAgIGlmICghZm9ybURhdGEgfHwgZm9ybURhdGEtPmlzRW1wdHko
KSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmRfYnVmZmVyKHNvdXBNZXNzYWdlLT5yZXF1
ZXN0X2JvZHksIHNvdXBCdWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJsb2Ip
IHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9i
UmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChibG9iLnVy
bCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogYmxvYkRhdGEgPSBibG9iUmVnaXN0cnku
Z2V0QmxvYkRhdGFGcm9tVVJMKGJsb2IudXJsKSkgewogICAgICAgICAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvZHlTaXplICs9IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5
KHNvdXBNZXNzYWdlLCBpdGVtKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDAsNyArMTQwLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoU291
cE1lc3NhZ2VIZWFkZXJzKiBzb3VwSGVhZGUKICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNl
dChTdHJpbmcoaGVhZGVyTmFtZSksIFN0cmluZyhoZWFkZXJWYWx1ZSkpOwogfQogCi12b2lkIFJl
c291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdl
KSBjb25zdAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlKFNvdXBNZXNz
YWdlKiBzb3VwTWVzc2FnZSwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5KSBjb25zdAog
ewogICAgIGdfb2JqZWN0X3NldChzb3VwTWVzc2FnZSwgU09VUF9NRVNTQUdFX01FVEhPRCwgaHR0
cE1ldGhvZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZShTb3VwTWVzc2FnZSogc291cE1l
c3NhZ2UpIGNvbnN0CiAgICAgc291cF9tZXNzYWdlX3NldF91cmkoc291cE1lc3NhZ2UsIHVyaS5n
ZXQoKSk7CiAKICAgICB1cGRhdGVTb3VwTWVzc2FnZU1lbWJlcnMoc291cE1lc3NhZ2UpOwotICAg
IHVwZGF0ZVNvdXBNZXNzYWdlQm9keShzb3VwTWVzc2FnZSk7CisgICAgdXBkYXRlU291cE1lc3Nh
Z2VCb2R5KHNvdXBNZXNzYWdlLCBibG9iUmVnaXN0cnkpOwogfQogCiB2b2lkIFJlc291cmNlUmVx
dWVzdDo6dXBkYXRlRnJvbVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCmluZGV4IDgwZmUxYTJkZGMzZTEzYTAyMGIyNTY0YTYyZGM1NTNmMGI1
ZDQ0ZDAuLmZmZmI0NzM1ZGIyMWVkNTRhODBiNGQwM2Y0ZDRlNzA0NTQ2YmY5ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdl
ci5oIgogCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKLSNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJOZXR3b3JrTG9hZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCkBAIC01NSwx
MCArNTQsMTAgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSByZXF1ZXN0OwogICAgIHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IENs
aWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwogICAgIGlm
IChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNCbG9iKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYmxv
YkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5C
bG9iKHJlcXVlc3QudXJsKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNl
cyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZp
bGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQo
KS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsK
KyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25s
b2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24s
ICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3Vn
Z2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVE
b3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxv
YWQ+JiYgZG93bmxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDM4NmM5ZTc2ZmVjOTM2YzE1NGVm
NzRhZmFhZDFiODUwNmE3YTU3ZjQuLjc0ZWQxM2JlNjEzZDcxZmQzMzI0MTY5NWU1ZGIzNjE2YzI0
NTA4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC01NSw3ICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CiBjbGFzcyBEb3dubG9hZDsKLWNs
YXNzIE5ldHdvcmtCbG9iUmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwpAQCAtNzUs
NyArNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgQXV0aGVudGljYXRpb25NYW5hZ2Vy
JiBkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgTmV0d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JikgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIE5ldHdvcmtCbG9iUmVnaXN0cnkmIG5ldHdv
cmtCbG9iUmVnaXN0cnkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKICAgICAgICAgdmly
dHVhbCB1aW50MzJfdCBkb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIoKSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggNjM5OThkNTg2ODE1ODg1ODY1OWFkOTJhYzIw
MDUzYTIzNmUwNjYzNC4uNzY0YWU5NGVmMGY0NDRhODFlMDViNmIyOTg4N2Y3Yzk4NmM4ZWU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMTY2LDIwICsxNjYsNCBAQCBWZWN0b3I8UmVm
UHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5C
bG9iKE5ldHdvcmtDbwogICAgIHJldHVybiBmaWxlc0luQmxvYih1cmwpOwogfQogCi1WZWN0b3I8
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVz
SW5CbG9iKGNvbnN0IFVSTCYgdXJsKQotewotICAgIEFTU0VSVChtX2Jsb2JSZWdpc3RyeS5pc0Js
b2JSZWdpc3RyeUltcGwoKSk7Ci0gICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gbV9ibG9iUmVnaXN0
cnkuZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7Ci0gICAgaWYgKCFibG9iRGF0YSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
cmVzdWx0OwotICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0
ZW1zKCkpIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6
RmlsZSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKCkpOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjRjZmVkOWRhZjc5ODAzYmM1YWY4MTVmODQ5YmNhMmExMGNl
N2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgotI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7Ci1jbGFzcyBCbG9iUGFydDsKLX0KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwot
Y2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKLQotY2xhc3MgTmV0d29ya0Jsb2JSZWdpc3RyeSB7Ci1X
VEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKLXB1YmxpYzoKLSAgICBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7Ci0gICAgfk5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKLQotICAg
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0g
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3Qg
ZW5kKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgVVJMJik7Ci0gICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0Zp
bGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwotCi0gICAgdm9pZCBjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJs
b2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKLSAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNv
bnN0IFVSTCYpOwotICAgIAotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5OyB9Ci0KLXByaXZhdGU6Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxVUkw+PiBC
bG9iRm9yQ29ubmVjdGlvbk1hcDsKLSAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9y
Q29ubmVjdGlvbjsKLSAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsIG1fYmxvYlJlZ2lzdHJ5
OwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjFiOWI4NjA0Mzhk
OWI2YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi4yZTRmNTNkMmFkYzBlODUyMDI2YjAzNzFiNTE1
NGQ0YjNjODk5NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzAxLDcgKzMw
MSw2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nl
c3NXYXNEaXNjb25uZWN0ZWQoY29ubmVjdGlvbik7CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5u
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKCp0aGlz
KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcygqdGhpcyk7CiAKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAtMzc0LDEzICszNzMsMTkgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5kU3VzcGVuc2lvbigpCiAKIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyhjb25zdCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byYgYmxvYlJl
Z2lzdHJ5ID0gc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCk7CisKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzOwogICAgIGlmIChhdXRvKiBib2R5
ID0gcGFyYW1ldGVycy5yZXF1ZXN0Lmh0dHBCb2R5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogYm9keS0+ZWxlbWVudHMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2JE
YXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGE+KGVsZW1l
bnQuZGF0YSkpCi0gICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kVmVjdG9yKG1fbmV0d29ya1By
b2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgYmxvYkRhdGEt
PnVybCkpOworICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZFZlY3RvcihibG9iUmVnaXN0cnku
ZmlsZXNJbkJsb2IoYmxvYkRhdGEtPnVybCkpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0X2Nh
c3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1ZXN0KS5zZXRIVFRQ
Qm9keShib2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29y
a0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpKSk7CisgICAgICAgIGNvbnN0X2Nhc3Q8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jj4ocGFyYW1ldGVycy5yZXF1ZXN0KS5zZXRIVFRQQm9keShi
b2R5LT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoJmJsb2JSZWdpc3RyeSkpOwogICAgIH0KIAogICAg
IHJldHVybiBmaWxlczsKQEAgLTU2OCw2NyArNTczLDg5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0CiAgICAgc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5kZWxl
dGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYg
ZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIG1fbmV0
d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKCp0
aGlzLCB1cmwsIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lv
bkhhbmRsZSkpLCBjb250ZW50VHlwZSk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJs
b2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRs
ZSkpKSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBi
bG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKCp0aGlzLCB1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwg
Y29udGVudFR5cGUpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkK
IHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMKCp0aGlzLCB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKCp0aGlzLCB1cmwsIHNyY1VSTCwg
ZmlsZUJhY2tlZFBhdGgsIGNvbnRlbnRUeXBlKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgsIG51bGxwdHIp
LCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50
NjRfdCBlbmQpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKCp0aGlzLCB1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7
CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNlc3Np
b24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBz
dGFydCwgZW5kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0
cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgqdGhpcywgdXJsKTsKKyAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkudW5y
ZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
bmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSgqdGhpcywgdXJs
KSk7CisgICAgYXV0byogYmxvYlJlZ2lzdHJ5ID0gbmV0d29ya1Byb2Nlc3MoKS5ibG9iUmVnaXN0
cnkoKnRoaXMpOworICAgIGlmICghYmxvYlJlZ2lzdHJ5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihibG9iUmVnaXN0cnktPmJsb2JTaXplKHVybCkpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgVmVj
dG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlUmVmZXJlbmNlczsKICAgICBm
b3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBmaWxlUmVmZXJlbmNlcy5hcHBlbmRW
ZWN0b3IobV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9i
KCp0aGlzLCB7IHsgfSwgdXJsIH0pKTsKKyAgICAgICAgZmlsZVJlZmVyZW5jZXMuYXBwZW5kVmVj
dG9yKHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHsgeyB9LCB1cmwgfSkpOwog
CiAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgIGZpbGUtPnBy
ZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFtmaWxlUmVm
ZXJlbmNlcyA9IFdURk1vdmUoZmlsZVJlZmVyZW5jZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZmlsZU5hbWVzKSBtdXRhYmxlIHsKKyAg
ICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9i
VVJMcywgW2ZpbGVSZWZlcmVuY2VzID0gV1RGTW92ZShmaWxlUmVmZXJlbmNlcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBmaWxlTmFtZXMp
IG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAg
ICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShmaWxlTmFtZXMpKTsKICAgICB9KTsKIH0KIAotVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZmlsZXNJbkJsb2IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYigqdGhpcywgdXJsKTsK
LX0KLQotV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmJsb2JSZWdpc3RyeSgpCi17Ci0gICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5l
dHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsKLX0KLQogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBkN2IyZjFi
NjNiYzdiMDRmZTAzMGUwMzY1ZTIxMzZmNzVhYjQ4Y2U2Li44ZmU5ZjMyYzllZmM2MmZkM2M1M2Uw
YjEyYzJkZDVkMmM0NWRlMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzgsOCAr
MTM4LDYgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0
YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBs
ZXRpb25Db2RlKTsKIAotICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3Ry
eSgpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
ZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoY29uc3QgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmKTsKIAogICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgb2xkUGFnZUlEKTsKQEAgLTE4MywxNCArMTgxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBi
b29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0g
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CiAgICAg
dm9pZCBibG9iU2l6ZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKLSAgICB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CisgICAgdm9p
ZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmKTsKIAogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggZmEyYzMxYTQxM2FmNjIxOTQ5M2NkNGNlYTJiYzdjNGFmYTkyMDU5MC4uMWU3N2M4YWI5
ODQ0OWZmMDRlZmFiNzkzMDVkNTEzOGRlYmQ4NWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00MSwxNCArNDEsMTQgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFJhd0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2ll
TmFtZSkKIAotICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNv
bnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6
QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxv
YlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2spCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoVVJMIHVy
bCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUp
Ci0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoVVJMIHVybCwgVVJMIHNyY1VSTCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoVVJMIHVybCkKKyAg
ICBSZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwg
U3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhh
bmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBh
cnRzLCBTdHJpbmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFVSTCBzcmNVUkwpCisgICAgUmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwg
dXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlw
ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFVSTCB1cmwsIFVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVu
cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkKICAgICBC
bG9iU2l6ZShVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgU3luY2hyb25vdXMKLSAg
ICBXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4g
KFZlY3RvcjxTdHJpbmc+IGZpbGVOYW1lcykgQXN5bmMKKyAgICBXcml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxz
KSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCiAgICAgU2V0Q2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOWNiNGE5MjUy
MjA5MDViNGMyMWE0Zjc2YWU3NzZhZTE0NTAyNWY4Ny4uYTk4ZjcwZmE5OWE1NjUwMWM3YzFkYWY1
MjlhZWViMDcwOWQyYzZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTYxMiw2ICs2MTIsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVzdHJveVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAgICBt
X3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCitCbG9iUmVnaXN0
cnlJbXBsKiBOZXR3b3JrUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgdGhpcyBt
ZXRob2QgYW5kIHVzZSBzZXNzaW9uSUQgLT4gTmV0d29ya1Nlc3Npb24gLT4gYmxvYiByZWdpc3Ry
eS4KKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkpOworICAgIHJldHVybiBzZXNzaW9uID8gJnNlc3Npb24tPmJsb2JS
ZWdpc3RyeSgpIDogbnVsbHB0cjsKK30KKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2Zh
ODIxNzA4Li45NDg2OTA0NjVhYTE2NDBiOWFhZWVhZWZhOGIyZTQ0YmM2NTJkMzkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgotI2luY2x1ZGUg
Ik5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMzI3LDcgKzMyNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+
KT4mJik7CiAKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5JiBuZXR3b3JrQmxvYlJlZ2lzdHJ5KCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9uZXR3b3JrQmxvYlJlZ2lzdHJ5OyB9CisgICAgV2ViQ29yZTo6
QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJik7CiAKICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0
dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYpOwpAQCAtNDk4LDcgKzQ5Nyw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPj4gbV9uZXR3b3JrU2Vzc2lvbnM7
CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4+IG1fbmV0d29ya1N0b3JhZ2VTZXNzaW9uczsKICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1fZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKLSAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5IG1fbmV0
d29ya0Jsb2JSZWdpc3RyeTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBm
MjM0ZTI5NDFkM2UxZTUxNmVhMzhiNmRmNmVjNTNlYzIwYTc1MDE3Li4wYzg0NmRiMDI0MmYzYTc1
MTNlNmMzYjExMWVhYWMxZDg4NjBlYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcApAQCAtNTIsMTUgKzUyLDE0IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5IHsKLSAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxG
b3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9i
UGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JT
bGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgICAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gMDsgfQotICAgICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KLSAgICAgICAgYm9vbCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgfTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlCbG9iUmVn
aXN0cnk+IGJsb2JSZWdpc3RyeTsKICAgICByZXR1cm4gJmJsb2JSZWdpc3RyeS5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBjZTA2ZTM2MTNhYzIwZWY4YjMzMTRjN2ViMjZlMmM0YWJhZmI0ZTg4Li40
NzgyZWYxNWYzZGVlZTVhZjRlYWVmMDVjZGY2MDM2YWU3ZTZkMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMDEsOSArMzAxLDYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBpZiAocGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeTo6VXNlICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKQogICAgICAgICBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KCk7CiAKLSAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxv
YigpKQotICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG1fY29ubmVjdGlv
bi0+ZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwotCiAgICAgYXV0byogbmV0
d29ya1Nlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1Nlc3Npb24gJiYgcGFy
YW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb24t
Pm5ldHdvcmtQcm9jZXNzKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSk7
CkBAIC0zMTcsOCArMzE0LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5l
dHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQor
ICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNzaW9uLT5i
bG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7CisKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xv
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+
YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Cisg
ICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAm
bmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0
d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3Jr
TG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAuLmM0ZTEw
MmU3NzUyN2VlYzFmYWY1MWU3YjA0ZTBlOTU3OTQ2NjdhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRpb24uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMTQsNiArMTE1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgeyB9CiAKKyAgICBXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jsb2JSZWdpc3Ry
eTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xNDMsNiArMTQ2
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNl
bmRpZgogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFdlYkNv
cmU6OkJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5MWVjNjk2YWMxNWIxYzVm
MWExMTM1MWEzZTI2YWI3Li5kNDZjNTAzZDgxZTk4MzRlNWQyYTI1NjYwYzg3MjNlYWU3ZTE3MGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKICAg
ICB1bnNpZ25lZCBtZXNzYWdlRmxhZ3MgPSBTT1VQX01FU1NBR0VfTk9fUkVESVJFQ1Q7CiAKLSAg
ICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsK
KyAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgp
LCBtX3Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpKTsKICAgICBpZiAobV9zaG91bGRDb250ZW50U25p
ZmYgPT0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudCkKICAgICAgICAg
c291cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUik7CiAgICAgaWYgKG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNzd29y
ZC5pc0VtcHR5KCkgJiYgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKaW5kZXggNzM1NTI1N2JlZGEx
ZTVhZGNkZTU1NGU2YmQzM2JjZTllMmY2MGQwZC4uMzBmYzhhNTM1NWQwODQ1MmFjMzYxYjFkY2Vh
OTdjODRmMzYwN2ZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJT
b2NrZXRUYXNrKE5ldHdvcmtTbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEdSZWZQ
dHI8U291cE1lc3NhZ2U+IHNvdXBNZXNzYWdlID0gYWRvcHRHUmVmKHNvdXBfbWVzc2FnZV9uZXdf
ZnJvbV91cmkoU09VUF9NRVRIT0RfR0VULCBzb3VwVVJJLmdldCgpKSk7Ci0gICAgcmVxdWVzdC51
cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSk7CisgICAgcmVxdWVzdC51cGRhdGVT
b3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSwgYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndzcyIpKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KHNvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0
TWVzc2FnZU5ldHdvcmtFdmVudENhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1l
c3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDViNGZmNjljNTRmNTAyN2Fj
OWU0NGQ5MDU4MDFkYjNiZjlhZGFmMjMuLmFlYjU4OThlNGU0MDIyN2E5MzZmNzU4YjQwMjFmODM3
OTg0NWM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTcsOCArNTcsNiBAQCBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAKIAotTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAotCiBO
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogCiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTE2NjQwNjBjYTkzN2I3ODczYjNlNGU0ZTBiZjQ2ZGU3ZjFmODdmOC4uNWQ1NmEy
YTE3OThlZDFhM2JkOTQ5OWZhOGUwOTVhZTQ2YzljYmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzE2LDcgKzEzMTYsNiBAQAog
CQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyog
Y29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWlu
IFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1
RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1Iu
cGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkU5
RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggKi87IH07Ci0JCUExMDVEMEQxMjEyNzM0
QjIwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0
d29ya0Jsb2JSZWdpc3RyeS5oICovOyB9OwogCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyog
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5
RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlB
MTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhF
QTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk4NSw3ICszOTg0LDYgQEAKIAkJOUZC
NUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
NDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BE
RlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9XS1BERlZpZXcubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3
b3JrQmxvYlJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtCbG9iUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURDNkQx
OTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNURDNkUxOTFEODJBQjAwREE4MDcy
IC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBRdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjE5LDcgKzQ2MTcsNiBAQAogCQlFMTY0QTJGMDE5
MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTE3MDg3NjkxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJsb2JSZWdpc3RyeVByb3h5LmNwcDsgcGF0
aCA9IFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNzA4NzZBMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0
cnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iUmVnaXN0cnlQ
cm94eS5oOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxNzk4Qzc3MTZFNjgxODgwMDI0MDEzOSAvKiBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTdBRTJDMTE2QjlDMTM5MDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTdBRTJDMjE2QjlDNjNBMDAxQzQyRjEgLyog
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyog
UHJpbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50
SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjY0LDcgKzY2NjEsNiBA
QAogCQkJCTVDMTQyNkYyMUMyM0Y4MkQwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJ
CQkJNUMxNDI2RjExQzIzRjgxNzAwRDQxMTgzIC8qIERvd25sb2FkcyAqLywKIAkJCQlCQzgyODM3
QzE2QjQ1REE1MDBBMjc4RkUgLyogRW50cnlQb2ludCAqLywKLQkJCQlFMTc5OEM3NjE2RTY4MTU1
MDAyNDAxMzkgLyogRmlsZUFQSSAqLywKIAkJCQk5MzkyODhFMDIxNDA0REYwMDBFQkJBMzMgLyog
SW5kZXhlZERCICovLAogCQkJCTJEQTk0NEJCMTg4NTExREQwMEVEODZEQiAvKiBpb3MgKi8sCiAJ
CQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywKQEAgLTkwMjQsMTUgKzkwMjAs
NiBAQAogCQkJbmFtZSA9IEZpbGVBUEk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwotCQlFMTc5OEM3NjE2RTY4MTU1MDAyNDAxMzkgLyogRmlsZUFQSSAqLyA9IHsKLQkJCWlzYSA9
IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTE3OThDNzcxNkU2ODE4ODAwMjQwMTM5
IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovLAotCQkJCUExMDVEMEQwMjEyNzM0QjEwMDM0
RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEZpbGVB
UEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlFMTk5ODc1QjE0MkJGOUNG
MDBCQjJERTcgLyogUERGICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTk0ODAsNyArOTQ2Nyw2IEBACiAJCQkJMUE0QTlDNTYxMkI4MTZDRjAwOEZFOTg0IC8q
IE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1ODg5MjExRUU3
MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUzNUJDQjkyMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBMTA1RDBEMTIxMjczNEIyMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0MxQTBEMDQwQjAwRUFEMjA0IC8q
IE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5RDQwRDcxQUQzRkIxNzAwNjZC
N0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5
RDI4QzFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmNwcAppbmRleCAyNGUzNTU5Y2ZmMDY5YmQzMTc5MWVlNjUxNzhlYWY0ZTRkYzBl
NDdkLi4yZjNiNmJhODMxNDc4NDVlNjg2MmM0ZjkwMzk3ZDI1MWM2NWIxN2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCkBAIC00
NCwzNyArNDQsMzMgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmUKICAgICBpZiAoIWZpbGUtPnBh
dGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShm
aWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25I
YW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBl
eHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9i
VVJMKHNlc3Npb25JRCwgdXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVu
dFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFy
dD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsK
IH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCkKIHsKLSAgICBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayA9IGZh
bHNlOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2sgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7Ci0j
ZW5kaWYKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCwgc2hvdWxk
QnlwYXNzQ29ubmVjdGlvbkNoZWNrIH0sIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVS
TCB7IHNlc3Npb25JRCwgdXJsLCBzcmNVUkwgfSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDAp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoc2Vzc2lvbklELCB1
cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSksIDApOwogfQogCi12b2lkIEJs
b2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1cmwpLCAw
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsKSwgMCk7CiB9CiAKLXZv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQor
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxG
b3JTbGljZShzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CiB9CiAKIHVu
c2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1
cmwpCkBAIC04NSw5ICs4MSw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94
eTo6YmxvYlNpemUoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAK
LXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEJsb2JSZWdp
c3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQs
IGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmlu
ZGV4IDZhYmVlMzY3NDhkZmVjYzJjYWQ0NmNjYzIyMmE3NGM1MTc2ZDg5ZDQuLmQ3NjYxNTg3ZTNl
NzQzODMyZTIzMjVjNjc5NmNmYTM0NWJiOTU2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsMTQgKzMxLDE0
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVS
TCYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckZpbGVC
bG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxv
YlNpemUoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBkOWFkY2MyMWE4YTk2YjJh
YTU0NTM2NmRlMDk1ZDA0N2M2MjU3ZWRmLi5hZmQ3NDdhNWI5OTE4NTcwMzA4M2ZhYzU3MGZjNDhi
NGU1Y2JlZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTIxMSw5ICsyMTEsOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6UwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXcml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIGJsb2JVUkxzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkRmluaXNoUGlu
Z0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
MGNkZTU5OWIxZTA0OWQ4ODMxM2EwZDAzMDVmODAyYWY1Mjc5ZGNkOS4uNjI2ZGFiMTFiMmRmMjk5
NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAg
IHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhz
KT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIqIGV4aXN0aW5nSURCQ29ubmVj
dGlvblRvU2VydmVyRm9ySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSBjb25zdCB7IHJl
dHVybiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdldChpZGVudGlmaWVyKTsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAwOGE5MDI2MjBjNjZiM2NmZWM3ZTEw
NGEwMzQ4ZTNmMjY0MzE0NGNjLi5kZWY5OGRhZTJmZWI0NDgwN2VmYjMyMTdhY2RjY2VjYmI2NTk5
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC02Miw5ICs2MiwyNSBAQCBQ
YXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2Fy
ZFN0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAorY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5
IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7Citwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJl
ZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxv
YlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7
IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5h
bCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBz
dGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJM
KHVybCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwp
IGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KKyAgICB2b2lk
IHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
JiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBm
aW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7IH0KKworICAgIEJsb2JSZWdpc3RyeUltcGwg
bV9ibG9iUmVnaXN0cnk7Cit9OworCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGw7CisgICAgcmV0dXJuIG5ldyBXZWJCbG9iUmVnaXN0cnk7CiB9CiAKIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCA5OGM5YzA5Mjk4NmVkYWM0NjRlMzY0N2FlZDk4ZjgyMzgxYjI4NzJhLi5iNzY5MGRm
YmRmZjE5YWM4ZTQ2NWRmMGFjOWQ5MzYyMDYyYjM0ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0Jsb2JSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJl
Z2lzdHJ5SW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpAQCAtNTksNyArNjAsMjMgQEAgUGFz
dGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRT
dHJhdGVneSgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NsYXNzIFdlYkJsb2JSZWdpc3Ry
eSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgeworcHJpdmF0ZToKKyAgICB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShy
ZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0cywgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJs
b2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmlu
YWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwg
c3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVyQmxvYlVS
TCh1cmwpOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYgdXJs
KSBmaW5hbCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6ZSh1cmwpOyB9CisgICAgdm9p
ZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOyB9CisKKyAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsKCkg
ZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CisKKyAgICBCbG9iUmVnaXN0cnlJbXBs
IG1fYmxvYlJlZ2lzdHJ5OworfTsKKwogQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgcmV0dXJuIG5ldyBCbG9iUmVnaXN0cnlJ
bXBsOworICAgIHJldHVybiBuZXcgV2ViQmxvYlJlZ2lzdHJ5OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>