<?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>228168</bug_id>
          
          <creation_ts>2021-07-21 15:46:26 -0700</creation_ts>
          <short_desc>imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html is a flaky failure since implementing BlobChannel</short_desc>
          <delta_ts>2021-08-09 14:04:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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=212276</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228923</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Hutchison">ehutchison</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ehutchison</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778582</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Hutchison">ehutchison</who>
    <bug_when>2021-07-21 15:46:26 -0700</bug_when>
    <thetext>imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html 

is a flaky failure on macOS and iOS. 

History: https://results.webkit.org/?platform=mac&amp;platform=ios&amp;suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fwebmessaging%2Fbroadcastchannel%2Fblobs.html

Diff: 
--- /Volumes/Data/worker/bigsur-release-applesilicon-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs-expected.txt
+++ /Volumes/Data/worker/bigsur-release-applesilicon-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs-actual.txt
@@ -1,4 +1,4 @@
 
-PASS Blobs work on BroadcastChannel
+FAIL Blobs work on BroadcastChannel assert_unreached: Reached unreachable code
 PASS Blobs work with workers on BroadcastChannel

Initial failure on r280017. 

Reproduced on r280151 with run-webkit-tests -f --iterations 500 --exit-after-n-failures 2 imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html.
Reproduced on r280017 with run-webkit-tests -f --iterations 500 --exit-after-n-failures 2 -1 imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html.
Reproduced on r279971 with run-webkit-tests -f --iterations 500 --exit-after-n-failures 2 --clobber-old-results -1 imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html and run-webkit-tests -f --iterations 500 --exit-after-n-failures 2 --clobber-old-results imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778583</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-21 15:46:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/80922502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778587</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Hutchison">ehutchison</who>
    <bug_when>2021-07-21 16:08:16 -0700</bug_when>
    <thetext>Test expectations for Mac and iOS updated on https://trac.webkit.org/changeset/280165/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780237</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-28 15:39:07 -0700</bug_when>
    <thetext>Seems to be a garbage collection issue, I can reproduce 100% with aggressive GC:

Tools/Scripts/run-webkit-tests --debug imported/w3c/web-platform-tests/webmessaging/broadcastchannel/blobs.html --force --additional-env-var=__XPC_JSC_collectContinuously=true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780238</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-28 15:45:37 -0700</bug_when>
    <thetext>The test sends a Blob via BroadcastChannel.postMessage(). When we construct the SerializedScriptValue for the Blob, we only serialize the url of the Blob. If the blob gets deallocated by the time the message is received (and deserialization happens) then we&apos;re unable to lookup the blob from its URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780523</commentid>
    <comment_count>5</comment_count>
      <attachid>434561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-29 13:02:10 -0700</bug_when>
    <thetext>Created attachment 434561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780868</commentid>
    <comment_count>6</comment_count>
      <attachid>434561</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-30 10:30:01 -0700</bug_when>
    <thetext>Comment on attachment 434561
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        To address the issue, I introduced a Blob::Handle class that wraps the Blob&apos;s internal URL
&gt; +        and keeps the Blob data alive as long as as someone is holding such handle. Previously,
&gt; +        the Blob destructor would unregister the internal URL and the Blob data would go away.

Should this replace extendBlobURLLifetimeIfNecessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780873</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 10:31:53 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 434561 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434561&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        To address the issue, I introduced a Blob::Handle class that wraps the Blob&apos;s internal URL
&gt; &gt; +        and keeps the Blob data alive as long as as someone is holding such handle. Previously,
&gt; &gt; +        the Blob destructor would unregister the internal URL and the Blob data would go away.
&gt; 
&gt; Should this replace extendBlobURLLifetimeIfNecessary?

No, extendBlobURLLifetimeIfNecessary is about BlobURLs, which are public URLs.

In this case, I don&apos;t have a public Blob URL, only a Blob (with its internal URL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780878</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 10:40:13 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Alex Christensen from comment #6)
&gt; &gt; Comment on attachment 434561 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434561&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; &gt; +        To address the issue, I introduced a Blob::Handle class that wraps the Blob&apos;s internal URL
&gt; &gt; &gt; +        and keeps the Blob data alive as long as as someone is holding such handle. Previously,
&gt; &gt; &gt; +        the Blob destructor would unregister the internal URL and the Blob data would go away.
&gt; &gt; 
&gt; &gt; Should this replace extendBlobURLLifetimeIfNecessary?
&gt; 
&gt; No, extendBlobURLLifetimeIfNecessary is about BlobURLs, which are public
&gt; URLs.
&gt; 
&gt; In this case, I don&apos;t have a public Blob URL, only a Blob (with its internal
&gt; URL).

Trying to clarify:
1. URLWithBlobURLLifetimeExtension works only with public Blob URLs (which contains the security origin). It is suitable when you have a public Blob URL and want to extend its lifetime for something like a load or a navigation (which requires origin for security checks). Note that URLWithBlobURLLifetimeExtension actually makes a copy of the Blob data currently.

2. The newly introduced Blob::Handle keeps an internal blob URL valid and doesn&apos;t copy the actual Blob data. It&apos;s just a way to keep the blob data alive potentially longer than the Blob object itself. We don&apos;t have a public blob URL (no security origin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780894</commentid>
    <comment_count>9</comment_count>
      <attachid>434561</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-30 11:37:55 -0700</bug_when>
    <thetext>Comment on attachment 434561
Patch

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

&gt; Source/WebCore/fileapi/Blob.cpp:88
&gt; +    static Ref&lt;BlobInternalURL&gt; create(URL&amp;&amp; url)

We may as well make this a const URL&amp; if we&apos;re just going to crossThreadCopy it.

&gt; Source/WebCore/fileapi/Blob.cpp:95
&gt; +        ThreadableBlobRegistry::unregisterBlobURL(m_internalURL);

I don&apos;t think we should have this object unregister a URL that it didn&apos;t register.  The same object should register and unregister the URLs.   It&apos;s error prone otherwise.  Is there a reason you didn&apos;t do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780898</commentid>
    <comment_count>10</comment_count>
      <attachid>434561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 11:53:58 -0700</bug_when>
    <thetext>Comment on attachment 434561
Patch

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

&gt;&gt; Source/WebCore/fileapi/Blob.cpp:88
&gt;&gt; +    static Ref&lt;BlobInternalURL&gt; create(URL&amp;&amp; url)
&gt; 
&gt; We may as well make this a const URL&amp; if we&apos;re just going to crossThreadCopy it.

Indeed.

&gt;&gt; Source/WebCore/fileapi/Blob.cpp:95
&gt;&gt; +        ThreadableBlobRegistry::unregisterBlobURL(m_internalURL);
&gt; 
&gt; I don&apos;t think we should have this object unregister a URL that it didn&apos;t register.  The same object should register and unregister the URLs.   It&apos;s error prone otherwise.  Is there a reason you didn&apos;t do this?

I thought about this indeed. I agree it would be nicer. The reason I didn&apos;t do this is that when you register, you need more information besides the URL (data and type). Also, there are cases where we unregister but don&apos;t register ourselves (see the UninitializedContructor constructor, which is used by File subclass I believe).
I&apos;ll take another look and see if I can pass more data and do the registration inside BlobInternalURL as I agree it would be a better design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780944</commentid>
    <comment_count>11</comment_count>
      <attachid>434662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 14:28:37 -0700</bug_when>
    <thetext>Created attachment 434662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780996</commentid>
    <comment_count>12</comment_count>
      <attachid>434662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 16:36:55 -0700</bug_when>
    <thetext>Comment on attachment 434662
Patch

Looks like I messed up something in this last iteration :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781004</commentid>
    <comment_count>13</comment_count>
      <attachid>434675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-30 16:54:53 -0700</bug_when>
    <thetext>Created attachment 434675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781341</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-02 11:47:01 -0700</bug_when>
    <thetext>Committed r280547 (240174@main): &lt;https://commits.webkit.org/240174@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434675.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434561</attachid>
            <date>2021-07-29 13:02:10 -0700</date>
            <delta_ts>2021-07-30 14:28:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228168-20210729130209.patch</filename>
            <type>text/plain</type>
            <size>50586</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RhYmM1NTg2N2QwNTkx
YzJiMzJkZjJmMGRmZTJjZmIzMjVlNzFhNy4uMWUxZWY4Mjc0ZTA2MzRhMjMxNDNlNDFiNzM5NmYx
MTVkZjFiYWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA3LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIGlz
IGEgZmxha3kgZmFpbHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcgQmxvYkNoYW5uZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE2OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODA5MjI1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHRlc3Qgd2FzIGZsYWt5IGJlY2F1c2UgaXQgaXMgdHJ5aW5n
IHRvIHNlbmQgYSBCbG9iIHZpYSBCcm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlKCkKKyAgICAg
ICAgd2l0aG91dCBrZWVwaW5nIHRoZSBibG9iIGFsaXZlLiBXaGVuIEdDIHRyaWdnZXJzLCB0aGUg
QmxvYiB3b3VsZCBnbyBhd2F5IGFuZCB0cnlpbmcgdG8KKyAgICAgICAgZGVjb2RlIHRoZSBCbG9i
IHVwb24gcmVjZWl2aW5nIHdvdWxkIGZhaWwuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIEkgaW50cm9kdWNlZCBhIEJsb2I6OkhhbmRsZSBjbGFzcyB0aGF0IHdyYXBzIHRoZSBCbG9i
J3MgaW50ZXJuYWwgVVJMCisgICAgICAgIGFuZCBrZWVwcyB0aGUgQmxvYiBkYXRhIGFsaXZlIGFz
IGxvbmcgYXMgYXMgc29tZW9uZSBpcyBob2xkaW5nIHN1Y2ggaGFuZGxlLiBQcmV2aW91c2x5LAor
ICAgICAgICB0aGUgQmxvYiBkZXN0cnVjdG9yIHdvdWxkIHVucmVnaXN0ZXIgdGhlIGludGVybmFs
IFVSTCBhbmQgdGhlIEJsb2IgZGF0YSB3b3VsZCBnbyBhd2F5LgorCisgICAgICAgIEkgdGhlbiB1
cGRhdGVkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byBob2xkIG9uIHRvIEJsb2I6OkhhbmRsZSBv
YmplY3RzIGluc3RlYWQgb2YgQmxvYgorICAgICAgICBVUkxzLiBUaGlzIGd1YXJhbnRlZXMgdGhh
dCB3aGVuIHVzaW5nIHBvc3RNZXNzYWdlKCkgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gYSB3b3JrZXIs
IHRoZQorICAgICAgICBCbG9iIGRhdGEgd2lsbCBzdGF5IGFsaXZlIHVudGlsIHdlIGRpc3BhdGNo
IHRoZSBtZXNzYWdlIGV2ZW50IG9uIHRoZSB3b3JrZXIgc2lkZSBhbmQgdHJ5CisgICAgICAgIGFu
ZCBkZXNlcmlhbGl6ZWQgdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKworICAgICAgICBGb3Ig
QnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZSgpIHRob3VnaCwgd2UgZW5kIHVwIGdvaW5nIHZp
YSB0aGUgbmV0d29yayBwcm9jZXNzIGFuZAorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGVuZHMgdXAgZ2V0dGluZyBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZCBvdmVyIElQQy4gSSBh
ZGRlZCBhCisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyIHRvIEJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6cG9zdE1lc3NhZ2UoKSB3aGljaCBvbmx5IGdldHMgY2FsbGVkCisgICAgICAgIG9uY2Ug
dGhlIG1lc3NhZ2UgZXZlbnQgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGRpc3BhdGNoZWQuIEkgdXNl
IHRoaXMgY29tcGxldGlvbiBoYW5kbGVyCisgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGUgU2VyaWFs
aXplZFNjcmlwdFZhbHVlJ3MgQmxvYiBVUkxzIHN0YXkgdmFsaWQgdW50aWwgdGhlIHRoZSBtZXNz
YWdlIGhhcworICAgICAgICBiZWVuIGRpc3BhdGNoZWQgYnkgaG9sZGluZyBvbiB0byB0aGUgQmxv
Yjo6SGFuZGxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVuc2tpcHBlZCBleGlzdGluZyB0
ZXN0LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVmFsdWU6OklEQlZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9u
ZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9i
VVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpoYXNCbG9iVVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmJsb2JIYW5kbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBkb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpw
b3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRj
aE1lc3NhZ2VUbyk6CisgICAgICAgICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuaDoKKyAgICAgICAg
KiBkb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogZmlsZWFwaS9CbG9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6fkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iSW50ZXJuYWxVUkw6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iSW50ZXJuYWxVUkw6OkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6On5CbG9iKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5k
bGU6OkhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5kbGU6OnVybCBjb25zdCk6
CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisKIDIwMjEtMDctMjkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBhbiBpbXBvcnRlZCB0YXJnZXQgZm9yIHRo
ZSBsaWJnY3J5cHQgbGlicmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMGIwYjY0YTM2Zjk4MDM0MTA3N2RjZjk3
MzE2NTEzNmQxOThjZTA1Li40MjdkNWY2YzE4MzNkOTlmZDY1ZTY0ZmNlMzAwNzQzMmIwZjVmMmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA3LTI5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcgQmxvYkNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE2OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODA5MjI1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25u
ZWN0aW9uKToKKyAgICAgICAgaGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKCkgaGFk
IGdvdHRlbiBvdXQgb2Ygc3luYyB3aXRoIGhhbmRsZU1lc3NhZ2VBc3luYygpLiBUaGlzIHdhcyBj
YXVzaW5nIElQQyBkZWNvZGluZworICAgICAgICBmYWlsdXJlcyB3aGVuIHVzaW5nIGJvdGggIkFz
eW5jIiBhbmQgIldhbnRzQ29ubmVjdGlvbiIgZm9yIHRoZSBJUEMgbWVzc2FnZS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6
cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjoKKwog
MjAyMS0wNy0yOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBDT1JTIHByZWZsaWdodCBjaGVja3Mgbm90IGF0dHJpYnV0ZWQgdG8gdGhlIGNvcnJl
Y3QgYXBwbGljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNWE5M2E0ZDdlZjA5NWFjYzgx
MGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uNTU1NTBmZjZjZjAxMGI2NWQyZmNkNTdiZTY4NjcwMzg4
MWFjODU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNy0y
OSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmxvYnMu
aHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgc2luY2UgaW1wbGVtZW50aW5nIEJsb2JDaGFubmVsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwOTIyNTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oOgorCiAyMDIxLTA3LTE5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCBJREJUcmFuc2FjdGlvbi5jb21taXQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCmluZGV4IDhjN2YxMTk2
OGIzZTlmMjQ4OWQ4ZGEwZDJhYTBmMDhmNmY1NDA3Y2QuLmEzNjExMTNkZGM1MjdlZTdiODk5NjIz
MzQ5NzcwZTE1OGU3MWFhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgSURCVmFsdWU6OklEQlZhbHVlKCkKIAog
SURCVmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFs
dWUpCiAgICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0b3Ioc2NyaXB0
VmFsdWUuZGF0YSgpKSkKLSAgICAsIG1fYmxvYlVSTHMoc2NyaXB0VmFsdWUuYmxvYlVSTHNJc29s
YXRlZENvcHkoKSkKKyAgICAsIG1fYmxvYlVSTHMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggZjJlNGE3YWNlYTcwMzJkYjMzM2U0NGJkYWNhZTczODdiNTgxYWI5
Yi4uNGQzMDA3MTJjMGZiNzIyZGY1ZGRhNzc5YzY0NDE0NDk4ZjEwNDE4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC02MDAsNyArNjAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3
YXNtTW9kdWxlcywKICAgICAgICAgICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9y
eUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0
b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQorICAgICAgICBWZWN0b3I8QmxvYjo6SGFu
ZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29u
dGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAg
ICAgewogICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBAIC02MTMsNyArNjEzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgd2FzbU1vZHVsZXMsCiAgICAgICAgICAgICB3YXNtTWVtb3J5SGFuZGxl
cywKICNlbmRpZgotICAgICAgICAgICAgYmxvYlVSTHMsIG91dCwgY29udGV4dCwgc2hhcmVkQnVm
ZmVycyk7CisgICAgICAgICAgICBibG9iSGFuZGxlcywgb3V0LCBjb250ZXh0LCBzaGFyZWRCdWZm
ZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICB9
CiAKQEAgLTY0NywxMCArNjQ3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBXYXNtTW9kdWxl
QXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3
YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxC
bG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6
YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVm
ZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNhbEdsb2JhbE9iamVjdCkKICAgICAgICAg
LCBtX2J1ZmZlcihvdXQpCi0gICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKKyAgICAgICAg
LCBtX2Jsb2JIYW5kbGVzKGJsb2JIYW5kbGVzKQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVy
KElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgZW1wdHlT
dHJpbmcoKSkpCiAgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgICAgICwgbV9zaGFy
ZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF1dG8qIGJsb2IgPSBKU0Jsb2I6OnRvV3Jh
cHBlZCh2bSwgb2JqKSkgewogICAgICAgICAgICAgICAgIHdyaXRlKEJsb2JUYWcpOwotICAgICAg
ICAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGJsb2ItPnVybCgpLnN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICBtX2Jsb2JIYW5kbGVzLmFwcGVuZChibG9iLT5oYW5kbGUoKSk7CiAgICAgICAg
ICAgICAgICAgd3JpdGUoYmxvYi0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIHdy
aXRlKGJsb2ItPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoYmxvYi0+c2l6ZSgpKTsK
QEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoYXV0byoga2V5
ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAgICAgICAgICAgICAgIHdy
aXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlh
bGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZHVtbXlCbG9iVVJMczsK
KyAgICAgICAgICAgICAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiBkdW1teUJsb2JIYW5kbGVzOwog
ICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQ
b3J0czsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBk
dW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC0xMzE2LDcgKzEz
MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBkdW1teU1vZHVsZXMsCiAgICAg
ICAgICAgICAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICAgICAg
ICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJpYWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4
dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgZHVt
bXlCbG9iSGFuZGxlcywgc2VyaWFsaXplZEtleSwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1
bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAgICAgICAgICAgICAgICAgcmF3S2V5U2VyaWFsaXpl
ci53cml0ZShrZXkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5
OwogICAgICAgICAgICAgICAgIGlmICghd3JhcENyeXB0b0tleShtX2xleGljYWxHbG9iYWxPYmpl
Y3QsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRLZXkpKQpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgd3JpdGUoY29uc3QgRmlsZSYgZmlsZSkKICAgICB7Ci0gICAgICAg
IG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUudXJsKCkuc3RyaW5nKCkpOworICAgICAgICBtX2Jsb2JI
YW5kbGVzLmFwcGVuZChmaWxlLmhhbmRsZSgpKTsKICAgICAgICAgd3JpdGUoZmlsZS5wYXRoKCkp
OwogICAgICAgICB3cml0ZShmaWxlLnVybCgpLnN0cmluZygpKTsKICAgICAgICAgd3JpdGUoZmls
ZS50eXBlKCkpOwpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIFZlY3RvcjxTdHJpbmc+JiBtX2Jsb2JVUkxz
OworICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBtX2Jsb2JIYW5kbGVzOwogICAgIE9iamVjdFBv
b2wgbV9vYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
czsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnM7CkBAIC0zOTE1LDcg
KzM5MTUsNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShW
ZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcQogICAgIG1fbWVtb3J5Q29zdCA9IGNv
bXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IHNoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXksIFZlY3RvcjxzdGQ6Om9wdGlvbmFs
PEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcworU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25z
dCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJh
eSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3Rv
cmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYKQEAgLTM5NDEsMTIgKzM5NDEsOCBAQCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBi
dWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV93YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1v
ZHVsZXNBcnJheSkpCiAgICAgLCBtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXkoV1RGTW92ZSh3YXNt
TWVtb3J5SGFuZGxlc0FycmF5KSkKICNlbmRpZgorICAgICwgbV9ibG9iSGFuZGxlcyhibG9iSGFu
ZGxlcykKIHsKLSAgICAvLyBTaW5jZSB0aGlzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBtZWFu
dCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzLCBpdHMgU3RyaW5nIGRhdGEgbWVtYmVycwot
ICAgIC8vIG5lZWQgdG8gYmUgaXNvbGF0ZWRDb3BpZXMgc28gd2UgZG9uJ3QgcnVuIGludG8gdGhy
ZWFkIHNhZmV0eSBpc3N1ZXMgZm9yIHRoZSBTdHJpbmdJbXBscy4KLSAgICBtX2Jsb2JVUkxzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYmxvYlVSTHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHVy
bCA6IGJsb2JVUkxzKQotICAgICAgICBtX2Jsb2JVUkxzLnVuY2hlY2tlZEFwcGVuZCh1cmwuaXNv
bGF0ZWRDb3B5KCkpOwogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9
CiAKQEAgLTM5OTAsOCArMzk4Niw4IEBAIHNpemVfdCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNv
bXB1dGVNZW1vcnlDb3N0KCkgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAgIGZvciAoYXV0byYg
dXJscyA6IG1fYmxvYlVSTHMpCi0gICAgICAgIGNvc3QgKz0gdXJscy5zaXplSW5CeXRlcygpOwor
ICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9ibG9iSGFuZGxlcykKKyAgICAgICAgY29zdCArPSBo
YW5kbGUudXJsKCkuc3RyaW5nKCkuc2l6ZUluQnl0ZXMoKTsKIAogICAgIHJldHVybiBjb3N0Owog
fQpAQCAtNDA2OSw3ICs0MDY1LDcgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJp
YWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRp
b25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CisgICAgVmVjdG9yPEJsb2I6OkhhbmRs
ZT4gYmxvYkhhbmRsZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVz
c2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0
bWFwczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtNDA5NSw3
ICs0MDkxLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICAgICAgZHVtbXlNb2R1bGVz
LAogICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgYmxvYlVSTHMs
IGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVy
cyk7CisgICAgICAgIGJsb2JIYW5kbGVzLCBidWZmZXIsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpE
ZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVzLmlzRW1wdHkoKSwgIldhc206Ok1v
ZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29u
dGV4dCIpOwpAQCAtNDEwOCw3ICs0MTA0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAg
ICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxl
dGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRy
LCBudWxscHRyLCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwg
eyB9KSk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zRHVwbGljYXRlcyhjb25zdCBWZWN0b3I8
UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcykKQEAgLTQyMTcsNyArNDIxMyw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CisgICAgVmVjdG9yPEJsb2I6Okhh
bmRsZT4gYmxvYkhhbmRsZXM7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1
bGVBcnJheSB3YXNtTW9kdWxlczsKICAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgd2FzbU1lbW9y
eUhhbmRsZXM7CkBAIC00MjM0LDcgKzQyMzAsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgog
ICAgICAgICB3YXNtTW9kdWxlcywKICAgICAgICAgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYK
LSAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29udGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOworICAg
ICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBjb250ZXh0LCAqc2hhcmVkQnVmZmVycyk7CiAKICAg
ICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxl
dGVkKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoY29k
ZSk7CkBAIC00MjU2LDcgKzQyNTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAg
ICBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hcHBlbmQoY2hhbm5lbC0+ZGV0YWNoKCkpOwogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0
TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGJhY2tp
bmdTdG9yZXMpCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRsZXMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29y
a2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92
ZShiYWNraW5nU3RvcmVzKQogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMp
CiAgICAgICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkQ2FudmFzZXMpCiAjZW5kaWYKQEAg
LTQzNjIsMTIgKzQzNTgsMTIgQEAgdWludDMyX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJl
Rm9ybWF0VmVyc2lvbigpCiAgICAgcmV0dXJuIEN1cnJlbnRWZXJzaW9uOwogfQogCi1WZWN0b3I8
U3RyaW5nPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJsb2JVUkxzSXNvbGF0ZWRDb3B5KCkgY29u
c3QKK1ZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YmxvYlVSTHMoKSBjb25z
dAogewogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX2Jsb2JVUkxzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiB1cmwgOiBtX2Js
b2JVUkxzKQotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHVybC5pc29sYXRlZENvcHko
KSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9ibG9iSGFuZGxlcy5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9ibG9iSGFuZGxlcykKKyAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChoYW5kbGUudXJsKCkuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTQzNzcsNyArNDM3Myw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7
CiAKLSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JV
UkxzLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMp
IG11dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KGJsb2JVUkxzKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZp
bGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0eSgpKSB7CkBAIC00Mzg3LDkgKzQzODMsOSBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWRE
QihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgQVNTRVJUKG1fYmxvYlVSTHMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fYmxvYkhhbmRsZXMuc2l6ZSgpID09IGJsb2JGaWxlUGF0
aHMuc2l6ZSgpKTsKIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0aGlzLCBtX2Jsb2JV
UkxzLCBibG9iRmlsZVBhdGhzIH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0aGlz
LCBibG9iVVJMcygpLCBibG9iRmlsZVBhdGhzIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDFj
NzU0NWVjYjU3MTM5M2YyODU4MzYwYWRjMDFlOGM4OThlNjUwYmYuLjE2YzQ5MTk1ZmZjNGY2ZTY5
NzdhNzQ4OGI0ZDZjMjk4NTQ5YTM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRldGFjaGVkUlRDRGF0YUNo
YW5uZWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyLmg+CkBAIC05NSw5ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KLSAgICBib29sIGhhc0Jsb2JVUkxzKCkgY29uc3QgeyByZXR1cm4g
IW1fYmxvYlVSTHMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsg
cmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCi0gICAgVmVjdG9yPFN0cmluZz4g
YmxvYlVSTHNJc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJM
cygpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvYkhhbmRsZXM7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rp
c2tGb3JJbmRleGVkREIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CiAg
ICAgSURCVmFsdWUgd3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsK
ICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRl
cyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtMTIxLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICAgICAgKTsKIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYg
YmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+LCBz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzLCBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMK
ICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmID0geyB9CiAjZW5k
aWYKQEAgLTE1MCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNt
TW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Fz
bU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21NZW1vcnlIYW5kbGVzQXJyYXk7CiAjZW5kaWYKLSAg
ICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOworICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IG1f
YmxvYkhhbmRsZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5Q29zdCB7IDAgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCA4MjcxZDFmNDk4ZDVmODcxZDZm
YWQ0MjJjNmQwODdjMGJjZTJiZDFlLi42NjQwMWJiMGJmYjQzOGM4ZWQ0MTcwYjEzODkyN2NmZDI0
OThlZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2lu
Y2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTk1LDggKzk2LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEJyb2FkY2FzdENo
YW5uZWw6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjCiAgICAg
QVNTRVJUKHBvcnRzLmlzRW1wdHkoKSk7CiAKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW29yaWdp
biA9IGNyb3NzVGhyZWFkQ29weShtX29yaWdpbiksIG5hbWUgPSBjcm9zc1RocmVhZENvcHkobV9u
YW1lKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgbWVzc2FnZURhdGEgPSBtZXNzYWdlRGF0
YS5yZWxlYXNlUmV0dXJuVmFsdWUoKV0oYXV0byYgZG9jdW1lbnQpIG11dGFibGUgewotICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLnBvc3RNZXNzYWdlKG9yaWdpbiwgbmFtZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShtZXNzYWdlRGF0YSkpOworICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1l
bnQucGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBibG9iSGFuZGxlcyA9IG1lc3NhZ2VEYXRhLT5ibG9iSGFuZGxlcygpOworICAg
ICAgICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKS5wb3N0TWVzc2FnZShvcmlnaW4s
IG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZURhdGEpLCBbYmxvYkhhbmRsZXMgPSBX
VEZNb3ZlKGJsb2JIYW5kbGVzKV0geworICAgICAgICAgICAgLy8gS2VlcHMgQmxvYiBkYXRhIGlu
c2lkZSBtZXNzYWdlRGF0YSBhbGl2ZSB1bnRpbCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBkZWxpdmVy
ZWQuCisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTExNSwxNCAr
MTIyLDE1IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6Y2xvc2UoKQogICAgIH0pOwogfQogCi12
b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJ
ZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IG1lc3NhZ2UpCit2b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gY29u
dGV4dElkZW50aWZpZXIgPSBjaGFubmVsVG9Db250ZXh0SWRlbnRpZmllcigpLmdldChjaGFubmVs
SWRlbnRpZmllcik7CiAgICAgaWYgKCFjb250ZXh0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZpZXIsIFtjaGFubmVsSWRlbnRp
ZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0
VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2hhbm5lbElkZW50aWZpZXIsIG1lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdn
cmVnYXRvcildKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPEJyb2FkY2FzdENoYW5u
ZWw+IGNoYW5uZWw7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxC
cm9hZGNhc3RDaGFubmVsc0xvY2sgfTsKQEAgLTEzMCw2ICsxMzgsOCBAQCB2b2lkIEJyb2FkY2Fz
dENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNo
YW5uZWxJZGVudAogICAgICAgICB9CiAgICAgICAgIGlmIChjaGFubmVsKQogICAgICAgICAgICAg
Y2hhbm5lbC0+ZGlzcGF0Y2hNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOworCisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dy
ZWdhdG9yKV0geyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0Jyb2FkY2FzdENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFu
bmVsLmgKaW5kZXggMWZmNThiZGE3NjYyMjIxNGQ2YjAwNGJmYmQ5OGMyOGRkYjA0NWNkMy4uM2Ri
YThmOGVkYzQwYmMzNjdjNTdkM2JjOTk1M2UyOTRmNDU0MDEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QnJvYWRjYXN0Q2hhbm5lbC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVl
IG1lc3NhZ2UpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VUbyhCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJp
dmF0ZToKICAgICBCcm9hZGNhc3RDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oCmluZGV4IGZhNmViYzg5NDkzYTllNThkZWNhYjNmNDlkMmQ1Yjk0ZWZiNzRkNjgu
LjVjMmJmYjA1NDdmMzYxNTZiZWVhMWRmMWNkYjVmM2ZkMGEzNWViYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNoYW5uZWwoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyQ2hhbm5lbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuY3BwCmluZGV4IDNmNDA5YTQ3ZWQzYjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdi
MWUuLjUyM2NmZWI2Mzk4YWNmMTE0ZWJhNmY0Y2JmMTlmZDJiYTFkZjRhNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTgsNyArNTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFVSTFJlZ2lzdHJ5JiByZWdp
c3RyeSgpOwogfTsKIAotCiB2b2lkIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lz
dHJhYmxlJiBibG9iKQogewogICAgIEFTU0VSVCgmYmxvYi5yZWdpc3RyeSgpID09IHRoaXMpOwpA
QCAtNzYsMjQgKzc2LDUzIEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5
KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKKy8vIFVucmVnaXN0ZXJzIHRoZSBCbG9iJ3Mg
aW50ZXJuYWwgVVJMIHVwb24gZGVzdHJ1Y3Rpb24uIFRoaXMgY2FuIGJlIHVzZWQgdG8gZXh0ZW5k
IHRoZSBsaWZldGltZSBvZiB0aGUgQmxvYiBkYXRhCisvLyB3aXRob3V0IGFjdHVhbGx5IGtlZXBp
bmcgdGhlIEJsb2Igb2JqZWN0IGFsaXZlLgorY2xhc3MgQmxvYkludGVybmFsVVJMIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEJsb2JJbnRlcm5hbFVSTD4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlKFVS
TCYmIHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JJbnRlcm5h
bFVSTChjcm9zc1RocmVhZENvcHkodXJsKSkpOworICAgIH0KKworICAgIH5CbG9iSW50ZXJuYWxV
UkwoKQorICAgIHsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwobV9pbnRlcm5hbFVSTCk7CisgICAgfQorCisgICAgVVJMIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxVUkwuaXNvbGF0ZWRDb3B5KCk7IH0KKworcHJpdmF0ZToKKyAgICBCbG9i
SW50ZXJuYWxVUkwoVVJMJiYgaW50ZXJuYWxVUkwpCisgICAgICAgIDogbV9pbnRlcm5hbFVSTChX
VEZNb3ZlKGludGVybmFsVVJMKSkKKyAgICB7IH0KKworICAgIFVSTCBtX2ludGVybmFsVVJMOwor
fTsKKwogQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKKyAg
ICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoV1RGTW92ZSh1cmwpKSkK
ICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQogewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkK
KyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoKSkKICAgICAsIG1f
c2l6ZSgwKQogewotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVS
TCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVy
bmFsVVJMLCB7IH0sICB7IH0pOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX2ludGVybmFsVVJMLT51cmwoKSwgeyB9LCAgeyB9KTsKIH0KIAogQmxvYjo6Qmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50
PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcp
CiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX2ludGVybmFsVVJMKEJs
b2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRl
cm5hbFVSTDo6Y3JlYXRlKCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHBy
b3BlcnR5QmFnLnR5cGUpKQogewogICAgIEJsb2JCdWlsZGVyIGJ1aWxkZXIocHJvcGVydHlCYWcu
ZW5kaW5ncyk7CkBAIC0xMDUsNTYgKzEzNCw2NiBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYQog
ICAgICAgICApOwogICAgIH0KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CisgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwtPnVy
bCgpLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQorICAg
ICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6OmNyZWF0ZSgpKQogICAgICwgbV90eXBl
KGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQogewogICAgIFZlY3RvcjxC
bG9iUGFydD4gYmxvYlBhcnRzOwogICAgIGJsb2JQYXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92
ZShkYXRhKSkpOwotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVS
TCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVy
bmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTC0+dXJsKCksIFdURk1v
dmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5n
RXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEJsb2ImIGJsb2IpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAs
IG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKKyAgICAsIG1faW50
ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoKSkKICAgICAsIG1fdHlwZShibG9iLnR5
cGUoKSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVy
bCgpKSB9ICwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwobV9pbnRlcm5hbFVSTC0+dXJsKCksIHsgQmxvYlBhcnQoYmxvYi51cmwoKSkgfSAsIG1f
dHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0
cmluZyYgZmlsZUJhY2tlZFBhdGgpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAg
ICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoKSkKICAgICAsIG1fdHlw
ZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKLSAg
ICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKICAgICBpZiAo
ZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwobnVsbHB0ciwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKKyAgICAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50
ZXJuYWxVUkwtPnVybCgpLCBzcmNVUkwpOwogICAgIGVsc2UKLSAgICAgICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5h
bFVSTCwgc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKKyAgICAgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRl
cm5hbFVSTC0+dXJsKCksIHNyY1VSTCwgZmlsZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKIEJs
b2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiBzcmNV
UkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JJ
bnRlcm5hbFVSTDo6Y3JlYXRlKCkpCiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBl
KHR5cGUpKQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0g
c3RhcnQgc28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKLSAgICBtX2ludGVybmFs
VVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0
YXJ0LCBlbmQsIG1fdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UobV9pbnRlcm5hbFVSTC0+dXJsKCksIHNyY1VSTCwgc3RhcnQsIGVuZCwg
bV90eXBlKTsKIH0KIAogQmxvYjo6fkJsb2IoKQogewogICAgIHdoaWxlICghbV9ibG9iTG9hZGVy
cy5pc0VtcHR5KCkpCiAgICAgICAgICgqbV9ibG9iTG9hZGVycy5iZWdpbigpKS0+Y2FuY2VsKCk7
Cit9CiAKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2lu
dGVybmFsVVJMKTsKK1VSTCBCbG9iOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVy
bmFsVVJMLT51cmwoKTsKK30KKworUmVmPEJsb2I+IEJsb2I6OnNsaWNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgY29uc3QKK3sKKyAgICBhdXRvIGJsb2IgPSBhZG9wdFJlZigq
bmV3IEJsb2IoJmNvbnRleHQsIG1faW50ZXJuYWxVUkwtPnVybCgpLCBzdGFydCwgZW5kLCBjb250
ZW50VHlwZSkpOworICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBibG9i
OwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYjo6c2l6ZSgpIGNvbnN0CkBAIC0xNjIsNyAr
MjAxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUoKSBjb25zdAogICAgIGlmICgh
bV9zaXplKSB7CiAgICAgICAgIC8vIEZJWE1FOiBKYXZhU2NyaXB0IGNhbm5vdCByZXByZXNlbnQg
c2l6ZXMgYXMgbGFyZ2UgYXMgdW5zaWduZWQgbG9uZyBsb25nLCB3ZSBuZWVkIHRvCiAgICAgICAg
IC8vIGNvbWUgdXAgd2l0aCBhbiBleGNlcHRpb24gdG8gdGhyb3cgaWYgZmlsZSBzaXplIGlzIG5v
dCByZXByZXNlbnRhYmxlLgotICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0dWFsU2l6ZSA9
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxVUkwpOworICAgICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OmJsb2JTaXplKG1faW50ZXJuYWxVUkwtPnVybCgpKTsKICAgICAgICAgbV9zaXplID0gaXNJbkJv
dW5kczxsb25nIGxvbmc+KGFjdHVhbFNpemUpID8gYWN0dWFsU2l6ZSA6IDA7CiAgICAgfQogCkBA
IC0zMzUsNSArMzc0LDIzIEBAIGNvbnN0IGNoYXIqIEJsb2I6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAogICAgIHJldHVybiAiQmxvYiI7CiB9CiAKK0Jsb2I6OkhhbmRsZSBCbG9iOjpoYW5k
bGUoKSBjb25zdAoreworICAgIHJldHVybiBIYW5kbGUgeyBtX2ludGVybmFsVVJMLmNvcHlSZWYo
KSB9OworfQorCitCbG9iOjpIYW5kbGU6OkhhbmRsZShSZWY8QmxvYkludGVybmFsVVJMPiYmIGlu
dGVybmFsVVJMKQorICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKGludGVybmFsVVJMKSkKK3sg
fQorCitCbG9iOjpIYW5kbGU6On5IYW5kbGUoKSA9IGRlZmF1bHQ7CisKK0Jsb2I6OkhhbmRsZTo6
SGFuZGxlKEhhbmRsZSYmKSA9IGRlZmF1bHQ7CitCbG9iOjpIYW5kbGU6OkhhbmRsZShjb25zdCBI
YW5kbGUmKSA9IGRlZmF1bHQ7CisKK1VSTCBCbG9iOjpIYW5kbGU6OnVybCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW50ZXJuYWxVUkwtPnVybCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IGZkMTc5ZTA2MjExNmUyNDQzZGUxMjg0MzVkZWRh
ZTg3MzA2NWVhNDQuLmNmZGUyYzMyZmIwN2M1MTljNDYwMjdkMjA1YTUzZDNmZDE0YmY0YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIAogdXNpbmcgQmxvYlBhcnRW
YXJpYW50ID0gVmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4sIFJlZlB0cjxCbG9iPiwgU3RyaW5nPjsKK2NsYXNzIEJsb2JJbnRlcm5h
bFVSTDsKIAogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBVUkxS
ZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQ
T1JUKTsKQEAgLTkyLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+QmxvYigpOwog
Ci0gICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsVVJMOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKQEAgLTExMCwxNyArMTExLDI2IEBAIHB1YmxpYzoK
ICAgICAvLyBVUkxSZWdpc3RyYWJsZQogICAgIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgUmVmPEJsb2I+IHNsaWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpu
ZXcgQmxvYigmY29udGV4dCwgbV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUp
KTsKLSAgICAgICAgYmxvYi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgICAgIHJldHVybiBibG9i
OwotICAgIH0KKyAgICBSZWY8QmxvYj4gc2xpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
Y29uc3Q7CiAKICAgICB2b2lkIHRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgYXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxSZWFk
YWJsZVN0cmVhbT4+IHN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKKyAgICBjbGFz
cyBIYW5kbGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgSGFuZGxlKFJlZjxCbG9i
SW50ZXJuYWxVUkw+JiYpOworICAgICAgICB+SGFuZGxlKCk7CisgICAgICAgIEhhbmRsZShIYW5k
bGUmJik7CisgICAgICAgIEhhbmRsZShjb25zdCBIYW5kbGUmKTsKKyAgICAgICAgVVJMIHVybCgp
IGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxCbG9iSW50ZXJuYWxVUkw+IG1faW50
ZXJuYWxVUkw7CisgICAgfTsKKworICAgIC8vIEtlZXBpbmcgdGhlIGhhbmRsZSBhbGl2ZSB3aWxs
IGtlZXAgdGhlIEJsb2IgZGF0YSBhbGl2ZSAoYnV0IG5vdCB0aGUgQmxvYiBvYmplY3QpLgorICAg
IEhhbmRsZSBoYW5kbGUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIEJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQ
cm9wZXJ0eUJhZyYpOwpAQCAtMTQ3LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBp
cyBhbiBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlmaWVyIGZvciB0
aGlzIGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3VyY2UgdGhlIGJs
b2IncyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVhZCdpbmcsIHB1
YmxpYyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4KLSAgICBVUkwg
bV9pbnRlcm5hbFVSTDsKKyAgICBSZWY8QmxvYkludGVybmFsVVJMPiBtX2ludGVybmFsVVJMOwog
CiAgICAgU3RyaW5nIG1fdHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBhM2M5OGIxZTNjYTdhYjc2ZWUxZjBhMWIwZTgxYTgxZWNkODlhYjE3Li44ZGNhNzVi
OTQwNzk1MDc4OTIzNmQyYWExMjBmNDNhN2IzYjFjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMTE3NSw3ICsxMTc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmlu
ZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICB2b2lkIHVucmVn
aXN0ZXJDaGFubmVsKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbCB7IH0KLSAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5u
ZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmlu
ZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsIHsgfQogfTsKIAogUGFnZUNv
bmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCmluZGV4IGJlODhh
NTM2OTViOWI0ZGI1ZTM2NWYyNTIxODQ2YTliZjA5MDNjN2YuLjliODZlYmZjMzAzNDNiNGU0NTQ1
MzJmMjZjMGFiMjgxZGZkMzU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+
CisjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNTgsMjMgKzU5LDI4IEBAIHZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0CiAgICAgY2hh
bm5lbHNGb3JOYW1lSXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KGdsb2JhbENoYW5uZWxJZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpw
b3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID0gbV9icm9h
ZGNhc3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNoYW5uZWxzRm9yT3JpZ2lu
SXRlcmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAgICAgaWYgKGNoYW5uZWxz
Rm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICBhdXRvIGNo
YW5uZWxzRm9yTmFtZUl0ZXJhdG9yID0gY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvci0+dmFsdWUu
ZmluZChuYW1lKTsKICAgICBBU1NFUlQoY2hhbm5lbHNGb3JOYW1lSXRlcmF0b3IgIT0gY2hhbm5l
bHNGb3JPcmlnaW5JdGVyYXRvci0+dmFsdWUuZW5kKCkpOwogICAgIGlmIChjaGFubmVsc0Zvck5h
bWVJdGVyYXRvciA9PSBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAorICAg
IGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIEdsb2JhbEJyb2FkY2FzdENoYW5uZWxJZGVu
dGlmaWVyIHNvdXJjZUdsb2JhbENoYW5uZWxJZGVudGlmaWVyIHsgY29ubmVjdGlvbi51bmlxdWVJ
RCgpLCBzb3VyY2UgfTsKICAgICBmb3IgKGF1dG8mIGdsb2JhbElkZW50aWZpZXIgOiBjaGFubmVs
c0Zvck5hbWVJdGVyYXRvci0+dmFsdWUpIHsKICAgICAgICAgaWYgKGdsb2JhbElkZW50aWZpZXIg
PT0gc291cmNlR2xvYmFsQ2hhbm5lbElkZW50aWZpZXIpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoZ2xvYmFsSWRlbnRpZmllci5jb25uZWN0
aW9uSWRlbnRpZmllciwgTWVzc2FnZXM6OldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UG9z
dE1lc3NhZ2VUb1JlbW90ZShnbG9iYWxJZGVudGlmaWVyLmNoYW5uZWxJbmRlbnRpZmllckluUHJv
Y2VzcywgbWVzc2FnZSksIDApOworICAgICAgICBSZWZQdHIgY29ubmVjdGlvbiA9IElQQzo6Q29u
bmVjdGlvbjo6Y29ubmVjdGlvbihnbG9iYWxJZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnk6OlBvc3RNZXNzYWdlVG9SZW1vdGUoZ2xvYmFsSWRlbnRpZmllci5j
aGFubmVsSW5kZW50aWZpZXJJblByb2Nlc3MsIG1lc3NhZ2UpLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0sIDApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAppbmRleCAw
MWIxOTQ2MThjZDI2ODQwZDU1N2UyZjU3ZGE3ZWFiODI1NjRmMzA5Li40MTVhNjk2NWI5YTUzYzcx
ZGViMDI1MDE0OGI0NTBkZmRiNmYxZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJDaGFubmVsKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIpOwotICAgIHZvaWQgcG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpOworICAgIHZvaWQgcG9zdE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEdsb2JhbEJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgppbmRl
eCAxYWE5YzFiZmE4YTVmOWNlMGI0YTk0ZTEyNjhhYTM4ZGIzZGQ3OTcxLi45YjY4NTBiOTU1ODMz
NzZlNDk5MWQyMTVhMmNkZDcxNTQ0OWFmZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCkBAIC0yMyw1ICsyMyw1IEBACiBtZXNzYWdlcyAtPiBOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IE5vdFJlZkNvdW50ZWQgewogICAgIFJlZ2lzdGVy
Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiwgU3RyaW5n
IG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlm
aWVyKSBXYW50c0Nvbm5lY3Rpb24KICAgICBVbnJlZ2lzdGVyQ2hhbm5lbChzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiwgU3RyaW5nIG5hbWUsIFdlYkNvcmU6OkJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyKSBXYW50c0Nvbm5lY3Rpb24K
LSAgICBQb3N0TWVzc2FnZShzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdp
biwgU3RyaW5nIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJj
ZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpIFdhbnRz
Q29ubmVjdGlvbgorICAgIFBvc3RNZXNzYWdlKHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgb3JpZ2luLCBTdHJpbmcgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50
aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVz
c2FnZSkgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggMmFiMGZjMjY1MzFjNzczZjUxZDZkMmQ1NTg2
ODRiZGExMzZiYjZhYS4uOTg5YmI3MjNmOThkN2RkMjgxOGE0MWVmNjEzMzdmZTY5YzNmY2Q1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjAwLDE1
ICsyMDAsMjAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29u
bmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmpl
Y3QsIE1GIGZ1bmN0aW9uKQogeworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxpc3RlbmVy
SUQ7CisgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklEOworICAgIGlmICghbGlzdGVuZXJJRCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNvZGVyID4+IGFy
Z3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVu
ZXJJRCA9IGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25u
ZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICB0eXBlbmFtZSBUOjpBc3lu
Y1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBj
b25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihUOjphc3lu
Y01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92
ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7Ci0gICAgfTsKKyAgICB9
LCBUOjpjYWxsYmFja1RocmVhZCB9OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9u
LCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0
LCBmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5jcHAKaW5kZXggNzg5YzE2M2Y2YjU4NjhjYmNkODc1NTlhMGViOTcyMThhMDQ1NmNkMy4uNmRj
N2Q2YWJhMDFlNThjYzNiMWIxYzhiOWIwMmZiMDNkZjU1OTkyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBAQCB2b2lkIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaQogICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlVucmVnaXN0ZXJDaGFubmVs
IHsgb3JpZ2luLCBuYW1lLCBpZGVudGlmaWVyIH0sIDApOwogfQogCi12b2lkIFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3Nh
Z2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
OjpQb3N0TWVzc2FnZSB7IG9yaWdpbiwgbmFtZSwgc291cmNlLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyB7IFdURk1vdmUobWVzc2FnZSksIHsgfSB9IH0sIDApOworICAgIG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2UgeyBvcmlnaW4sIG5hbWUsIHNv
dXJjZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgeyBXVEZNb3ZlKG1lc3NhZ2Up
LCB7IH0gfSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKGlkZW50aWZpZXIsIG1l
c3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhpZGVudGlmaWVyLCBtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApp
bmRleCA1ZDRmNmM0MDhhMTdiZDI5MDlkNmM0NjJkNGQ0Njg5MWVlY2QxMWY0Li40NGEzZDM4MmMw
ODE1MGY3YTA5YThlOGU5N2ZjMjg2Y2FhYzE3YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oCkBAIC00MywxNCArNDMsMTQgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJ
ZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogcHJpdmF0
ZToKICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4KaW5kZXggYjA0MTczYWZmYjQ2YjE3
ZDMxYjM5N2RhMWViZTc0MTIyNGNiZTM5ZC4uMDdhZjUyZjhkOGU0ODcyMWE2MDBkZTZkNTNjNzA0
NDhlMzJlY2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5Lm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1l
c3NhZ2VzIC0+IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSB7Ci0gICAgUG9zdE1lc3NhZ2VU
b1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBkZXN0aW5hdGlvbiwg
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpCisgICAgUG9z
dE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBkZXN0
aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2Up
IC0+ICgpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKaW5kZXgg
MTEyNmUzYTkzMDgyMjc1NzkxMTJhYmRkNjFkY2RhYmM4NzViNDkzNi4uNDVjMzJhMWIzODU4OWIy
YmQzYzg5YTczOGY3YTk4MmFlMmMzMjgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9Ccm9hZGNhc3RD
aGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNp
bmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNjUsOSArNjYsMTEgQEAg
dm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2kKICAgICBjaGFubmVsc0Zvck5hbWVJdGVyYXRvci0+dmFs
dWUucmVtb3ZlRmlyc3QoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRl
bnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSkKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0
ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKICAgICBhdXRvIGNoYW5uZWxzRm9yT3Jp
Z2luSXRlcmF0b3IgPSBtX2NoYW5uZWxzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoY2hhbm5l
bHNGb3JPcmlnaW5JdGVyYXRvciAhPSBtX2NoYW5uZWxzLmVuZCgpKTsKICAgICBpZiAoY2hhbm5l
bHNGb3JPcmlnaW5JdGVyYXRvciA9PSBtX2NoYW5uZWxzLmVuZCgpKQpAQCAtNzgsNiArODEsNiBA
QCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJgogICAgIGZvciAoYXV0byYgY2hhbm5lbElkZW50aWZp
ZXIgOiBjaGFubmVsc0Zvck5hbWVJdGVyYXRvci0+dmFsdWUpIHsKICAgICAgICAgaWYgKGNoYW5u
ZWxJZGVudGlmaWVyID09IHNvdXJjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhjaGFubmVsSWRlbnRp
ZmllciwgbWVzc2FnZS5jb3B5UmVmKCkpOworICAgICAgICBXZWJDb3JlOjpCcm9hZGNhc3RDaGFu
bmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhjaGFubmVsSWRlbnRpZmllciwgbWVzc2FnZS5jb3B5UmVm
KCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmgKaW5kZXggZjVjN2NmNTUxOGI4YTY4MWY0YjhmNWM4MzBkZWMyZTY4YmYx
ODE5Ny4uMzcxMTMyMjA1MWM3YjgxZjZiMjFhNWZiNGMxNWMwMDcwNjNkOTQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIp
IGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFu
bmVsSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdj
MzM4ZjFmY2I4YzM4OGQ0MGM4NmUzNGQ4ZDVjMzg3Zjk5YTNjYS4uMzI0YzQ1N2NiZDllZGZmMDU0
NjMxMWNhMWY0ZjliYmEyNjAxNGM0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTI5
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5o
dG1sIGlzIGEgZmxha3kgZmFpbHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcgQmxvYkNoYW5uZWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE2OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODA5MjI1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHRlc3QgdGhhdCBpcyBubyBsb25nZXIgZmxh
a3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDctMjkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1bnNraXAg
c3RvcmFnZS9pbmRleGVkZGIvZGV0YWNoZWQtaWZyYW1lLmh0bWwgbm93IHRoYXQgaXQgaXMgbm8g
bG9uZ2VyIGZsYWt5IGFmdGVyIHIyODA0MjYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzM5ZDQ4ZTAxYmQ4NTdjNGE1NzRkNTVlNDZkNjI5
MTMwNmNiM2ZkMi4uNjRmZmZiNDAzYmExYmNjN2I5M2M2ZDJmYjFhMzU2MzljMjdmZWI5YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTk5
MSw4ICsxOTkxLDYgQEAgd2Via2l0Lm9yZy9iLzIyODExNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2NvbnRlbnQtdHlwZS9zY3JpcHQud2kKIAogd2Via2l0Lm9yZy9iLzIy
ODEyNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9w
ZW5lci1wb2xpY3kvcmVzb3VyY2UtcG9wdXAuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8yMjgxNjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQog
d2Via2l0Lm9yZy9iLzIyNzk5OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWVtYmVkLWVsZW1lbnQvZW1iZWQtbmV0d29y
ay1lcnJvci5zdWIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjc3NjIg
WyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlv
bi9mb2N1cy90aGUtYXV0b2ZvY3VzLWF0dHJpYnV0ZS9kb2N1bWVudC13aXRoLWZyYWdtZW50LXZh
bGlkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA3MmExYjk3Y2U4NzM1MmJjZThlMDYwNTEyMGUwNTU0N2EwNzQ4MTg3
Li43MjlmY2RhZGE4OWZkMDUxNTFjZTUyOGNhYTY3ZGM1OGQ4ZTFlNzAwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM0NSw4ICsyMzQ1LDYgQEAgd2Vi
a2l0Lm9yZy9iLzIxNDU3NCBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1p
bnN0YW5jZXMuc3ZnIFsgUGFzcwogCiB3ZWJraXQub3JnL2IvMjI4MTI3IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJj
ZS1wb3B1cC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIyODE2
OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3Rj
aGFubmVsL2Jsb2JzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjIyMzg1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2V2ZW50LXVwbG9hZC1wcm9ncmVz
cy1jcm9zc29yaWdpbi5hbnkud29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMjI3OTk4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC90aGUtZW1iZWQtZWxlbWVudC9lbWJlZC1uZXR3b3JrLWVycm9y
LnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434662</attachid>
            <date>2021-07-30 14:28:37 -0700</date>
            <delta_ts>2021-07-30 16:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228168-20210730142836.patch</filename>
            <type>text/plain</type>
            <size>52155</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3NDRkMmNiM2QwMTcx
M2NjZGM3M2U2ODZkODhlOTgwMWVhZDE0ZS4uMWUxYTcyODU2M2JjZDgxYmY5OTJlOGMxMjYwYWVi
YmVhOTFiNDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA3LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIGlz
IGEgZmxha3kgZmFpbHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcgQmxvYkNoYW5uZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE2OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODA5MjI1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHRlc3Qgd2FzIGZsYWt5IGJlY2F1c2UgaXQgaXMgdHJ5aW5n
IHRvIHNlbmQgYSBCbG9iIHZpYSBCcm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlKCkKKyAgICAg
ICAgd2l0aG91dCBrZWVwaW5nIHRoZSBibG9iIGFsaXZlLiBXaGVuIEdDIHRyaWdnZXJzLCB0aGUg
QmxvYiB3b3VsZCBnbyBhd2F5IGFuZCB0cnlpbmcgdG8KKyAgICAgICAgZGVjb2RlIHRoZSBCbG9i
IHVwb24gcmVjZWl2aW5nIHdvdWxkIGZhaWwuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIEkgaW50cm9kdWNlZCBhIEJsb2I6OkhhbmRsZSBjbGFzcyB0aGF0IHdyYXBzIHRoZSBCbG9i
J3MgaW50ZXJuYWwgVVJMCisgICAgICAgIGFuZCBrZWVwcyB0aGUgQmxvYiBkYXRhIGFsaXZlIGFz
IGxvbmcgYXMgYXMgc29tZW9uZSBpcyBob2xkaW5nIHN1Y2ggaGFuZGxlLiBQcmV2aW91c2x5LAor
ICAgICAgICB0aGUgQmxvYiBkZXN0cnVjdG9yIHdvdWxkIHVucmVnaXN0ZXIgdGhlIGludGVybmFs
IFVSTCBhbmQgdGhlIEJsb2IgZGF0YSB3b3VsZCBnbyBhd2F5LgorCisgICAgICAgIEkgdGhlbiB1
cGRhdGVkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byBob2xkIG9uIHRvIEJsb2I6OkhhbmRsZSBv
YmplY3RzIGluc3RlYWQgb2YgQmxvYgorICAgICAgICBVUkxzLiBUaGlzIGd1YXJhbnRlZXMgdGhh
dCB3aGVuIHVzaW5nIHBvc3RNZXNzYWdlKCkgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gYSB3b3JrZXIs
IHRoZQorICAgICAgICBCbG9iIGRhdGEgd2lsbCBzdGF5IGFsaXZlIHVudGlsIHdlIGRpc3BhdGNo
IHRoZSBtZXNzYWdlIGV2ZW50IG9uIHRoZSB3b3JrZXIgc2lkZSBhbmQgdHJ5CisgICAgICAgIGFu
ZCBkZXNlcmlhbGl6ZWQgdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKworICAgICAgICBGb3Ig
QnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZSgpIHRob3VnaCwgd2UgZW5kIHVwIGdvaW5nIHZp
YSB0aGUgbmV0d29yayBwcm9jZXNzIGFuZAorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGVuZHMgdXAgZ2V0dGluZyBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZCBvdmVyIElQQy4gSSBh
ZGRlZCBhCisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyIHRvIEJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6cG9zdE1lc3NhZ2UoKSB3aGljaCBvbmx5IGdldHMgY2FsbGVkCisgICAgICAgIG9uY2Ug
dGhlIG1lc3NhZ2UgZXZlbnQgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGRpc3BhdGNoZWQuIEkgdXNl
IHRoaXMgY29tcGxldGlvbiBoYW5kbGVyCisgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGUgU2VyaWFs
aXplZFNjcmlwdFZhbHVlJ3MgQmxvYiBVUkxzIHN0YXkgdmFsaWQgdW50aWwgdGhlIHRoZSBtZXNz
YWdlIGhhcworICAgICAgICBiZWVuIGRpc3BhdGNoZWQgYnkgaG9sZGluZyBvbiB0byB0aGUgQmxv
Yjo6SGFuZGxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVuc2tpcHBlZCBleGlzdGluZyB0
ZXN0LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVmFsdWU6OklEQlZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9u
ZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9i
VVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpoYXNCbG9iVVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmJsb2JIYW5kbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBkb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpw
b3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRj
aE1lc3NhZ2VUbyk6CisgICAgICAgICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuaDoKKyAgICAgICAg
KiBkb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogZmlsZWFwaS9CbG9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6fkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iSW50ZXJuYWxVUkw6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iSW50ZXJuYWxVUkw6OkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6On5CbG9iKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5k
bGU6OkhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5kbGU6OnVybCBjb25zdCk6
CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisKIDIwMjEtMDctMzAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBSZW1vdmUgc3VwcG9ydCBmb3IgQVZBc3NldEltYWdlR2VuZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDM4OTZiNjQxNDdlNDQxYjg5NTgwZjJiOWM3NTRmNWRkZDYxMjk2MGMuLmRl
OWVjNGQwZTg5ZWI5OTVjNTJiZmE0ZjU0ZjZjMzZmZDgyMWU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjEtMDctMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL2Jsb2JzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlIHNpbmNlIGltcGxlbWVu
dGluZyBCbG9iQ2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4MTY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDkyMjUwMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVz
c2FnZXMuaW46CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAg
ICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAgICBo
YW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oKSBoYWQgZ290dGVuIG91dCBvZiBzeW5j
IHdpdGggaGFuZGxlTWVzc2FnZUFzeW5jKCkuIFRoaXMgd2FzIGNhdXNpbmcgSVBDIGRlY29kaW5n
CisgICAgICAgIGZhaWx1cmVzIHdoZW4gdXNpbmcgYm90aCAiQXN5bmMiIGFuZCAiV2FudHNDb25u
ZWN0aW9uIiBmb3IgdGhlIElQQyBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZVRvUmVtb3Rl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluOgorCiAyMDIxLTA3LTMwICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2liaWxpdHkg
Y29kZSBsb2dzIHRvIHN0ZGVyciBpbiBtYW55IGxheW91dCB0ZXN0IHJ1bnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKaW5kZXggNWE5M2E0ZDdlZjA5NWFjYzgxMGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uNTU1
NTBmZjZjZjAxMGI2NWQyZmNkNTdiZTY4NjcwMzg4MWFjODU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNy0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVz
c2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmxvYnMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgc2lu
Y2UgaW1wbGVtZW50aW5nIEJsb2JDaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwOTIy
NTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOgorCiAyMDIxLTA3LTE5
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBJ
REJUcmFuc2FjdGlvbi5jb21taXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmFsdWUuY3BwCmluZGV4IDhjN2YxMTk2OGIzZTlmMjQ4OWQ4ZGEwZDJhYTBmMDhmNmY1
NDA3Y2QuLmEzNjExMTNkZGM1MjdlZTdiODk5NjIzMzQ5NzcwZTE1OGU3MWFhMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgSURCVmFsdWU6OklEQlZhbHVlKCkKIAogSURCVmFsdWU6OklEQlZhbHVlKGNvbnN0IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCiAgICAgOiBtX2RhdGEoVGhyZWFkU2Fm
ZURhdGFCdWZmZXI6OmNvcHlWZWN0b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKLSAgICAsIG1fYmxv
YlVSTHMoc2NyaXB0VmFsdWUuYmxvYlVSTHNJc29sYXRlZENvcHkoKSkKKyAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYjFhMGNjMmRi
YzdlYTNkZDliNmNjNWVhZjAxZDk4MTMzZDQ4YjM4NS4uN2ZkNzA2ZGU1YTM2NWUyYjRiYmJhNzhk
NjNmYzZhYjk3NzFkODBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICAgICAgICAgICAgIFdh
c21NZW1vcnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXph
dGlvbkNvbnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZm
ZXJzKQorICAgICAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1
aW50OF90PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewogICAgICAgICBDbG9uZVNlcmlhbGl6
ZXIgc2VyaWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVm
ZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktF
UlMpCkBAIC02MTMsNyArNjEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgd2FzbU1vZHVsZXMs
CiAgICAgICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICAgICAgYmxv
YlVSTHMsIG91dCwgY29udGV4dCwgc2hhcmVkQnVmZmVycyk7CisgICAgICAgICAgICBibG9iSGFu
ZGxlcywgb3V0LCBjb250ZXh0LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlh
bGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICB9CiAKQEAgLTY0NywxMCArNjQ3LDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAg
ICAgICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgot
ICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBT
ZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNo
YXJlZEJ1ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywg
VmVjdG9yPHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5
QnVmZmVyQ29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2Uo
bGV4aWNhbEdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCi0gICAgICAgICwg
bV9ibG9iVVJMcyhibG9iVVJMcykKKyAgICAgICAgLCBtX2Jsb2JIYW5kbGVzKGJsb2JIYW5kbGVz
KQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgZW1wdHlTdHJpbmcoKSkpCiAgICAgICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgICAgICwgbV9zaGFyZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCkBA
IC0xMjI0LDcgKzEyMjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGF1dG8qIGJsb2IgPSBKU0Jsb2I6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAgICAgICAg
ICAgICAgIHdyaXRlKEJsb2JUYWcpOwotICAgICAgICAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5k
KGJsb2ItPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JIYW5kbGVzLmFw
cGVuZChibG9iLT5oYW5kbGUoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoYmxvYi0+dXJsKCku
c3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnR5cGUoKSk7CiAgICAgICAg
ICAgICAgICAgd3JpdGUoYmxvYi0+c2l6ZSgpKTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2
bSwgb2JqKSkgewogICAgICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAg
VmVjdG9yPFN0cmluZz4gZHVtbXlCbG9iVVJMczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Qmxv
Yjo6SGFuZGxlPiBkdW1teUJsb2JIYW5kbGVzOwogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKICAgICAgICAgICAgICAgICBWZWN0
b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBkdW1teU1vZHVsZXMsCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TWVtb3J5
SGFuZGxlcywKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJp
YWxpemVkS2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZm
ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgZHVtbXlCbG9iSGFuZGxlcywgc2VyaWFsaXplZEtl
eSwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAg
ICAgICAgICAgICAgICAgcmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwogICAgICAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5OwogICAgICAgICAgICAgICAgIGlmICghd3Jh
cENyeXB0b0tleShtX2xleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRL
ZXkpKQpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd3JpdGUoY29u
c3QgRmlsZSYgZmlsZSkKICAgICB7Ci0gICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUudXJs
KCkuc3RyaW5nKCkpOworICAgICAgICBtX2Jsb2JIYW5kbGVzLmFwcGVuZChmaWxlLmhhbmRsZSgp
KTsKICAgICAgICAgd3JpdGUoZmlsZS5wYXRoKCkpOwogICAgICAgICB3cml0ZShmaWxlLnVybCgp
LnN0cmluZygpKTsKICAgICAgICAgd3JpdGUoZmlsZS50eXBlKCkpOwpAQCAtMTc2MCw3ICsxNzYw
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwot
ICAgIFZlY3RvcjxTdHJpbmc+JiBtX2Jsb2JVUkxzOworICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+
JiBtX2Jsb2JIYW5kbGVzOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwogICAgIE9iamVj
dFBvb2wgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0czsKICAgICBPYmplY3RQb29sIG1fdHJhbnNm
ZXJyZWRBcnJheUJ1ZmZlcnM7CkBAIC0zOTE1LDcgKzM5MTUsNyBAQCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0
ZDo6dW5pcQogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKLVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlckNvbnRl
bnRzQXJyYXksIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFj
a2luZ1N0b3JlcworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxv
YkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5
QnVmZmVyQ29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4gc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9D
QU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFj
aGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYK
QEAgLTM5NDEsMTIgKzM5NDEsOCBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV93
YXNtTW9kdWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJheSkpCiAgICAgLCBtX3dhc21N
ZW1vcnlIYW5kbGVzQXJyYXkoV1RGTW92ZSh3YXNtTWVtb3J5SGFuZGxlc0FycmF5KSkKICNlbmRp
ZgorICAgICwgbV9ibG9iSGFuZGxlcyhibG9iSGFuZGxlcykKIHsKLSAgICAvLyBTaW5jZSB0aGlz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpcyBtZWFudCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJl
YWRzLCBpdHMgU3RyaW5nIGRhdGEgbWVtYmVycwotICAgIC8vIG5lZWQgdG8gYmUgaXNvbGF0ZWRD
b3BpZXMgc28gd2UgZG9uJ3QgcnVuIGludG8gdGhyZWFkIHNhZmV0eSBpc3N1ZXMgZm9yIHRoZSBT
dHJpbmdJbXBscy4KLSAgICBtX2Jsb2JVUkxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmxvYlVS
THMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBtX2Js
b2JVUkxzLnVuY2hlY2tlZEFwcGVuZCh1cmwuaXNvbGF0ZWRDb3B5KCkpOwogICAgIG1fbWVtb3J5
Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKQEAgLTM5OTAsOCArMzk4Niw4IEBAIHNp
emVfdCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3QKICAg
ICB9CiAjZW5kaWYKIAotICAgIGZvciAoYXV0byYgdXJscyA6IG1fYmxvYlVSTHMpCi0gICAgICAg
IGNvc3QgKz0gdXJscy5zaXplSW5CeXRlcygpOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9i
bG9iSGFuZGxlcykKKyAgICAgICAgY29zdCArPSBoYW5kbGUudXJsKCkuc3RyaW5nKCkuc2l6ZUlu
Qnl0ZXMoKTsKIAogICAgIHJldHVybiBjb3N0OwogfQpAQCAtNDA2OSw3ICs0MDY1LDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25z
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4gYmxv
YlVSTHM7CisgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CiAgICAgVmVjdG9y
PFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQ
dHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQpAQCAtNDA5NSw3ICs0MDkxLDcgQEAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmpl
Y3QmIGxleGkKICAgICAgICAgZHVtbXlNb2R1bGVzLAogICAgICAgICBkdW1teU1lbW9yeUhhbmRs
ZXMsCiAjZW5kaWYKLSAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRl
eHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CisgICAgICAgIGJsb2JIYW5kbGVzLCBi
dWZmZXIsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMp
OwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVt
bXlNb2R1bGVzLmlzRW1wdHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkg
YWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwpAQCAtNDEwOCw3ICs0MTA0LDcg
QEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZN
b3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyLCBudWxscHRyLCB7IH0pKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBi
bG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CiB9CiAKIHN0YXRpYyBib29sIGNv
bnRhaW5zRHVwbGljYXRlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdl
Qml0bWFwcykKQEAgLTQyMjEsNyArNDIxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAj
ZW5kaWYKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4g
YmxvYlVSTHM7CisgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICAgICBX
YXNtTWVtb3J5SGFuZGxlQXJyYXkgd2FzbU1lbW9yeUhhbmRsZXM7CkBAIC00MjM4LDcgKzQyMzQs
NyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICB3YXNtTW9kdWxlcywKICAgICAg
ICAgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwg
Y29udGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOworICAgICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBj
b250ZXh0LCAqc2hhcmVkQnVmZmVycyk7CiAKICAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4gZXhjZXB0
aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoY29kZSk7CkBAIC00MjYwLDcgKzQyNTYsNyBAQCBF
eGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5h
cHBlbmQoY2hhbm5lbC0+ZGV0YWNoKCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNl
cmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVm
ZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpCisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRs
ZXMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4
dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNo
YXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShiYWNraW5nU3RvcmVzKQogI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICAgICAgICAgLCBXVEZNb3Zl
KGRldGFjaGVkQ2FudmFzZXMpCiAjZW5kaWYKQEAgLTQzNjYsMTIgKzQzNjIsMTIgQEAgdWludDMy
X3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCiAgICAgcmV0dXJu
IEN1cnJlbnRWZXJzaW9uOwogfQogCi1WZWN0b3I8U3RyaW5nPiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmJsb2JVUkxzSXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YmxvYlVSTHMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Jsb2JVUkxzLnNpemUo
KSk7Ci0gICAgZm9yIChhdXRvJiB1cmwgOiBtX2Jsb2JVUkxzKQotICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKHVybC5pc29sYXRlZENvcHkoKSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9ibG9iSGFuZGxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaGFuZGxl
IDogbV9ibG9iSGFuZGxlcykKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChoYW5kbGUu
dXJsKCkuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzODEsNyArNDM3
Nyw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5k
ZXhlZERCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICBibG9iUmVnaXN0cnkoKS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUgeworICAgIGJsb2JSZWdpc3Ry
eSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZpbGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNF
bXB0eSgpKSB7CkBAIC00MzkxLDkgKzQzODcsOSBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKG1fYmxvYlVS
THMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fYmxv
YkhhbmRsZXMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKIAotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7ICp0aGlzLCBtX2Jsb2JVUkxzLCBibG9iRmlsZVBhdGhzIH0pOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7ICp0aGlzLCBibG9iVVJMcygpLCBibG9iRmlsZVBhdGhz
IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDFjNzU0NWVjYjU3MTM5M2YyODU4MzYwYWRjMDFl
OGM4OThlNjUwYmYuLjE2YzQ5MTk1ZmZjNGY2ZTY5NzdhNzQ4OGI0ZDZjMjk4NTQ5YTM4YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmxvYi5o
IgogI2luY2x1ZGUgIkRldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CkBAIC05NSw5
ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNWYWx1ZVJlZiBkZXNlcmlh
bGl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSAgICBib29s
IGhhc0Jsb2JVUkxzKCkgY29uc3QgeyByZXR1cm4gIW1fYmxvYlVSTHMuaXNFbXB0eSgpOyB9Cisg
ICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1w
dHkoKTsgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHNJc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcygpIGNvbnN0OworICAgIGNvbnN0IFZlY3Rv
cjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYkhhbmRs
ZXM7IH0KICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CiAgICAgSURCVmFsdWUgd3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpA
QCAtMTIxLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgKTsKIAotICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVm
ZmVycywgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5n
U3RvcmVzCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
LCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
U19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM+PiYmID0geyB9CiAjZW5kaWYKQEAgLTE1MCw3ICsxNTIsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNB
cnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21N
ZW1vcnlIYW5kbGVzQXJyYXk7CiAjZW5kaWYKLSAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxz
OworICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+IG1fYmxvYkhhbmRsZXM7CiAgICAgc2l6ZV90IG1f
bWVtb3J5Q29zdCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9C
cm9hZGNhc3RDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcAppbmRleCA4MjcxZDFmNDk4ZDVmODcxZDZmYWQ0MjJjNmQwODdjMGJjZTJiZDFlLi42NjQw
MWJiMGJmYjQzOGM4ZWQ0MTcwYjEzODkyN2NmZDI0OThlZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0Jyb2FkY2FzdENoYW5uZWwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0
b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDggKzk2LDE0IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjCiAgICAgQVNTRVJUKHBvcnRzLmlzRW1wdHkoKSk7CiAK
ICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW29yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShtX29yaWdp
biksIG5hbWUgPSBjcm9zc1RocmVhZENvcHkobV9uYW1lKSwgaWRlbnRpZmllciA9IG1faWRlbnRp
ZmllciwgbWVzc2FnZURhdGEgPSBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKV0oYXV0
byYgZG9jdW1lbnQpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50
LnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLnBv
c3RNZXNzYWdlKG9yaWdpbiwgbmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlRGF0YSkp
OworICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgICAgICBpZiAoIXBh
Z2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBibG9iSGFuZGxlcyA9IG1l
c3NhZ2VEYXRhLT5ibG9iSGFuZGxlcygpOworICAgICAgICBwYWdlLT5icm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkoKS5wb3N0TWVzc2FnZShvcmlnaW4sIG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUo
bWVzc2FnZURhdGEpLCBbYmxvYkhhbmRsZXMgPSBXVEZNb3ZlKGJsb2JIYW5kbGVzKV0geworICAg
ICAgICAgICAgLy8gS2VlcHMgQmxvYiBkYXRhIGluc2lkZSBtZXNzYWdlRGF0YSBhbGl2ZSB1bnRp
bCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIH0pOwogICAgIH0pOwog
CiAgICAgcmV0dXJuIHsgfTsKQEAgLTExNSwxNCArMTIyLDE1IEBAIHZvaWQgQnJvYWRjYXN0Q2hh
bm5lbDo6Y2xvc2UoKQogICAgIH0pOwogfQogCi12b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3Bh
dGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVy
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpCit2b2lkIEJyb2FkY2FzdENo
YW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5u
ZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSBjaGFubmVsVG9D
b250ZXh0SWRlbnRpZmllcigpLmdldChjaGFubmVsSWRlbnRpZmllcik7CiAgICAgaWYgKCFjb250
ZXh0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29u
dGV4dElkZW50aWZpZXIsIFtjaGFubmVsSWRlbnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENh
bGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBb
Y2hhbm5lbElkZW50aWZpZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildKGF1dG8mKSBtdXRhYmxlIHsK
ICAgICAgICAgUmVmUHRyPEJyb2FkY2FzdENoYW5uZWw+IGNoYW5uZWw7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxCcm9hZGNhc3RDaGFubmVsc0xvY2sgfTsKQEAg
LTEzMCw2ICsxMzgsOCBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRv
KEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudAogICAgICAgICB9CiAgICAg
ICAgIGlmIChjaGFubmVsKQogICAgICAgICAgICAgY2hhbm5lbC0+ZGlzcGF0Y2hNZXNzYWdlKFdU
Rk1vdmUobWVzc2FnZSkpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrQWdn
cmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmgKaW5kZXggMWZmNThiZGE3NjYyMjIx
NGQ2YjAwNGJmYmQ5OGMyOGRkYjA0NWNkMy4uM2RiYThmOGVkYzQwYmMzNjdjNTdkM2JjOTk1M2Uy
OTRmNDU0MDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5oCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UpOwogICAgIHZvaWQgY2xvc2Uo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoTWVzc2FnZVRvKEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaE1lc3NhZ2VUbyhCcm9hZGNh
c3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBCcm9hZGNhc3RDaGFubmVs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IGZhNmViYzg5NDkz
YTllNThkZWNhYjNmNDlkMmQ1Yjk0ZWZiNzRkNjguLjVjMmJmYjA1NDdmMzYxNTZiZWVhMWRmMWNk
YjVmM2ZkMGEzNWViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
c291cmNlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDNmNDA5YTQ3
ZWQzYjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUuLjE4MjE2ZDYyODY0YWY0MmEwMmY0MGIw
ZTQ4MTkzNjBiYWQ3NWVhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNTksNiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogfTsKIAotCiB2b2lkIEJsb2JV
UkxSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBibG9iKQogewogICAgIEFTU0VS
VCgmYmxvYi5yZWdpc3RyeSgpID09IHRoaXMpOwpAQCAtNzYsMjUgKzc2LDc4IEBAIFVSTFJlZ2lz
dHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKKy8vIFVucmVnaXN0ZXJzIHRoZSBCbG9iJ3MgaW50ZXJuYWwgVVJMIHVwb24gZGVzdHJ1Y3Rp
b24uIFRoaXMgY2FuIGJlIHVzZWQgdG8gZXh0ZW5kIHRoZSBsaWZldGltZSBvZiB0aGUgQmxvYiBk
YXRhCisvLyB3aXRob3V0IGFjdHVhbGx5IGtlZXBpbmcgdGhlIEJsb2Igb2JqZWN0IGFsaXZlLgor
Y2xhc3MgQmxvYkludGVybmFsVVJMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJsb2JJ
bnRlcm5hbFVSTD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBj
cmVhdGUoVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JJbnRlcm5hbFVS
TChXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKSk7CisgICAgfQorCisgICAgc3RhdGlj
IFJlZjxCbG9iSW50ZXJuYWxVUkw+IGNyZWF0ZUZvckRlc2VyaWFsaXphdGlvbihjb25zdCBVUkwm
IHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJM
KHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5cGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
UmVmPEJsb2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yU2xpY2UoY29uc3QgVVJMJiBzb3VyY2VVUkws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJjZVVS
TCwgc3RhcnQsIGVuZCwgdHlwZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QmxvYkludGVy
bmFsVVJMPiBhZG9wdEludGVybmFsVVJMKGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKGNyb3NzVGhyZWFkQ29weSh1cmwp
KSk7CisgICAgfQorCisgICAgfkJsb2JJbnRlcm5hbFVSTCgpCisgICAgeworICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKKyAg
ICB9CisKKyAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFVSTC5pc29sYXRl
ZENvcHkoKTsgfQorCitwcml2YXRlOgorICAgIEJsb2JJbnRlcm5hbFVSTChWZWN0b3I8QmxvYlBh
cnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgICAgICA6IG1f
aW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKKyAgICB7CisgICAgICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBX
VEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICB9CisgICAgQmxvYkludGVybmFs
VVJMKGNvbnN0IFVSTCYgc291cmNlVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQs
IGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICAgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNy
ZWF0ZUludGVybmFsVVJMKCkpCisgICAgeworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBzb3VyY2VVUkwsIHN0YXJ0
LCBlbmQsIHR5cGUpOworICAgIH0KKyAgICBCbG9iSW50ZXJuYWxVUkwoY29uc3QgVVJMJiBzb3Vy
Y2VVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSkK
KyAgICAgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCisg
ICAgeworICAgICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJu
YWxVUkwsIHNvdXJjZVVSTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJu
YWxVUkwsIHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5cGUpOworICAgIH0KKyAgICBCbG9i
SW50ZXJuYWxVUkwoVVJMJiYgaW50ZXJuYWxVUkwpCisgICAgICAgIDogbV9pbnRlcm5hbFVSTChX
VEZNb3ZlKGludGVybmFsVVJMKSkKKyAgICB7IH0KKworICAgIFVSTCBtX2ludGVybmFsVVJMOwor
fTsKKwogQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKICAg
ICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJu
YWxVUkw6OmFkb3B0SW50ZXJuYWxVUkwodXJsKSkKIHsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQp
CisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlKHsgfSwgeyB9KSkK
ICAgICAsIG1fc2l6ZSgwKQogewotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRW
YXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdCgmY29udGV4dCkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKSkKLSAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUocHJvcGVy
dHlCYWcudHlwZSkpCitzdGF0aWMgVmVjdG9yPEJsb2JQYXJ0PiBidWlsZEJsb2JEYXRhKFZlY3Rv
cjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5
QmFnJiBwcm9wZXJ0eUJhZykKIHsKICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFn
LmVuZGluZ3MpOwogICAgIGZvciAoYXV0byYgYmxvYlBhcnRWYXJpYW50IDogYmxvYlBhcnRWYXJp
YW50cykgewpAQCAtMTA0LDU3ICsxNTcsNjQgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmEKICAg
ICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIuZmluYWxp
emUoKTsKK30KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCht
X2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CitCbG9iOjpCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVkQ29u
dGVudFR5cGUocHJvcGVydHlCYWcudHlwZSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRl
cm5hbFVSTDo6Y3JlYXRlKGJ1aWxkQmxvYkRhdGEoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwg
cHJvcGVydHlCYWcpLCBtX3R5cGUpKQorewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHlw
ZShjb250ZW50VHlwZSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVh
dGUoeyBCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250ZW50VHlwZSkpCiAgICAgLCBtX3Np
emUoZGF0YS5zaXplKCkpCiB7Ci0gICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAg
YmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgbV9pbnRlcm5h
bFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9i
Q29uc3RydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2Im
IGJsb2IpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1faW50ZXJuYWxV
UkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKICAgICAsIG1fdHlwZShibG9iLnR5cGUo
KSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyBCbG9iUGFy
dChibG9iLnVybCgpKSB9ICwgbV90eXBlKSkKICAgICAsIG1fc2l6ZShibG9iLnNpemUoKSkKIHsK
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVS
TCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihE
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250
ZW50VHlwZSh0eXBlKSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVh
dGVGb3JEZXNlcmlhbGl6YXRpb24oc3JjVVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKSkKICAg
ICAsIG1fc2l6ZShzaXplKQogewotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpOwotICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVy
bmFsVVJMLCBzcmNVUkwpOwotICAgIGVsc2UKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3Jj
VVJMLCBmaWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCisg
ICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yU2xpY2Uoc3JjVVJM
LCBzdGFydCwgZW5kLCBtX3R5cGUpKQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkg
ZXF1YWwgdG8gZW5kIC0gc3RhcnQgc28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsK
LSAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFs
VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSk7CiB9CiAKIEJsb2I6On5CbG9iKCkKIHsK
ICAgICB3aGlsZSAoIW1fYmxvYkxvYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICAoKm1fYmxvYkxv
YWRlcnMuYmVnaW4oKSktPmNhbmNlbCgpOworfQorCitVUkwgQmxvYjo6dXJsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7Cit9CiAKLSAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKK1JlZjxCbG9iPiBC
bG9iOjpzbGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0Cit7Cisg
ICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBtX2ludGVybmFsVVJM
LT51cmwoKSwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICBibG9iLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gYmxvYjsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6
OnNpemUoKSBjb25zdApAQCAtMTYyLDcgKzIyMiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9i
OjpzaXplKCkgY29uc3QKICAgICBpZiAoIW1fc2l6ZSkgewogICAgICAgICAvLyBGSVhNRTogSmF2
YVNjcmlwdCBjYW5ub3QgcmVwcmVzZW50IHNpemVzIGFzIGxhcmdlIGFzIHVuc2lnbmVkIGxvbmcg
bG9uZywgd2UgbmVlZCB0bwogICAgICAgICAvLyBjb21lIHVwIHdpdGggYW4gZXhjZXB0aW9uIHRv
IHRocm93IGlmIGZpbGUgc2l6ZSBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGFjdHVhbFNpemUgPSBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6
ZShtX2ludGVybmFsVVJMKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFjdHVhbFNpemUg
PSBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShtX2ludGVybmFsVVJMLT51cmwoKSk7
CiAgICAgICAgIG1fc2l6ZSA9IGlzSW5Cb3VuZHM8bG9uZyBsb25nPihhY3R1YWxTaXplKSA/IGFj
dHVhbFNpemUgOiAwOwogICAgIH0KIApAQCAtMzM1LDUgKzM5NSwyMyBAQCBjb25zdCBjaGFyKiBC
bG9iOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkJsb2IiOwogfQog
CitCbG9iOjpIYW5kbGUgQmxvYjo6aGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSGFuZGxl
IHsgbV9pbnRlcm5hbFVSTC5jb3B5UmVmKCkgfTsKK30KKworQmxvYjo6SGFuZGxlOjpIYW5kbGUo
UmVmPEJsb2JJbnRlcm5hbFVSTD4mJiBpbnRlcm5hbFVSTCkKKyAgICA6IG1faW50ZXJuYWxVUkwo
V1RGTW92ZShpbnRlcm5hbFVSTCkpCit7IH0KKworQmxvYjo6SGFuZGxlOjp+SGFuZGxlKCkgPSBk
ZWZhdWx0OworCitCbG9iOjpIYW5kbGU6OkhhbmRsZShIYW5kbGUmJikgPSBkZWZhdWx0OworQmxv
Yjo6SGFuZGxlOjpIYW5kbGUoY29uc3QgSGFuZGxlJikgPSBkZWZhdWx0OworCitVUkwgQmxvYjo6
SGFuZGxlOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVybmFsVVJMLT51cmwoKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBmZDE3
OWUwNjIxMTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMwNjVlYTQ0Li4wNjM4NGRlNTU5YTQ5ZGFiMjM2
Yjk0MGYzZTdlYzFmOTE0MTljZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTcsNiArNTcs
NyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRXhjZXB0
aW9uT3I7CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCBSZWZQdHI8QmxvYj4sIFN0
cmluZz47CitjbGFzcyBCbG9iSW50ZXJuYWxVUkw7CiAKIGNsYXNzIEJsb2IgOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEJs
b2I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0VYUE9SVChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlcm5hbFVSTDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB1cmwoKSBjb25z
dDsKICAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CkBAIC0x
MTAsMTcgKzExMSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gVVJMUmVnaXN0cmFibGUKICAgICBVUkxS
ZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZjxCbG9iPiBzbGlj
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcg
bG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0Ci0gICAgewotICAgICAg
ICBhdXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNvbnRleHQsIG1faW50ZXJuYWxVUkws
IHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7Ci0gICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRl
ZCgpOwotICAgICAgICByZXR1cm4gYmxvYjsKLSAgICB9CisgICAgUmVmPEJsb2I+IHNsaWNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB0ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIGFycmF5
QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBzdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogCisgICAgY2xhc3MgSGFuZGxlIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IGV4cGxpY2l0IEhhbmRsZShSZWY8QmxvYkludGVybmFsVVJMPiYmKTsKKyAgICAgICAgfkhhbmRs
ZSgpOworICAgICAgICBIYW5kbGUoSGFuZGxlJiYpOworICAgICAgICBIYW5kbGUoY29uc3QgSGFu
ZGxlJik7CisgICAgICAgIFVSTCB1cmwoKSBjb25zdDsKKyAgICBwcml2YXRlOgorICAgICAgICBS
ZWY8QmxvYkludGVybmFsVVJMPiBtX2ludGVybmFsVVJMOworICAgIH07CisKKyAgICAvLyBLZWVw
aW5nIHRoZSBoYW5kbGUgYWxpdmUgd2lsbCBrZWVwIHRoZSBCbG9iIGRhdGEgYWxpdmUgKGJ1dCBu
b3QgdGhlIEJsb2Igb2JqZWN0KS4KKyAgICBIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKICAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3I8QmxvYlBh
cnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKQEAgLTE0NCwxMiArMTU0LDEy
IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFN0cmluZyBtX3R5cGU7
CisKICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2Ig
ZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFu
IGlkZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2Vk
IHRvIHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9y
IEZpbGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1
cnBvc2VzLgotICAgIFVSTCBtX2ludGVybmFsVVJMOwotCi0gICAgU3RyaW5nIG1fdHlwZTsKKyAg
ICBSZWY8QmxvYkludGVybmFsVVJMPiBtX2ludGVybmFsVVJMOwogCiAgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9zaXplOwogICAgIEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPEJsb2JMb2FkZXI+PiBtX2Jsb2JMb2FkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAppbmRleCBhM2M5OGIxZTNjYTdhYjc2ZWUxZjBhMWIwZTgxYTgxZWNk
ODlhYjE3Li44ZGNhNzViOTQwNzk1MDc4OTIzNmQyYWExMjBmNDNhN2IzYjFjNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTE3NSw3ICsxMTc1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbCB7IH0K
ICAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbCB7IH0KLSAgICB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYs
IEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
KSBmaW5hbCB7IH0KKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsIHsg
fQogfTsKIAogUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGll
bnRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
Y3BwCmluZGV4IGJlODhhNTM2OTViOWI0ZGI1ZTM2NWYyNTIxODQ2YTliZjA5MDNjN2YuLjliODZl
YmZjMzAzNDNiNGU0NTQ1MzJmMjZjMGFiMjgxZGZkMzU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmg+CisjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTgsMjMgKzU5LDI4IEBAIHZvaWQgTmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0CiAgICAgY2hhbm5lbHNGb3JOYW1lSXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KGds
b2JhbENoYW5uZWxJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0
ZXJhdG9yID0gbV9icm9hZGNhc3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNo
YW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAg
ICAgaWYgKGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5l
bmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICBhdXRvIGNoYW5uZWxzRm9yTmFtZUl0ZXJhdG9yID0gY2hhbm5lbHNGb3JPcmlnaW5J
dGVyYXRvci0+dmFsdWUuZmluZChuYW1lKTsKICAgICBBU1NFUlQoY2hhbm5lbHNGb3JOYW1lSXRl
cmF0b3IgIT0gY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvci0+dmFsdWUuZW5kKCkpOwogICAgIGlm
IChjaGFubmVsc0Zvck5hbWVJdGVyYXRvciA9PSBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yLT52
YWx1ZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoKTsKIAorICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIEdsb2JhbEJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZUdsb2JhbENoYW5uZWxJZGVudGlmaWVyIHsgY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2UgfTsKICAgICBmb3IgKGF1dG8mIGdsb2JhbElkZW50
aWZpZXIgOiBjaGFubmVsc0Zvck5hbWVJdGVyYXRvci0+dmFsdWUpIHsKICAgICAgICAgaWYgKGds
b2JhbElkZW50aWZpZXIgPT0gc291cmNlR2xvYmFsQ2hhbm5lbElkZW50aWZpZXIpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoZ2xvYmFsSWRl
bnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllciwgTWVzc2FnZXM6OldlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2VUb1JlbW90ZShnbG9iYWxJZGVudGlmaWVyLmNoYW5uZWxJ
bmRlbnRpZmllckluUHJvY2VzcywgbWVzc2FnZSksIDApOworICAgICAgICBSZWZQdHIgY29ubmVj
dGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihnbG9iYWxJZGVudGlmaWVyLmNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlBvc3RNZXNzYWdlVG9SZW1vdGUoZ2xv
YmFsSWRlbnRpZmllci5jaGFubmVsSW5kZW50aWZpZXJJblByb2Nlc3MsIG1lc3NhZ2UpLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0sIDApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaAppbmRleCAwMWIxOTQ2MThjZDI2ODQwZDU1N2UyZjU3ZGE3ZWFiODI1NjRmMzA5Li40
MTVhNjk2NWI5YTUzYzcxZGViMDI1MDE0OGI0NTBkZmRiNmYxZmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lz
dGVyQ2hhbm5lbChJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVsKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpOwotICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3Vy
Y2UsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpOworICAgIHZvaWQgcG9zdE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
ciBzb3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEdsb2JhbEJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5t
ZXNzYWdlcy5pbgppbmRleCAxYWE5YzFiZmE4YTVmOWNlMGI0YTk0ZTEyNjhhYTM4ZGIzZGQ3OTcx
Li45YjY4NTBiOTU1ODMzNzZlNDk5MWQyMTVhMmNkZDcxNTQ0OWFmZDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCkBAIC0yMyw1ICsyMyw1IEBACiBt
ZXNzYWdlcyAtPiBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IE5vdFJlZkNvdW50ZWQg
ewogICAgIFJlZ2lzdGVyQ2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IG9yaWdpbiwgU3RyaW5nIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
IGNoYW5uZWxJZGVudGlmaWVyKSBXYW50c0Nvbm5lY3Rpb24KICAgICBVbnJlZ2lzdGVyQ2hhbm5l
bChzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiwgU3RyaW5nIG5hbWUs
IFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyKSBX
YW50c0Nvbm5lY3Rpb24KLSAgICBQb3N0TWVzc2FnZShzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIG9yaWdpbiwgU3RyaW5nIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJ
ZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgorICAgIFBvc3RNZXNzYWdlKHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luLCBTdHJpbmcgbmFtZSwgV2ViQ29yZTo6QnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSkgLT4gKCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggMmFiMGZjMjY1MzFj
NzczZjUxZDZkMmQ1NTg2ODRiZGExMzZiYjZhYS4uOTg5YmI3MjNmOThkN2RkMjgxOGE0MWVmNjEz
MzdmZTY5YzNmY2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3Nh
Z2UuaApAQCAtMjAwLDE1ICsyMDAsMjAgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRsZU1lc3Nh
Z2VBc3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBk
ZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogeworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGxpc3RlbmVySUQ7CisgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklEOworICAgIGlmICgh
bGlzdGVuZXJJRCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFt
ZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAg
ICBkZWNvZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhh
bmRsZXIgPSBbbGlzdGVuZXJJRCA9IGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBjb25uZWN0aW9u
ID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICB0
eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJRCA9
ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4u
LiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxF
bmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CiAgICAgICAg
IFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7
Ci0gICAgfTsKKyAgICB9LCBUOjpjYWxsYmFja1RocmVhZCB9OwogICAgIGNhbGxNZW1iZXJGdW5j
dGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5jcHAKaW5kZXggNzg5YzE2M2Y2YjU4NjhjYmNkODc1NTlhMGViOTcy
MThhMDQ1NmNkMy4uNmRjN2Q2YWJhMDFlNThjYzNiMWIxYzhiOWIwMmZiMDNkZjU1OTkyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTQ5LDE0ICs0
OSwxNCBAQCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5u
ZWwoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaQogICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlVu
cmVnaXN0ZXJDaGFubmVsIHsgb3JpZ2luLCBuYW1lLCBpZGVudGlmaWVyIH0sIDApOwogfQogCi12
b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6cG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5OjpQb3N0TWVzc2FnZSB7IG9yaWdpbiwgbmFtZSwgc291cmNlLCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7IFdURk1vdmUobWVzc2FnZSksIHsgfSB9IH0s
IDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2UgeyBv
cmlnaW4sIG5hbWUsIHNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgeyBX
VEZNb3ZlKG1lc3NhZ2UpLCB7IH0gfSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7
CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZVRvUmVt
b3RlKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkJyb2FkY2FzdENo
YW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRv
KGlkZW50aWZpZXIsIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBXZWJD
b3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhpZGVudGlmaWVyLCBtZXNz
YWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaAppbmRleCA1ZDRmNmM0MDhhMTdiZDI5MDlkNmM0NjJkNGQ0Njg5MWVlY2Qx
MWY0Li40NGEzZDM4MmMwODE1MGY3YTA5YThlOGU5N2ZjMjg2Y2FhYzE3YzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC00MywxNCArNDMsMTQgQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVs
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKIAogcHJpdmF0ZToKICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpOwor
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRl
bnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4KaW5kZXgg
YjA0MTczYWZmYjQ2YjE3ZDMxYjM5N2RhMWViZTc0MTIyNGNiZTM5ZC4uMDdhZjUyZjhkOGU0ODcy
MWE2MDBkZTZkNTNjNzA0NDhlMzJlY2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSB7Ci0g
ICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UpCisgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVs
SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzIG1lc3NhZ2UpIC0+ICgpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5jcHAKaW5kZXggMTEyNmUzYTkzMDgyMjc1NzkxMTJhYmRkNjFkY2RhYmM4NzViNDkzNi4u
NDVjMzJhMWIzODU4OWIyYmQzYzg5YTczOGY3YTk4MmFlMmMzMjgxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ccm9hZGNhc3RDaGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAt
NjUsOSArNjYsMTEgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0
ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2kKICAgICBjaGFubmVsc0Zvck5h
bWVJdGVyYXRvci0+dmFsdWUucmVtb3ZlRmlyc3QoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSkKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpw
b3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3Vy
Y2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKICAgICBhdXRv
IGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPSBtX2NoYW5uZWxzLmZpbmQob3JpZ2luKTsKICAg
ICBBU1NFUlQoY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvciAhPSBtX2NoYW5uZWxzLmVuZCgpKTsK
ICAgICBpZiAoY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvciA9PSBtX2NoYW5uZWxzLmVuZCgpKQpA
QCAtNzgsNiArODEsNiBAQCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1l
c3NhZ2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJgogICAgIGZvciAoYXV0byYg
Y2hhbm5lbElkZW50aWZpZXIgOiBjaGFubmVsc0Zvck5hbWVJdGVyYXRvci0+dmFsdWUpIHsKICAg
ICAgICAgaWYgKGNoYW5uZWxJZGVudGlmaWVyID09IHNvdXJjZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VU
byhjaGFubmVsSWRlbnRpZmllciwgbWVzc2FnZS5jb3B5UmVmKCkpOworICAgICAgICBXZWJDb3Jl
OjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhjaGFubmVsSWRlbnRpZmllciwg
bWVzc2FnZS5jb3B5UmVmKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKaW5kZXggZjVjN2NmNTUxOGI4YTY4MWY0Yjhm
NWM4MzBkZWMyZTY4YmYxODE5Ny4uMzcxMTMyMjA1MWM3YjgxZjZiMjFhNWZiNGMxNWMwMDcwNjNk
OTQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZShj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bDsKIAogcHJpdmF0ZToKICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODFmOTExYzMxMWYyOTdmZWI3OTllYmRiZGY4ZWJjMGNiOTZiY2Y4ZC4uNGNm
NDdlMjVjOWM1NzAzNzgyZWFkNzQ0ODVlMGVkNDQxZDA0YTcyNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTA3LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0
Y2hhbm5lbC9ibG9icy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcg
QmxvYkNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODE2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA5MjI1MDI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHRlc3QgdGhhdCBp
cyBubyBsb25nZXIgZmxha3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjEtMDctMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1M
RWxlbWVudC5pbm5lclRleHQgc2V0dGVyIHNob3VsZCBjb252ZXJ0IG5ldyBsaW5lcyB0byA8YnI+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NTc3Y2VmOTM5ZGY4ODAzNGM5OThhYTA2MWZhMzNkYzVlN2M3YTY3Yy4uZWE5OTg1Mzg3OTA0OWZm
NzdiOTUzMzVjY2FkYTllOTg3MDQzY2Y4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTk5Myw4ICsxOTkzLDYgQEAgd2Via2l0Lm9yZy9i
LzIyODExNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2NvbnRlbnQtdHlw
ZS9zY3JpcHQud2kKIAogd2Via2l0Lm9yZy9iLzIyODEyNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2UtcG9wdXAu
aHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8yMjgxNjggaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9i
bG9icy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIyNzk5OCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
dGhlLWVtYmVkLWVsZW1lbnQvZW1iZWQtbmV0d29yay1lcnJvci5zdWIuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjc3NjIgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlvbi9mb2N1cy90aGUtYXV0b2ZvY3VzLWF0dHJp
YnV0ZS9kb2N1bWVudC13aXRoLWZyYWdtZW50LXZhbGlkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4Y2Y3MzAwYWY0
OTNmYTQ1MzlkZjZmYTNiMWQ2YzRiNzc4MjU5M2RlLi5jOGU2OWFmODFlYjE4NDVlNzEyZGJkYzVm
MTQ2ZTFhYjE2OTE0OWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMjI5OCw4ICsyMjk4LDYgQEAgd2Via2l0Lm9yZy9iLzIxNDU3NCBzdmcvYW5pbWF0
aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1pbnN0YW5jZXMuc3ZnIFsgUGFzcwogCiB3ZWJr
aXQub3JnL2IvMjI4MTI3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9z
cy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZS1wb3B1cC5odHRwcy5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIyODE2OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2Jsb2JzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjIyMzg1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2V2ZW50LXVwbG9hZC1wcm9ncmVzcy1jcm9zc29yaWdpbi5hbnkud29ya2VyLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjI3OTk4IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtZW1i
ZWQtZWxlbWVudC9lbWJlZC1uZXR3b3JrLWVycm9yLnN1Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434675</attachid>
            <date>2021-07-30 16:54:53 -0700</date>
            <delta_ts>2021-08-02 11:47:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228168-20210730165452.patch</filename>
            <type>text/plain</type>
            <size>52236</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJkODhkZmMxMTk3NTc3
NTFhZTRmM2U4NTk3OTg0OTZjMjAxN2U3Ni4uOTZhMzJhOTU5ZmRlYTNjZTMwOWU2MDcxNTI0YzEz
NWVkODE5MWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA3LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIGlz
IGEgZmxha3kgZmFpbHVyZSBzaW5jZSBpbXBsZW1lbnRpbmcgQmxvYkNoYW5uZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODE2OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODA5MjI1MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHRlc3Qgd2FzIGZsYWt5IGJlY2F1c2UgaXQgaXMgdHJ5aW5n
IHRvIHNlbmQgYSBCbG9iIHZpYSBCcm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlKCkKKyAgICAg
ICAgd2l0aG91dCBrZWVwaW5nIHRoZSBibG9iIGFsaXZlLiBXaGVuIEdDIHRyaWdnZXJzLCB0aGUg
QmxvYiB3b3VsZCBnbyBhd2F5IGFuZCB0cnlpbmcgdG8KKyAgICAgICAgZGVjb2RlIHRoZSBCbG9i
IHVwb24gcmVjZWl2aW5nIHdvdWxkIGZhaWwuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIEkgaW50cm9kdWNlZCBhIEJsb2I6OkhhbmRsZSBjbGFzcyB0aGF0IHdyYXBzIHRoZSBCbG9i
J3MgaW50ZXJuYWwgVVJMCisgICAgICAgIGFuZCBrZWVwcyB0aGUgQmxvYiBkYXRhIGFsaXZlIGFz
IGxvbmcgYXMgYXMgc29tZW9uZSBpcyBob2xkaW5nIHN1Y2ggaGFuZGxlLiBQcmV2aW91c2x5LAor
ICAgICAgICB0aGUgQmxvYiBkZXN0cnVjdG9yIHdvdWxkIHVucmVnaXN0ZXIgdGhlIGludGVybmFs
IFVSTCBhbmQgdGhlIEJsb2IgZGF0YSB3b3VsZCBnbyBhd2F5LgorCisgICAgICAgIEkgdGhlbiB1
cGRhdGVkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byBob2xkIG9uIHRvIEJsb2I6OkhhbmRsZSBv
YmplY3RzIGluc3RlYWQgb2YgQmxvYgorICAgICAgICBVUkxzLiBUaGlzIGd1YXJhbnRlZXMgdGhh
dCB3aGVuIHVzaW5nIHBvc3RNZXNzYWdlKCkgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gYSB3b3JrZXIs
IHRoZQorICAgICAgICBCbG9iIGRhdGEgd2lsbCBzdGF5IGFsaXZlIHVudGlsIHdlIGRpc3BhdGNo
IHRoZSBtZXNzYWdlIGV2ZW50IG9uIHRoZSB3b3JrZXIgc2lkZSBhbmQgdHJ5CisgICAgICAgIGFu
ZCBkZXNlcmlhbGl6ZWQgdGhlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKworICAgICAgICBGb3Ig
QnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZSgpIHRob3VnaCwgd2UgZW5kIHVwIGdvaW5nIHZp
YSB0aGUgbmV0d29yayBwcm9jZXNzIGFuZAorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlIGVuZHMgdXAgZ2V0dGluZyBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZCBvdmVyIElQQy4gSSBh
ZGRlZCBhCisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyIHRvIEJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6cG9zdE1lc3NhZ2UoKSB3aGljaCBvbmx5IGdldHMgY2FsbGVkCisgICAgICAgIG9uY2Ug
dGhlIG1lc3NhZ2UgZXZlbnQgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGRpc3BhdGNoZWQuIEkgdXNl
IHRoaXMgY29tcGxldGlvbiBoYW5kbGVyCisgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGUgU2VyaWFs
aXplZFNjcmlwdFZhbHVlJ3MgQmxvYiBVUkxzIHN0YXkgdmFsaWQgdW50aWwgdGhlIHRoZSBtZXNz
YWdlIGhhcworICAgICAgICBiZWVuIGRpc3BhdGNoZWQgYnkgaG9sZGluZyBvbiB0byB0aGUgQmxv
Yjo6SGFuZGxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVuc2tpcHBlZCBleGlzdGluZyB0
ZXN0LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVmFsdWU6OklEQlZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9u
ZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZU
ZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpibG9i
VVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpoYXNCbG9iVVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmJsb2JIYW5kbGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBkb20vQnJv
YWRjYXN0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpw
b3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRj
aE1lc3NhZ2VUbyk6CisgICAgICAgICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuaDoKKyAgICAgICAg
KiBkb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogZmlsZWFwaS9CbG9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JJbnRlcm5hbFVSTDo6fkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iSW50ZXJuYWxVUkw6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iSW50ZXJuYWxVUkw6OkJsb2JJbnRlcm5hbFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6On5CbG9iKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGljZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OmhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5k
bGU6OkhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpIYW5kbGU6OnVybCBjb25zdCk6
CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisKIDIwMjEtMDctMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4MDQ4Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGI5ODJk
MTc5NDVlNWI2ZjU0NGYyNDRmNjMwYjJlMjJlNGM5ZTc4MS4uNGUxZWJjMDUzYTI0ODg2ZmUyMjMx
OTE4ZmZhNzdkOTE0ZjNlZDcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wNy0z
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvYmxvYnMu
aHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgc2luY2UgaW1wbGVtZW50aW5nIEJsb2JDaGFubmVsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxNjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwOTIyNTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRsZU1l
c3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbik6CisgICAgICAgIGhhbmRsZU1lc3NhZ2VBc3luY1dh
bnRzQ29ubmVjdGlvbigpIGhhZCBnb3R0ZW4gb3V0IG9mIHN5bmMgd2l0aCBoYW5kbGVNZXNzYWdl
QXN5bmMoKS4gVGhpcyB3YXMgY2F1c2luZyBJUEMgZGVjb2RpbmcKKyAgICAgICAgZmFpbHVyZXMg
d2hlbiB1c2luZyBib3RoICJBc3luYyIgYW5kICJXYW50c0Nvbm5lY3Rpb24iIGZvciB0aGUgSVBD
IG1lc3NhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkubWVzc2FnZXMuaW46CisKIDIwMjEtMDctMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjc0NDYwPyk6IEluZmluaXRlIHJlY3Vy
c2lvbiBvbiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5odG1sIGluIFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpjbG9zZUZ1bGxTY3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
aW5kZXggNWE5M2E0ZDdlZjA5NWFjYzgxMGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uMmI3OGUwNGE2
ZDBlM2JjMTk2OTZkNzFiOTZiOGE2YmU5MGVlYzk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0wNy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5n
L2Jyb2FkY2FzdGNoYW5uZWwvYmxvYnMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgc2luY2UgaW1w
bGVtZW50aW5nIEJsb2JDaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjgxNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwOTIyNTAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOgorCiAyMDIxLTA3LTE5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBJREJUcmFu
c2FjdGlvbi5jb21taXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VmFsdWUuY3BwCmluZGV4IDhjN2YxMTk2OGIzZTlmMjQ4OWQ4ZGEwZDJhYTBmMDhmNmY1NDA3Y2Qu
LmEzNjExMTNkZGM1MjdlZTdiODk5NjIzMzQ5NzcwZTE1OGU3MWFhMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
SURCVmFsdWU6OklEQlZhbHVlKCkKIAogSURCVmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUpCiAgICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNvcHlWZWN0b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKLSAgICAsIG1fYmxvYlVSTHMo
c2NyaXB0VmFsdWUuYmxvYlVSTHNJc29sYXRlZENvcHkoKSkKKyAgICAsIG1fYmxvYlVSTHMoc2Ny
aXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYjFhMGNjMmRiYzdlYTNk
ZDliNmNjNWVhZjAxZDk4MTMzZDQ4YjM4NS4uN2ZkNzA2ZGU1YTM2NWUyYjRiYmJhNzhkNjNmYzZh
Yjk3NzFkODBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgV2FzbU1vZHVsZUFycmF5JiB3YXNtTW9kdWxlcywKICAgICAgICAgICAgIFdhc21NZW1v
cnlIYW5kbGVBcnJheSYgd2FzbU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCwgU2VyaWFsaXphdGlvbkNv
bnRleHQgY29udGV4dCwgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5JiBzaGFyZWRCdWZmZXJzKQor
ICAgICAgICBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIFZlY3Rvcjx1aW50OF90
PiYgb3V0LCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkmIHNoYXJlZEJ1ZmZlcnMpCiAgICAgewogICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2Vy
aWFsaXplcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywg
aW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCkBA
IC02MTMsNyArNjEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgd2FzbU1vZHVsZXMsCiAgICAg
ICAgICAgICB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAgICAgICAgYmxvYlVSTHMs
IG91dCwgY29udGV4dCwgc2hhcmVkQnVmZmVycyk7CisgICAgICAgICAgICBibG9iSGFuZGxlcywg
b3V0LCBjb250ZXh0LCBzaGFyZWRCdWZmZXJzKTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIu
c2VyaWFsaXplKHZhbHVlKTsKICAgICB9CiAKQEAgLTY0NywxMCArNjQ3LDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBXYXNtTW9kdWxlQXJyYXkmIHdhc21Nb2R1bGVzLAogICAgICAgICAgICAg
V2FzbU1lbW9yeUhhbmRsZUFycmF5JiB3YXNtTWVtb3J5SGFuZGxlcywKICNlbmRpZgotICAgICAg
ICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0LCBTZXJpYWxp
emF0aW9uQ29udGV4dCBjb250ZXh0LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkmIHNoYXJlZEJ1
ZmZlcnMpCisgICAgICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBibG9iSGFuZGxlcywgVmVjdG9y
PHVpbnQ4X3Q+JiBvdXQsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQsIEFycmF5QnVmZmVy
Q29udGVudHNBcnJheSYgc2hhcmVkQnVmZmVycykKICAgICAgICAgOiBDbG9uZUJhc2UobGV4aWNh
bEdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCi0gICAgICAgICwgbV9ibG9i
VVJMcyhibG9iVVJMcykKKyAgICAgICAgLCBtX2Jsb2JIYW5kbGVzKGJsb2JIYW5kbGVzKQogICAg
ICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSwgZW1wdHlTdHJpbmcoKSkpCiAgICAgICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgICAgICwgbV9zaGFyZWRCdWZmZXJzKHNoYXJlZEJ1ZmZlcnMpCkBAIC0xMjI0
LDcgKzEyMjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJsb2IgPSBKU0Jsb2I6OnRvV3JhcHBlZCh2bSwgb2JqKSkgewogICAgICAgICAgICAgICAg
IHdyaXRlKEJsb2JUYWcpOwotICAgICAgICAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGJsb2It
PnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JIYW5kbGVzLmFwcGVuZChi
bG9iLT5oYW5kbGUoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoYmxvYi0+dXJsKCkuc3RyaW5n
KCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnR5cGUoKSk7CiAgICAgICAgICAgICAg
ICAgd3JpdGUoYmxvYi0+c2l6ZSgpKTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAoYXV0byoga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZCh2bSwgb2Jq
KSkgewogICAgICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleVRhZyk7CiAgICAgICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWRLZXk7Ci0gICAgICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gZHVtbXlCbG9iVVJMczsKKyAgICAgICAgICAgICAgICBWZWN0b3I8QmxvYjo6SGFu
ZGxlPiBkdW1teUJsb2JIYW5kbGVzOwogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBkdW1teU1vZHVsZXMsCiAgICAgICAgICAgICAgICAgICAgIGR1bW15TWVtb3J5SGFuZGxl
cywKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBkdW1teUJsb2JVUkxzLCBzZXJpYWxpemVk
S2V5LCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsK
KyAgICAgICAgICAgICAgICAgICAgZHVtbXlCbG9iSGFuZGxlcywgc2VyaWFsaXplZEtleSwgU2Vy
aWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CiAgICAgICAg
ICAgICAgICAgcmF3S2V5U2VyaWFsaXplci53cml0ZShrZXkpOwogICAgICAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB3cmFwcGVkS2V5OwogICAgICAgICAgICAgICAgIGlmICghd3JhcENyeXB0
b0tleShtX2xleGljYWxHbG9iYWxPYmplY3QsIHNlcmlhbGl6ZWRLZXksIHdyYXBwZWRLZXkpKQpA
QCAtMTU1MCw3ICsxNTUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd3JpdGUoY29uc3QgRmls
ZSYgZmlsZSkKICAgICB7Ci0gICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUudXJsKCkuc3Ry
aW5nKCkpOworICAgICAgICBtX2Jsb2JIYW5kbGVzLmFwcGVuZChmaWxlLmhhbmRsZSgpKTsKICAg
ICAgICAgd3JpdGUoZmlsZS5wYXRoKCkpOwogICAgICAgICB3cml0ZShmaWxlLnVybCgpLnN0cmlu
ZygpKTsKICAgICAgICAgd3JpdGUoZmlsZS50eXBlKCkpOwpAQCAtMTc2MCw3ICsxNzYwLDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIFZl
Y3RvcjxTdHJpbmc+JiBtX2Jsb2JVUkxzOworICAgIFZlY3RvcjxCbG9iOjpIYW5kbGU+JiBtX2Js
b2JIYW5kbGVzOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wg
bV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0czsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRB
cnJheUJ1ZmZlcnM7CkBAIC0zOTE1LDcgKzM5MTUsNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5p
cQogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKLVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIHN0ZDo6dW5p
cXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlckNvbnRlbnRzQXJy
YXksIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0
b3JlcworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9y
PHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRs
ZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVy
Q29udGVudHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
c2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRt
YXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNf
SU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zm
c2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYKQEAgLTM5
NDEsMTIgKzM5NDEsOCBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgICwgbV93YXNtTW9k
dWxlc0FycmF5KFdURk1vdmUod2FzbU1vZHVsZXNBcnJheSkpCiAgICAgLCBtX3dhc21NZW1vcnlI
YW5kbGVzQXJyYXkoV1RGTW92ZSh3YXNtTWVtb3J5SGFuZGxlc0FycmF5KSkKICNlbmRpZgorICAg
ICwgbV9ibG9iSGFuZGxlcyhibG9iSGFuZGxlcykKIHsKLSAgICAvLyBTaW5jZSB0aGlzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBpcyBtZWFudCB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aHJlYWRzLCBp
dHMgU3RyaW5nIGRhdGEgbWVtYmVycwotICAgIC8vIG5lZWQgdG8gYmUgaXNvbGF0ZWRDb3BpZXMg
c28gd2UgZG9uJ3QgcnVuIGludG8gdGhyZWFkIHNhZmV0eSBpc3N1ZXMgZm9yIHRoZSBTdHJpbmdJ
bXBscy4KLSAgICBtX2Jsb2JVUkxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmxvYlVSTHMuc2l6
ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBtX2Jsb2JVUkxz
LnVuY2hlY2tlZEFwcGVuZCh1cmwuaXNvbGF0ZWRDb3B5KCkpOwogICAgIG1fbWVtb3J5Q29zdCA9
IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKQEAgLTM5OTAsOCArMzk4Niw4IEBAIHNpemVfdCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3QKICAgICB9CiAj
ZW5kaWYKIAotICAgIGZvciAoYXV0byYgdXJscyA6IG1fYmxvYlVSTHMpCi0gICAgICAgIGNvc3Qg
Kz0gdXJscy5zaXplSW5CeXRlcygpOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9ibG9iSGFu
ZGxlcykKKyAgICAgICAgY29zdCArPSBoYW5kbGUudXJsKCkuc3RyaW5nKCkuc2l6ZUluQnl0ZXMo
KTsKIAogICAgIHJldHVybiBjb3N0OwogfQpAQCAtNDA2OSw3ICs0MDY1LDcgQEAgc3RhdGljIEV4
Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSBjb2RlKQogUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7
CisgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CiAgICAgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwogICAgIFZlY3RvcjxSZWZQdHI8SW1h
Z2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
U19JTl9XT1JLRVJTKQpAQCAtNDA5NSw3ICs0MDkxLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxl
eGkKICAgICAgICAgZHVtbXlNb2R1bGVzLAogICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCiAj
ZW5kaWYKLSAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRl
ZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7CisgICAgICAgIGJsb2JIYW5kbGVzLCBidWZmZXIs
IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1
bGVzLmlzRW1wdHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dl
ZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwpAQCAtNDEwOCw3ICs0MTA0LDcgQEAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
SlNHbG9iYWxPYmplY3QmIGxleGkKICAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1
ZmZlciksIGJsb2JVUkxzLCBudWxscHRyLCBudWxscHRyLCB7IH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iSGFu
ZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5z
RHVwbGljYXRlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFw
cykKQEAgLTQyMjEsNyArNDIxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVS
THM7CisgICAgVmVjdG9yPEJsb2I6OkhhbmRsZT4gYmxvYkhhbmRsZXM7CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICAgICBXYXNtTWVt
b3J5SGFuZGxlQXJyYXkgd2FzbU1lbW9yeUhhbmRsZXM7CkBAIC00MjM4LDcgKzQyMzQsNyBAQCBF
eGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogICAgICAgICB3YXNtTW9kdWxlcywKICAgICAgICAgd2Fz
bU1lbW9yeUhhbmRsZXMsCiAjZW5kaWYKLSAgICAgICAgYmxvYlVSTHMsIGJ1ZmZlciwgY29udGV4
dCwgKnNoYXJlZEJ1ZmZlcnMpOworICAgICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBjb250ZXh0
LCAqc2hhcmVkQnVmZmVycyk7CiAKICAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uRm9y
U2VyaWFsaXphdGlvbkZhaWx1cmUoY29kZSk7CkBAIC00MjYwLDcgKzQyNTYsNyBAQCBFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoSlNHbG9iYWxPYgogICAgICAgICBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hcHBlbmQo
Y2hhbm5lbC0+ZGV0YWNoKCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6
YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykg
OiBudWxscHRyLCBXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpCisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRsZXMsIGFy
cmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBT
ZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1
ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShiYWNraW5nU3RvcmVzKQogI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICAgICAgICAgLCBXVEZNb3ZlKGRldGFj
aGVkQ2FudmFzZXMpCiAjZW5kaWYKQEAgLTQzNjYsMTIgKzQzNjIsMTIgQEAgdWludDMyX3QgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCiAgICAgcmV0dXJuIEN1cnJl
bnRWZXJzaW9uOwogfQogCi1WZWN0b3I8U3RyaW5nPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJs
b2JVUkxzSXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YmxvYlVSTHMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsK
LSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Jsb2JVUkxzLnNpemUoKSk7Ci0g
ICAgZm9yIChhdXRvJiB1cmwgOiBtX2Jsb2JVUkxzKQotICAgICAgICByZXN1bHQudW5jaGVja2Vk
QXBwZW5kKHVybC5pc29sYXRlZENvcHkoKSk7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9ibG9iSGFuZGxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9i
bG9iSGFuZGxlcykKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChoYW5kbGUudXJsKCku
c3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzODEsNyArNDM3Nyw3IEBA
IHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERC
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUgeworICAgIGJsb2JSZWdpc3RyeSgpLndy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIChhdXRvJiYgYmxvYkZpbGVQYXRocykgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgaWYgKGJsb2JGaWxlUGF0aHMuaXNFbXB0eSgp
KSB7CkBAIC00MzkxLDkgKzQzODcsOSBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3Jp
dGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKG1fYmxvYlVSTHMuc2l6
ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKG1fYmxvYkhhbmRs
ZXMuc2l6ZSgpID09IGJsb2JGaWxlUGF0aHMuc2l6ZSgpKTsKIAotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7ICp0aGlzLCBtX2Jsb2JVUkxzLCBibG9iRmlsZVBhdGhzIH0pOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7ICp0aGlzLCBibG9iVVJMcygpLCBibG9iRmlsZVBhdGhzIH0pOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDFjNzU0NWVjYjU3MTM5M2YyODU4MzYwYWRjMDFlOGM4OThl
NjUwYmYuLjE2YzQ5MTk1ZmZjNGY2ZTY5NzdhNzQ4OGI0ZDZjMjk4NTQ5YTM4YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmxvYi5oIgogI2lu
Y2x1ZGUgIkRldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CkBAIC05NSw5ICs5Niwx
MCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSAgICBib29sIGhhc0Js
b2JVUkxzKCkgY29uc3QgeyByZXR1cm4gIW1fYmxvYlVSTHMuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsg
fQogCi0gICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHNJc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMcygpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxCbG9i
OjpIYW5kbGU+JiBibG9iSGFuZGxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYkhhbmRsZXM7IH0K
ICAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJREJWYWx1ZSYmKT4mJik7CiAgICAgSURCVmFsdWUgd3JpdGVCbG9ic1RvRGlza0Zvcklu
ZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gY3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtMTIx
LDcgKzEyMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgKTsKIAotICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwg
c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywg
VmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVz
CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25z
dCBWZWN0b3I8QmxvYjo6SGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJh
Y2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM+PiYmID0geyB9CiAjZW5kaWYKQEAgLTE1MCw3ICsxNTIsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJheTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiBtX3dhc21NZW1vcnlI
YW5kbGVzQXJyYXk7CiAjZW5kaWYKLSAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOworICAg
IFZlY3RvcjxCbG9iOjpIYW5kbGU+IG1fYmxvYkhhbmRsZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5
Q29zdCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNh
c3RDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcApp
bmRleCA4MjcxZDFmNDk4ZDVmODcxZDZmYWQ0MjJjNmQwODdjMGJjZTJiZDFlLi42NjQwMWJiMGJm
YjQzOGM4ZWQ0MTcwYjEzODkyN2NmZDI0OThlZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJMb2FkZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDggKzk2LDE0IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEJyb2FkY2FzdENoYW5uZWw6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjCiAgICAgQVNTRVJUKHBvcnRzLmlzRW1wdHkoKSk7CiAKICAgICBl
bnN1cmVPbk1haW5UaHJlYWQoW29yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShtX29yaWdpbiksIG5h
bWUgPSBjcm9zc1RocmVhZENvcHkobV9uYW1lKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwg
bWVzc2FnZURhdGEgPSBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKV0oYXV0byYgZG9j
dW1lbnQpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2Uo
KSkKLSAgICAgICAgICAgIHBhZ2UtPmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLnBvc3RNZXNz
YWdlKG9yaWdpbiwgbmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlRGF0YSkpOworICAg
ICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBibG9iSGFuZGxlcyA9IG1lc3NhZ2VE
YXRhLT5ibG9iSGFuZGxlcygpOworICAgICAgICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkoKS5wb3N0TWVzc2FnZShvcmlnaW4sIG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUobWVzc2Fn
ZURhdGEpLCBbYmxvYkhhbmRsZXMgPSBXVEZNb3ZlKGJsb2JIYW5kbGVzKV0geworICAgICAgICAg
ICAgLy8gS2VlcHMgQmxvYiBkYXRhIGluc2lkZSBtZXNzYWdlRGF0YSBhbGl2ZSB1bnRpbCB0aGUg
bWVzc2FnZSBoYXMgYmVlbiBkZWxpdmVyZWQuCisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNSwxNCArMTIyLDE1IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6
Y2xvc2UoKQogICAgIH0pOwogfQogCi12b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVz
c2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpCit2b2lkIEJyb2FkY2FzdENoYW5uZWw6
OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVu
dGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSBjaGFubmVsVG9Db250ZXh0
SWRlbnRpZmllcigpLmdldChjaGFubmVsSWRlbnRpZmllcik7CiAgICAgaWYgKCFjb250ZXh0SWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElk
ZW50aWZpZXIsIFtjaGFubmVsSWRlbnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSld
KGF1dG8mKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2hhbm5l
bElkZW50aWZpZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildKGF1dG8mKSBtdXRhYmxlIHsKICAgICAg
ICAgUmVmUHRyPEJyb2FkY2FzdENoYW5uZWw+IGNoYW5uZWw7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBhbGxCcm9hZGNhc3RDaGFubmVsc0xvY2sgfTsKQEAgLTEzMCw2
ICsxMzgsOCBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6OmRpc3BhdGNoTWVzc2FnZVRvKEJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyIGNoYW5uZWxJZGVudAogICAgICAgICB9CiAgICAgICAgIGlm
IChjaGFubmVsKQogICAgICAgICAgICAgY2hhbm5lbC0+ZGlzcGF0Y2hNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrQWdncmVnYXRv
ciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmgKaW5kZXggMWZmNThiZGE3NjYyMjIxNGQ2YjAw
NGJmYmQ5OGMyOGRkYjA0NWNkMy4uM2RiYThmOGVkYzQwYmMzNjdjNTdkM2JjOTk1M2UyOTRmNDU0
MDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5oCkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UpOwogICAgIHZvaWQgY2xvc2UoKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRpc3BhdGNoTWVzc2FnZVRvKEJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBkaXNwYXRjaE1lc3NhZ2VUbyhCcm9hZGNhc3RDaGFu
bmVsSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBCcm9hZGNhc3RDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IGZhNmViYzg5NDkzYTllNThk
ZWNhYjNmNDlkMmQ1Yjk0ZWZiNzRkNjguLjVjMmJmYjA1NDdmMzYxNTZiZWVhMWRmMWNkYjVmM2Zk
MGEzNWViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDNmNDA5YTQ3ZWQzYjVm
ZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUuLjI3YmJhMmU3M2Q2NTYxNTE1MjcwYWEzNTdhNzBi
YmMwMjIzNzEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsNyArNTksNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogfTsKIAotCiB2b2lkIEJsb2JVUkxSZWdp
c3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBibG9iKQogewogICAgIEFTU0VSVCgmYmxv
Yi5yZWdpc3RyeSgpID09IHRoaXMpOwpAQCAtNzYsMjUgKzc2LDc4IEBAIFVSTFJlZ2lzdHJ5JiBC
bG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKKy8v
IFVucmVnaXN0ZXJzIHRoZSBCbG9iJ3MgaW50ZXJuYWwgVVJMIHVwb24gZGVzdHJ1Y3Rpb24uIFRo
aXMgY2FuIGJlIHVzZWQgdG8gZXh0ZW5kIHRoZSBsaWZldGltZSBvZiB0aGUgQmxvYiBkYXRhCisv
LyB3aXRob3V0IGFjdHVhbGx5IGtlZXBpbmcgdGhlIEJsb2Igb2JqZWN0IGFsaXZlLgorY2xhc3Mg
QmxvYkludGVybmFsVVJMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJsb2JJbnRlcm5h
bFVSTD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJMPiBjcmVhdGUo
VmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JJbnRlcm5hbFVSTChXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxC
bG9iSW50ZXJuYWxVUkw+IGNyZWF0ZUZvckRlc2VyaWFsaXphdGlvbihjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJj
ZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5cGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPEJs
b2JJbnRlcm5hbFVSTD4gY3JlYXRlRm9yU2xpY2UoY29uc3QgVVJMJiBzb3VyY2VVUkwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwgY29uc3QgU3RyaW5nJiB0eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKHNvdXJjZVVSTCwgc3Rh
cnQsIGVuZCwgdHlwZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QmxvYkludGVybmFsVVJM
PiBhZG9wdEludGVybmFsVVJMKGNvbnN0IFVSTCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQmxvYkludGVybmFsVVJMKGNyb3NzVGhyZWFkQ29weSh1cmwpKSk7Cisg
ICAgfQorCisgICAgfkJsb2JJbnRlcm5hbFVSTCgpCisgICAgeworICAgICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKKyAgICB9CisK
KyAgICBVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFVSTC5pc29sYXRlZENvcHko
KTsgfQorCitwcml2YXRlOgorICAgIEJsb2JJbnRlcm5hbFVSTChWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgICAgICA6IG1faW50ZXJu
YWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKKyAgICB7CisgICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3Zl
KGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICB9CisgICAgQmxvYkludGVybmFsVVJMKGNv
bnN0IFVSTCYgc291cmNlVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICAgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUlu
dGVybmFsVVJMKCkpCisgICAgeworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBzb3VyY2VVUkwsIHN0YXJ0LCBlbmQs
IHR5cGUpOworICAgIH0KKyAgICBCbG9iSW50ZXJuYWxVUkwoY29uc3QgVVJMJiBzb3VyY2VVUkws
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICAg
ICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCisgICAgewor
ICAgICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkws
IHNvdXJjZVVSTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkws
IHNvdXJjZVVSTCwgZmlsZUJhY2tlZFBhdGgsIHR5cGUpOworICAgIH0KKyAgICBCbG9iSW50ZXJu
YWxVUkwoVVJMJiYgaW50ZXJuYWxVUkwpCisgICAgICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3Zl
KGludGVybmFsVVJMKSkKKyAgICB7IH0KKworICAgIFVSTCBtX2ludGVybmFsVVJMOworfTsKKwog
QmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQpCi0gICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKICAgICAsIG1f
dHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50ZXJuYWxVUkw6
OmFkb3B0SW50ZXJuYWxVUkwodXJsKSkKIHsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAg
LCBtX3NpemUoMCkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFsVVJMOjpjcmVhdGUo
eyB9LCB7IH0pKQogewotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2lu
dGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQogCi1CbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50
cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKSkKLSAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUocHJvcGVydHlCYWcu
dHlwZSkpCitzdGF0aWMgVmVjdG9yPEJsb2JQYXJ0PiBidWlsZEJsb2JEYXRhKFZlY3RvcjxCbG9i
UGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBw
cm9wZXJ0eUJhZykKIHsKICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGlu
Z3MpOwogICAgIGZvciAoYXV0byYgYmxvYlBhcnRWYXJpYW50IDogYmxvYlBhcnRWYXJpYW50cykg
ewpAQCAtMTA0LDU3ICsxNTcsNjQgQEAgQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmEKICAgICAgICAg
ICAgIH0KICAgICAgICAgKTsKICAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIuZmluYWxpemUoKTsK
K30KIAotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVy
bmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CitCbG9iOjpCbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBh
cnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAgICA6IEFj
dGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5
cGUocHJvcGVydHlCYWcudHlwZSkpCisgICAgLCBtX2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVS
TDo6Y3JlYXRlKGJ1aWxkQmxvYkRhdGEoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVy
dHlCYWcpLCBtX3R5cGUpKQorewogfQogCiBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fdHlwZShjb250
ZW50VHlwZSkKICAgICAsIG1fc2l6ZShkYXRhLnNpemUoKSkKKyAgICAsIG1faW50ZXJuYWxVUkwo
QmxvYkludGVybmFsVVJMOjpjcmVhdGUoeyBCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSB9LCBjb250
ZW50VHlwZSkpCiB7Ci0gICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBh
cnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgbV9pbnRlcm5hbFVSTCA9
IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29u
dGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3Ry
dWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEJsb2ImIGJsb2Ip
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxv
YlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKICAgICAsIG1fdHlwZShibG9iLnR5cGUoKSkKICAg
ICAsIG1fc2l6ZShibG9iLnNpemUoKSkKKyAgICAsIG1faW50ZXJuYWxVUkwoQmxvYkludGVybmFs
VVJMOjpjcmVhdGUoeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKSkKIHsKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBC
bG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihEZXNlcmlh
bGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9pbnRlcm5hbFVSTChCbG9iSW50
ZXJuYWxVUkw6OmNyZWF0ZUZvckRlc2VyaWFsaXphdGlvbihzcmNVUkwsIGZpbGVCYWNrZWRQYXRo
LCBtX3R5cGUpKQogewotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwotICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVybmFsVVJM
LCBzcmNVUkwpOwotICAgIGVsc2UKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBm
aWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKICAgICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCisgICAgLCBt
X2ludGVybmFsVVJMKEJsb2JJbnRlcm5hbFVSTDo6Y3JlYXRlRm9yU2xpY2Uoc3JjVVJMLCBzdGFy
dCwgZW5kLCBtX3R5cGUpKQogICAgIC8vIG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwg
dG8gZW5kIC0gc3RhcnQgc28gd2UgZG8gbm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKLSAgICBt
X2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShtX2ludGVybmFsVVJMLCBz
cmNVUkwsIHN0YXJ0LCBlbmQsIG1fdHlwZSk7CiB9CiAKIEJsb2I6On5CbG9iKCkKIHsKICAgICB3
aGlsZSAoIW1fYmxvYkxvYWRlcnMuaXNFbXB0eSgpKQogICAgICAgICAoKm1fYmxvYkxvYWRlcnMu
YmVnaW4oKSktPmNhbmNlbCgpOworfQorCitVUkwgQmxvYjo6dXJsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbnRlcm5hbFVSTC0+dXJsKCk7Cit9CiAKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKK1JlZjxCbG9iPiBCbG9iOjpz
bGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0Cit7CisgICAgYXV0
byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKCZjb250ZXh0LCBtX2ludGVybmFsVVJMLT51cmwo
KSwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICBibG9iLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gYmxvYjsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2I6OnNpemUo
KSBjb25zdApAQCAtMTYyLDcgKzIyMiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iOjpzaXpl
KCkgY29uc3QKICAgICBpZiAoIW1fc2l6ZSkgewogICAgICAgICAvLyBGSVhNRTogSmF2YVNjcmlw
dCBjYW5ub3QgcmVwcmVzZW50IHNpemVzIGFzIGxhcmdlIGFzIHVuc2lnbmVkIGxvbmcgbG9uZywg
d2UgbmVlZCB0bwogICAgICAgICAvLyBjb21lIHVwIHdpdGggYW4gZXhjZXB0aW9uIHRvIHRocm93
IGlmIGZpbGUgc2l6ZSBpcyBub3QgcmVwcmVzZW50YWJsZS4KLSAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGFjdHVhbFNpemUgPSBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShtX2lu
dGVybmFsVVJMKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGFjdHVhbFNpemUgPSBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShtX2ludGVybmFsVVJMLT51cmwoKSk7CiAgICAg
ICAgIG1fc2l6ZSA9IGlzSW5Cb3VuZHM8bG9uZyBsb25nPihhY3R1YWxTaXplKSA/IGFjdHVhbFNp
emUgOiAwOwogICAgIH0KIApAQCAtMzM1LDUgKzM5NSwyMyBAQCBjb25zdCBjaGFyKiBCbG9iOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkJsb2IiOwogfQogCitCbG9i
OjpIYW5kbGUgQmxvYjo6aGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSGFuZGxlIHsgbV9p
bnRlcm5hbFVSTC5jb3B5UmVmKCkgfTsKK30KKworQmxvYjo6SGFuZGxlOjpIYW5kbGUoUmVmPEJs
b2JJbnRlcm5hbFVSTD4mJiBpbnRlcm5hbFVSTCkKKyAgICA6IG1faW50ZXJuYWxVUkwoV1RGTW92
ZShpbnRlcm5hbFVSTCkpCit7IH0KKworQmxvYjo6SGFuZGxlOjp+SGFuZGxlKCkgPSBkZWZhdWx0
OworCitCbG9iOjpIYW5kbGU6OkhhbmRsZShIYW5kbGUmJikgPSBkZWZhdWx0OworQmxvYjo6SGFu
ZGxlOjpIYW5kbGUoY29uc3QgSGFuZGxlJikgPSBkZWZhdWx0OworCitVUkwgQmxvYjo6SGFuZGxl
Ojp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVybmFsVVJMLT51cmwoKTsKK30KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBmZDE3OWUwNjIx
MTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMwNjVlYTQ0Li4yNTUzMWJjMzA4ZWM4OTk2MjM3N2VjZDQw
MGVjMTBkMDg5NGEwYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTcsNiArNTcsNyBAQCBj
bGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7
CiAKIHVzaW5nIEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXJWaWV3PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+LCBSZWZQdHI8QmxvYj4sIFN0cmluZz47
CitjbGFzcyBCbG9iSW50ZXJuYWxVUkw7CiAKIGNsYXNzIEJsb2IgOiBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9S
VChCbG9iLCBXRUJDT1JFX0VYUE9SVCk7CkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcm5hbFVSTDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB1cmwoKSBjb25zdDsKICAg
ICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CkBAIC0xMTAsMTcg
KzExMSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gVVJMUmVnaXN0cmFibGUKICAgICBVUkxSZWdpc3Ry
eSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZjxCbG9iPiBzbGljZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRv
IGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoJmNvbnRleHQsIG1faW50ZXJuYWxVUkwsIHN0YXJ0
LCBlbmQsIGNvbnRlbnRUeXBlKSk7Ci0gICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOwot
ICAgICAgICByZXR1cm4gYmxvYjsKLSAgICB9CisgICAgUmVmPEJsb2I+IHNsaWNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB0ZXh0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIGFycmF5QnVmZmVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICBF
eGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBzdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwogCisgICAgY2xhc3MgSGFuZGxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxp
Y2l0IEhhbmRsZShSZWY8QmxvYkludGVybmFsVVJMPiYmKTsKKyAgICAgICAgfkhhbmRsZSgpOwor
ICAgICAgICBIYW5kbGUoSGFuZGxlJiYpOworICAgICAgICBIYW5kbGUoY29uc3QgSGFuZGxlJik7
CisgICAgICAgIFVSTCB1cmwoKSBjb25zdDsKKyAgICBwcml2YXRlOgorICAgICAgICBSZWY8Qmxv
YkludGVybmFsVVJMPiBtX2ludGVybmFsVVJMOworICAgIH07CisKKyAgICAvLyBLZWVwaW5nIHRo
ZSBoYW5kbGUgYWxpdmUgd2lsbCBrZWVwIHRoZSBCbG9iIGRhdGEgYWxpdmUgKGJ1dCBub3QgdGhl
IEJsb2Igb2JqZWN0KS4KKyAgICBIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CisKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3I8QmxvYlBhcnRWYXJp
YW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKQEAgLTE0NCwxNCArMTU0LDE0IEBAIHBy
aXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFN0cmluZyBtX3R5cGU7CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9zaXplOworCiAgICAg
Ly8gVGhpcyBpcyBhbiBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBpZGVudGlm
aWVyIGZvciB0aGlzIGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0byBzb3Vy
Y2UgdGhlIGJsb2IncyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBGaWxlUmVh
ZCdpbmcsIHB1YmxpYyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJwb3Nlcy4K
LSAgICBVUkwgbV9pbnRlcm5hbFVSTDsKKyAgICBSZWY8QmxvYkludGVybmFsVVJMPiBtX2ludGVy
bmFsVVJMOwogCi0gICAgU3RyaW5nIG1fdHlwZTsKLQotICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxCbG9iTG9hZGVyPj4gbV9ibG9iTG9hZGVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggYTNjOThiMWUzY2E3YWI3NmVlMWYwYTFiMGU4MWE4MWVjZDg5
YWIxNy4uOGRjYTc1Yjk0MDc5NTA3ODkyMzZkMmFhMTIwZjQzYTdiM2IxYzZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTExNzUsNyArMTE3NSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWwgeyB9CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgdm9p
ZCBwb3N0TWVzc2FnZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBC
cm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJikg
ZmluYWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7IH0K
IH07CiAKIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNw
cAppbmRleCBiZTg4YTUzNjk1YjliNGRiNWUzNjVmMjUyMTg0NmE5YmYwOTAzYzdmLi45Yjg2ZWJm
YzMwMzQzYjRlNDU0NTMyZjI2YzBhYjI4MWRmZDM1Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oPgorI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU4LDIzICs1OSwyOCBAQCB2b2lkIE5ldHdvcmtCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdAogICAgIGNoYW5uZWxzRm9yTmFtZUl0ZXJhdG9yLT52YWx1ZS5yZW1vdmVGaXJzdChnbG9i
YWxDaGFubmVsSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeTo6cG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2hhbm5lbHNGb3JPcmlnaW5JdGVy
YXRvciA9IG1fYnJvYWRjYXN0Q2hhbm5lbHMuZmluZChvcmlnaW4pOwogICAgIEFTU0VSVChjaGFu
bmVsc0Zvck9yaWdpbkl0ZXJhdG9yICE9IG1fYnJvYWRjYXN0Q2hhbm5lbHMuZW5kKCkpOwogICAg
IGlmIChjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID09IG1fYnJvYWRjYXN0Q2hhbm5lbHMuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgYXV0byBjaGFubmVsc0Zvck5hbWVJdGVyYXRvciA9IGNoYW5uZWxzRm9yT3JpZ2luSXRl
cmF0b3ItPnZhbHVlLmZpbmQobmFtZSk7CiAgICAgQVNTRVJUKGNoYW5uZWxzRm9yTmFtZUl0ZXJh
dG9yICE9IGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3ItPnZhbHVlLmVuZCgpKTsKICAgICBpZiAo
Y2hhbm5lbHNGb3JOYW1lSXRlcmF0b3IgPT0gY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvci0+dmFs
dWUuZW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBHbG9iYWxCcm9hZGNh
c3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2VHbG9iYWxDaGFubmVsSWRlbnRpZmllciB7IGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSwgc291cmNlIH07CiAgICAgZm9yIChhdXRvJiBnbG9iYWxJZGVudGlm
aWVyIDogY2hhbm5lbHNGb3JOYW1lSXRlcmF0b3ItPnZhbHVlKSB7CiAgICAgICAgIGlmIChnbG9i
YWxJZGVudGlmaWVyID09IHNvdXJjZUdsb2JhbENoYW5uZWxJZGVudGlmaWVyKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGdsb2JhbElkZW50
aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VzOjpXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk6OlBvc3RNZXNzYWdlVG9SZW1vdGUoZ2xvYmFsSWRlbnRpZmllci5jaGFubmVsSW5k
ZW50aWZpZXJJblByb2Nlc3MsIG1lc3NhZ2UpLCAwKTsKKyAgICAgICAgUmVmUHRyIGNvbm5lY3Rp
b24gPSBJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oZ2xvYmFsSWRlbnRpZmllci5jb25uZWN0
aW9uSWRlbnRpZmllcik7CisgICAgICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpQb3N0TWVzc2FnZVRvUmVtb3RlKGdsb2Jh
bElkZW50aWZpZXIuY2hhbm5lbEluZGVudGlmaWVySW5Qcm9jZXNzLCBtZXNzYWdlKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9LCAwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmgKaW5kZXggMDFiMTk0NjE4Y2QyNjg0MGQ1NTdlMmY1N2RhN2VhYjgyNTY0ZjMwOS4uNDE1
YTY5NjViOWE1M2M3MWRlYjAyNTAxNDhiNDUwZGZkYjZmMWZhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3Rl
ckNoYW5uZWwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRp
Zmllcik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKTsKKyAgICB2b2lkIHBvc3RNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
c291cmNlLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBHbG9iYWxCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVz
c2FnZXMuaW4KaW5kZXggMWFhOWMxYmZhOGE1ZjljZTBiNGE5NGUxMjY4YWEzOGRiM2RkNzk3MS4u
OWI2ODUwYjk1NTgzMzc2ZTQ5OTFkMjE1YTJjZGQ3MTU0NDlhZmQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgpAQCAtMjMsNSArMjMsNSBAQAogbWVz
c2FnZXMgLT4gTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSBOb3RSZWZDb3VudGVkIHsK
ICAgICBSZWdpc3RlckNoYW5uZWwoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBv
cmlnaW4sIFN0cmluZyBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBj
aGFubmVsSWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgVW5yZWdpc3RlckNoYW5uZWwo
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW4sIFN0cmluZyBuYW1lLCBX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBjaGFubmVsSWRlbnRpZmllcikgV2Fu
dHNDb25uZWN0aW9uCi0gICAgUG9zdE1lc3NhZ2Uoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBvcmlnaW4sIFN0cmluZyBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRl
bnRpZmllciBzb3VyY2UsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBt
ZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBQb3N0TWVzc2FnZShzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiwgU3RyaW5nIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzIG1lc3NhZ2UpIC0+ICgpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDJhYjBmYzI2NTMxYzc3
M2Y1MWQ2ZDJkNTU4Njg0YmRhMTM2YmI2YWEuLjk4OWJiNzIzZjk4ZDdkZDI4MThhNDFlZjYxMzM3
ZmU2OWMzZmNkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTIwMCwxNSArMjAwLDIwIEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdl
QXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVj
b2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBsaXN0ZW5lcklEOworICAgIGRlY29kZXIgPj4gbGlzdGVuZXJJRDsKKyAgICBpZiAoIWxp
c3RlbmVySUQpCisgICAgICAgIHJldHVybjsKKwogICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUg
Q29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAg
ZGVjb2RlciA+PiBhcmd1bWVudHM7CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5k
bGVyID0gW2xpc3RlbmVySUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgY29ubmVjdGlvbiA9
IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgdHlw
ZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAq
bGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4g
YXJncykgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5j
b2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOwogICAgICAgICBU
OjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwot
ICAgIH07CisgICAgfSwgVDo6Y2FsbGJhY2tUaHJlYWQgfTsKICAgICBjYWxsTWVtYmVyRnVuY3Rp
b24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuY3BwCmluZGV4IDc4OWMxNjNmNmI1ODY4Y2JjZDg3NTU5YTBlYjk3MjE4
YTA0NTZjZDMuLjZkYzdkNmFiYTAxZTU4Y2MzYjFiMWM4YjliMDJmYjAzZGY1NTk5MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCkBAIC00OSwxNCArNDks
MTQgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVs
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2kKICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpVbnJl
Z2lzdGVyQ2hhbm5lbCB7IG9yaWdpbiwgbmFtZSwgaWRlbnRpZmllciB9LCAwKTsKIH0KIAotdm9p
ZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKQordm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnk6OnBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2UgeyBvcmlnaW4sIG5hbWUsIHNvdXJjZSwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgeyBXVEZNb3ZlKG1lc3NhZ2UpLCB7IH0gfSB9LCAw
KTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlBvc3RNZXNzYWdlIHsgb3Jp
Z2luLCBuYW1lLCBzb3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIHsgV1RG
TW92ZShtZXNzYWdlKSwgeyB9IH0gfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwog
fQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VUb1JlbW90
ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCit2b2lkIFdlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpCcm9hZGNhc3RDaGFu
bmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2VUbyhp
ZGVudGlmaWVyLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgV2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlVG8oaWRlbnRpZmllciwgbWVzc2Fn
ZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmgKaW5kZXggNWQ0ZjZjNDA4YTE3YmQyOTA5ZDZjNDYyZDRkNDY4OTFlZWNkMTFm
NC4uNDRhM2QzODJjMDgxNTBmN2EwOWE4ZThlOTdmYzI4NmNhYWMxN2M1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApAQCAtNDMsMTQgKzQzLDE0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAKIHByaXZhdGU6CiAgICAgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkJyb2FkY2FzdENo
YW5uZWxJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKTsKKyAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCmluZGV4IGIw
NDE3M2FmZmI0NmIxN2QzMWIzOTdkYTFlYmU3NDEyMjRjYmUzOWQuLjA3YWY1MmY4ZDhlNDg3MjFh
NjAwZGU2ZDUzYzcwNDQ4ZTMyZWNiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgewotICAg
IFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
ZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNz
YWdlKQorICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElk
ZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwCmluZGV4IDExMjZlM2E5MzA4MjI3NTc5MTEyYWJkZDYxZGNkYWJjODc1YjQ5MzYuLjQ1
YzMyYTFiMzg1ODliMmJkM2M4OWE3MzhmN2E5ODJhZTJjMzI4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNv
cmUvQnJvYWRjYXN0Q2hhbm5lbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTY1
LDkgKzY2LDExIEBAIHZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVy
Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpCiAgICAgY2hhbm5lbHNGb3JOYW1l
SXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9z
dE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNl
LCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCiAgICAgYXV0byBj
aGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID0gbV9jaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAg
QVNTRVJUKGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgIT0gbV9jaGFubmVscy5lbmQoKSk7CiAg
ICAgaWYgKGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9jaGFubmVscy5lbmQoKSkKQEAg
LTc4LDYgKzgxLDYgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNz
YWdlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYKICAgICBmb3IgKGF1dG8mIGNo
YW5uZWxJZGVudGlmaWVyIDogY2hhbm5lbHNGb3JOYW1lSXRlcmF0b3ItPnZhbHVlKSB7CiAgICAg
ICAgIGlmIChjaGFubmVsSWRlbnRpZmllciA9PSBzb3VyY2UpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlVG8o
Y2hhbm5lbElkZW50aWZpZXIsIG1lc3NhZ2UuY29weVJlZigpKTsKKyAgICAgICAgV2ViQ29yZTo6
QnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlVG8oY2hhbm5lbElkZW50aWZpZXIsIG1l
c3NhZ2UuY29weVJlZigpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IGY1YzdjZjU1MThiOGE2ODFmNGI4ZjVj
ODMwZGVjMmU2OGJmMTgxOTcuLjM3MTEzMjIwNTFjN2I4MWY2YjIxYTVmYjRjMTVjMDA3MDYzZDk0
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApAQCAtMzYsNyArMzYsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5u
ZWxJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDliMzU3ZjYxMWU0NmMzZmUzMTBmZmRmMWZhMDcyZjc4NzJiNzcxZGMuLjQxNGE0
ZDQyMGM5ZTdhYzc1ZTU4MDg0ZjhhZjJlYzFmYTI1YTQ0NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wNy0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNo
YW5uZWwvYmxvYnMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUgc2luY2UgaW1wbGVtZW50aW5nIEJs
b2JDaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjgxNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwOTIyNTAyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IHRoYXQgaXMg
bm8gbG9uZ2VyIGZsYWt5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIx
LTA3LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyODA0ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmNlNTI4N2M0MmUyNjNjYjdhZDBkNTgwOTJkOTg2MDJj
ODQ4YzA0OC4uOTNhZTY3Y2ViN2FkNzQxYTUyNDY2YTcyZmQ3YzYxNGIxMDM3NTE2MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTk5Miw4
ICsxOTkyLDYgQEAgd2Via2l0Lm9yZy9iLzIyODExNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2NvbnRlbnQtdHlwZS9zY3JpcHQud2kKIAogd2Via2l0Lm9yZy9iLzIyODEy
NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY3Jvc3Mtb3JpZ2luLW9wZW5l
ci1wb2xpY3kvcmVzb3VyY2UtcG9wdXAuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdl
YmtpdC5vcmcvYi8yMjgxNjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9ibG9icy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLQogd2Vi
a2l0Lm9yZy9iLzIyNzk5OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWVtYmVkLWVsZW1lbnQvZW1iZWQtbmV0d29yay1l
cnJvci5zdWIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjc3NjIgWyBE
ZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbnRlcmFjdGlvbi9m
b2N1cy90aGUtYXV0b2ZvY3VzLWF0dHJpYnV0ZS9kb2N1bWVudC13aXRoLWZyYWdtZW50LXZhbGlk
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA4Y2Y3MzAwYWY0OTNmYTQ1MzlkZjZmYTNiMWQ2YzRiNzc4MjU5M2RlLi5j
OGU2OWFmODFlYjE4NDVlNzEyZGJkYzVmMTQ2ZTFhYjE2OTE0OWRhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjI5OCw4ICsyMjk4LDYgQEAgd2Via2l0
Lm9yZy9iLzIxNDU3NCBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstbGlzdC1wcm9wZXJ0eS1pbnN0
YW5jZXMuc3ZnIFsgUGFzcwogCiB3ZWJraXQub3JnL2IvMjI4MTI3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZS1w
b3B1cC5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIyODE2OCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL2Jsb2JzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjIyMzg1IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2V2ZW50LXVwbG9hZC1wcm9ncmVzcy1j
cm9zc29yaWdpbi5hbnkud29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMjI3OTk4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC90aGUtZW1iZWQtZWxlbWVudC9lbWJlZC1uZXR3b3JrLWVycm9yLnN1
Yi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>