<?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>201299</bug_id>
          
          <creation_ts>2019-08-29 05:34:23 -0700</creation_ts>
          <short_desc>Move MessageRegistry to NetworkProcess</short_desc>
          <delta_ts>2019-12-18 13:24:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>201300</dependson>
    
    <dependson>201333</dependson>
          <blocked>201400</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1566194</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-29 05:34:23 -0700</bug_when>
    <thetext>This will remove unnecessary hops for service worker messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566196</commentid>
    <comment_count>1</comment_count>
      <attachid>377571</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-29 05:53:39 -0700</bug_when>
    <thetext>Created attachment 377571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567194</commentid>
    <comment_count>2</comment_count>
      <attachid>377850</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-02 06:14:01 -0700</bug_when>
    <thetext>Created attachment 377850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567210</commentid>
    <comment_count>3</comment_count>
      <attachid>377853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-02 09:02:07 -0700</bug_when>
    <thetext>Created attachment 377853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567344</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 04:16:49 -0700</bug_when>
    <thetext>Only downside is that, currently, on network process crash, the registry information is gone and would need to be rebuilt on network process crash recovery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567345</commentid>
    <comment_count>5</comment_count>
      <attachid>377853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 04:18:35 -0700</bug_when>
    <thetext>Comment on attachment 377853
Patch

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

&gt; Source/WebKit/UIProcess/API/APIContextMenuElementInfo.h:35
&gt; +#include &lt;wtf/RetainPtr.h&gt;

here and below: unified build fix apparently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567509</commentid>
    <comment_count>6</comment_count>
      <attachid>377853</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-03 14:23:28 -0700</bug_when>
    <thetext>Comment on attachment 377853
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:962
&gt; +void NetworkConnectionToWebProcess::checkRemotePortForActivity(const WebCore::MessagePortIdentifier port, CompletionHandler&lt;void(bool)&gt;&amp;&amp; callback)

It would make things a bit cleaner to make this CompletionHandler&lt;void(HasActivity)&gt;

&gt; Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.cpp:68
&gt; +    // Should never be called in the UI process provider.
&gt; +    ASSERT_NOT_REACHED();

Can we remove all these?
Could we at least write code that calls the CompletionHandlers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567659</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 23:15:27 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 377853 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377853&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:962
&gt; &gt; +void NetworkConnectionToWebProcess::checkRemotePortForActivity(const WebCore::MessagePortIdentifier port, CompletionHandler&lt;void(bool)&gt;&amp;&amp; callback)
&gt; 
&gt; It would make things a bit cleaner to make this
&gt; CompletionHandler&lt;void(HasActivity)&gt;

OK

&gt; &gt; Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.cpp:68
&gt; &gt; +    // Should never be called in the UI process provider.
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; Can we remove all these?
&gt; Could we at least write code that calls the CompletionHandlers?

Patch at bug 201400 will fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567701</commentid>
    <comment_count>8</comment_count>
      <attachid>377969</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-04 03:46:12 -0700</bug_when>
    <thetext>Created attachment 377969
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567722</commentid>
    <comment_count>9</comment_count>
      <attachid>377969</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 05:46:32 -0700</bug_when>
    <thetext>Comment on attachment 377969
Patch for landing

Clearing flags on attachment: 377969

Committed r249479: &lt;https://trac.webkit.org/changeset/249479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567723</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 05:46:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567724</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-04 05:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55015929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592928</commentid>
    <comment_count>12</comment_count>
      <attachid>377969</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-22 11:35:35 -0800</bug_when>
    <thetext>Comment on attachment 377969
Patch for landing

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:945
&gt; +    auto callback = m_messageBatchDeliveryCompletionHandlers.take(messageBatchIdentifier);
&gt; +    ASSERT(callback);
&gt; +    callback();

This caused https://bugs.webkit.org/show_bug.cgi?id=204460</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377571</attachid>
            <date>2019-08-29 05:53:39 -0700</date>
            <delta_ts>2019-09-02 06:13:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201299-20190829145337.patch</filename>
            <type>text/plain</type>
            <size>135085</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0M2FkNWRhODBmZWU3
YzY5OTk1N2RkMDBhYWQwNjMwZjU3NWQ3Ny4uNWViMDE2YTI0ZGVkYjljNzkxY2NkZjQ4NzFlYjAw
NTExOGI1MmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE5LTA4LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIE1lc3NhZ2VSZWdp
c3RyeSB0byBOZXR3b3JrUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxMjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBNZXNzYWdlUmVnaXN0cnkgdG8gTmV0d29ya1Byb2Nlc3MuCisg
ICAgICAgIFRoaXMgcmVxdWlyZXMgc2VuZGluZyBNZXNzYWdlUG9ydCByZWxhdGVkIG1lc3NhZ2Vz
IGJldHdlZW4gV2ViQ29udGVudCBhbmQgTmV0d29ya1Byb2Nlc3MuCisgICAgICAgIEludHJvZHVj
ZSBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSB0byBoYXZlIGEgbWVzc2FnZSBwb3J0
IGNoYW5uZWwgcmVnaXN0cnkgZGVkaWNhdGVkIHRvIFdvcmtlcnMuCisgICAgICAgIE5vIGNoYW5n
ZSBvZiBiZWhhdmlvci4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZUNoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUNoYW5uZWw6Ok1lc3NhZ2VDaGFubmVs
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIGRvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAqIGRvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMv
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6fldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNz
YWdlUG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpt
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorCiAyMDE5LTA4LTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlZCBkZXZpY2VzIHNob3VsZCBub3QgYmUgdGFrZW4gaW50byBh
Y2NvdW50IHdoZW4gc2VhcmNoaW5nIGZvciBhIGNhcHR1cmUgZGV2aWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY4
ZTI5ZDAwYjdiMmQyNmVlOGMwNTY3NGNiOGI4NTBiZmNlNzZjZTkuLmU0YWY3MjdmMjgzZDQwODhl
ODA1OWM5YjM5MDcyNTcxMjFjMzQ2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTkt
MDgtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
TWVzc2FnZVJlZ2lzdHJ5IHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtpbmcgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3Mga2V5ZWQgYnkgd2ViIHByb2Nlc3MgSUQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3Rl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lc3Nh
Z2VQb3J0RGlzZW50YW5nbGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VBbGxNZXNz
YWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQ
cm9jZXNzVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRX
aXRoQXN5bmNSZXBseSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjppbml0aWFsaXplU1dD
bGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0
ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjplbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdl
UG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1v
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOC0y
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdlYlBh
Z2VQcm94eSBjYWxsYmFja3MgaW4gY2FzZSBvZiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgcmVj
ZWl2ZWQgZnJvbSBTZXJ2aWNlIFdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4YTU0MGQ0YzEwNzc4
NTkxYmUxYzE5YTMxNGMzNjE5ZTgwYWJjNzJjLi5jOWVhYzE0YTQ3ZDM0OTRmY2FhNDFmODE1YTdk
ODA5YTU5NjcyZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtOTc0LDYgKzk3NCw3IEBAIGRvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCiBkb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAKIGRvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuY3BwCiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmNwcAorZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5jcHAKIAogZG9taml0L0RPTUpJVEhlbHBlcnMuY3BwCiBkb21qaXQvSlNEb2N1
bWVudERPTUpJVC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4OGE2YjhjNWRhN2NiOWE2NzViMTc2ZjA4ZDIyOThlMTcxN2Rh
OWFlLi43ODY5MWU2YjNkYTY1ODJhMTgxNjBjZDA4MmU3OTMyM2I4ZDBiZDllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTY0
LDYgKzcxNjQsOCBAQAogCQk0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTExNEE3QTIzMTdCMzlFMDBCNTYwMDcgLyogV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTRBN0MyMzE3QjM5RTAwQjU2MDA3IC8q
IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1M0YxRjlGOUM5QjAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDExRjlG
OUM5QzAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyog
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODgzOSw2ICsxODg0MSw4IEBACiAJCQkJNTFFQ0MzRjEyMDA1ODdCNTAw
NDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8sCiAJCQkJNTFBNzQ4RTEy
MDA1RDBFMDAwNzVCQTY4IC8qIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmNwcCAqLywKIAkJCQk1
MUE3NDhFMDIwMDVEMEUwMDA3NUJBNjggLyogTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCAqLywK
KwkJCQk0MTExNEE3QzIzMTdCMzlFMDBCNTYwMDcgLyogV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuY3BwICovLAorCQkJCTQxMTE0QTdBMjMxN0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBtZXNzYWdl
cG9ydHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZDIzMzk1YTUzYWYzMTBhNWFiZWI1YjVlYzExMmZmY2FjZjc5MDVkMi4uYTc3MmRkMGUx
YTUwZjc2NmEwZWY0YTE1NjFlNDcxZTEzZWZlY2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC04MjcwLDQgKzgyNzAsOSBAQCB2b2lkIERvY3VtZW50OjpzZXRBcHBsZVBheUlzQWN0aXZl
KCkKIAogI2VuZGlmCiAKK01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBEb2N1bWVudDo6bWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAgIHJldHVybiBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6c2luZ2xldG9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggMTYxMmU0MjBlY2ExMWM0ZGFkMTM1Y2Q5MTBmZTQ1NzZlZmU3
MmFlZC4uODljNWM2ZDJmMjIwOTc3NTBmNmNjOGM5MTM5NDQ3ZDJkY2VhNDhhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENsaWVudDsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0
OwogY2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CitjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2RlRmls
dGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTUyOSw2ICsxNTMwLDggQEAgcHVibGljOgog
ICAgIGJvb2wgaW5IaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbkhpdFRlc3Rpbmc7IH0K
ICNlbmRpZgogCisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIG1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyKCk7CisKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdz
IHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAg
ICAgRG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQsIEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQg
PSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3BwCmluZGV4IDE3NGY1YTM3ZGU4Yzk3YjBh
MWJmYjVmMmU4ZDBhZjBkNWQ1YTI1YzkuLjc4MTc2M2E5OTkwYjMxZGVlMDBjNGQzZjEwZDgxODUw
MjljMGM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcApAQCAtNDksNyAr
NDksNyBAQCBNZXNzYWdlQ2hhbm5lbDo6TWVzc2FnZUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKICAgICBpZiAoIWNvbnRleHQuYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKSkgewogICAgICAgICBBU1NFUlQoIW1fcG9ydDEtPmNsb3NlZCgpKTsKICAgICAgICAgQVNT
RVJUKCFtX3BvcnQyLT5jbG9zZWQoKSk7Ci0gICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5jcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoaWQxLCBpZDIpOwor
ICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoY29udGV4dCku
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGlkMSwgaWQyKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQobV9wb3J0MS0+Y2xvc2VkKCkpOwogICAgICAgICBBU1NFUlQobV9wb3J0Mi0+
Y2xvc2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNTE0MzA0YzkwNjQx
NjdiOTRiMTAxMWNlOGM4MTk0ZDc0YzAxNzdhNy4uODcwYjM3MDE1NDlmN2EzNjY1NmJkY2JlZjlh
YmQ3YzE5MGIwNjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRl
IDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjQsNyArMTI1LDcg
QEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlKCkKIHsKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuZW50
YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobV9pZGVudGlmaWVyLCBtX3JlbW90
ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4
dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5lbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nl
c3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3RlSWRlbnRpZmllcik7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0Pj4mJiB0cmFuc2ZlcikKQEAgLTE2MCw3ICsxNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUgbQogCiAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIkFjdHVhbGx5IHBvc3RpbmcgbWVzc2Fn
ZSB0byBwb3J0ICVzICh0byBiZSByZWNlaXZlZCBieSBwb3J0ICVzKSIsIG1faWRlbnRpZmllci5s
b2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3JlbW90ZUlkZW50aWZpZXIubG9nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xl
dG9uKCkucG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBtX3JlbW90ZUlkZW50
aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2Fn
ZSksIG1fcmVtb3RlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTcxLDEw
ICsxNzIsOSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgpCiAKICAgICByZWdpc3Rl
ckxvY2FsQWN0aXZpdHkoKTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZpZXIpOworICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZpZXIpOwogCiAgICAgLy8gV2Ug
Y2FuJ3QgcmVjZWl2ZSBhbnkgbWVzc2FnZXMgb3IgZ2VuZXJhdGUgYW55IGV2ZW50cyBhZnRlciB0
aGlzLCBzbyByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGxpc3Qgb2YgYWN0aXZlIHBvcnRzLgot
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+ZGVzdHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOwogICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoKnRoaXMpOwogICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lEZXN0cnVjdGlvbk9ic2VydmVyKCp0
aGlzKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpjbG9zZSgpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAKLSAgICBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnRDbG9zZWQobV9pZGVudGlmaWVyKTsK
KyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkubWVzc2FnZVBvcnRDbG9zZWQobV9pZGVudGlmaWVyKTsKICAgICByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpOwogfQogCkBAIC0yNDYsNTAgKzI0NiwzNCBAQCB2b2lkIE1l
c3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVT
dXNwZW5kZWQoKSB8fCAhaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCi0gICAgICAgIHdvcmtlclRocmVhZCA9
ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCku
dGhyZWFkKCk7Ci0KLSAgICBhdXRvIG1lc3NhZ2VzVGFrZW5IYW5kbGVyID0gW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhy
ZWFkKV0oVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkNhbGxiYWNrKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgYXV0byBpbm5lckhhbmRsZXIgPSBbdGhpcywgd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oYXV0byYmIG1lc3NhZ2VzKSB7Ci0gICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
TE9HKE1lc3NhZ2VQb3J0cywgIk1lc3NhZ2VQb3J0ICVzICglcCkgZGlzcGF0Y2hpbmcgJXp1IG1l
c3NhZ2VzIiwgbV9pZGVudGlmaWVyLmxvZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIG1l
c3NhZ2VzLnNpemUoKSk7CisgICAgYXV0byBtZXNzYWdlc1Rha2VuSGFuZGxlciA9IFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIG11
dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlRXhpdCA9IG1ha2VTY29wZUV4aXQoWyZjb21wbGV0
aW9uQ2FsbGJhY2tdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygpOworICAgICAg
ICB9KTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBMT0coTWVzc2FnZVBvcnRzLCAiTWVzc2FnZVBvcnQgJXMgKCVwKSBk
aXNwYXRjaGluZyAlenUgbWVzc2FnZXMiLCBtX2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgdGhpcywgbWVzc2FnZXMuc2l6ZSgpKTsKIAotICAgICAgICAgICAgaWYgKCFtZXNz
YWdlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7
CisgICAgICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgICAgIGlmICghbWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKLSAgICAgICAgICAgIGJvb2wgY29udGV4
dElzV29ya2VyID0gaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2FnZXMpIHsKLSAgICAg
ICAgICAgICAgICAvLyBjbG9zZSgpIGluIFdvcmtlciBvbm1lc3NhZ2UgaGFuZGxlciBzaG91bGQg
cHJldmVudCBuZXh0IG1lc3NhZ2UgZnJvbSBkaXNwYXRjaGluZy4KLSAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpOwotICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07CisgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIAotICAgICAgICBpZiAoIXdvcmtlclRo
cmVhZCkgewotICAgICAgICAgICAgaW5uZXJIYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygpOwotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBib29sIGNvbnRleHRJc1dvcmtlciA9IGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2Fn
ZXMpIHsKKyAgICAgICAgICAgIC8vIGNsb3NlKCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVy
IHNob3VsZCBwcmV2ZW50IG5leHQgbWVzc2FnZSBmcm9tIGRpc3BhdGNoaW5nLgorICAgICAgICAg
ICAgaWYgKGNvbnRleHRJc1dvcmtlciAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuaXNDbG9zaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBv
cnRzKSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdU
Rk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwogICAgICAg
ICB9Ci0gICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbaW5u
ZXJIYW5kbGVyID0gV1RGTW92ZShpbm5lckhhbmRsZXIpLCBtZXNzYWdlcyA9IFdURk1vdmUobWVz
c2FnZXMpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayld
KGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlubmVySGFuZGxlcihXVEZNb3ZlKG1lc3Nh
Z2VzKSk7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKICAgICB9OwogCi0gICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZN
b3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnVwZGF0ZUFjdGl2aXR5KE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rpdml0eSkKQEAgLTMyOCwxOSArMzEyLDE5IEBAIGJv
b2wgTWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAgICAgICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAg
ICAgICB3b3JrZXJUaHJlYWQgPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpOwogCi0gICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShtX3JlbW90
ZUlkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKGNvbnN0X2Nhc3Q8TWVzc2FnZVBv
cnQqPih0aGlzKSksIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsK
LQotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmICgh
d29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAg
ICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZpdHkoaGFzQWN0aXZpdHkpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcmVtb3RlSWRlbnRpZmllciA9IG1fcmVtb3RlSWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cihjb25zdF9jYXN0PE1lc3NhZ2VQb3J0Kj4odGhpcykpLCB3b3JrZXJUaHJlYWQgPSBX
VEZNb3ZlKHdvcmtlclRocmVhZCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHko
cmVtb3RlSWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtlclRo
cmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgaWYgKCF3b3JrZXJUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0
ZUFjdGl2aXR5KGhhc0FjdGl2aXR5KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBoYXNBY3Rpdml0eV0o
YXV0byYpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2aXR5KGhhc0FjdGl2aXR5KTsKLSAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICAgICAgICAg
IHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgaGFzQWN0aXZpdHldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PnVwZGF0ZUFjdGl2aXR5KGhhc0FjdGl2aXR5KTsKKyAgICAgICAgICAgICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAg
ICAgICAgbV9pc0Fza2luZ1JlbW90ZUFib3V0R0MgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcApp
bmRleCBhNWI2MGQ5OGJiNGEwMGU4YTgyN2U3MWQzZDRmNDlhYThhNGRlNDQ5Li43YjE0YjM3YjU4
NWNlMWNmZjI3OGM4ZjAzYjRjOTZiZGNjMTdmNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgYm9vbCBNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQg
TWVzc2FnZVBvcnRDaGFubmVsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
TWVzc2FnZVBvcnRDaGFubmVsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYgcG9yCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVs
OjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHJlbW90ZVBvcnQsIEZ1bmN0aW9uPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1Jl
bW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVBv
cnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChyZW1vdGVQb3J0ID09IG1fcG9ydHNbMF0gfHwgcmVtb3RlUG9ydCA9PSBtX3Bv
cnRzWzFdKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBvdXRlckNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiB7IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkp
IG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4gb3V0ZXJDYWxsYmFjayA9IFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIG11dGFibGUg
ewogICAgICAgICBpZiAoaGFzQWN0aXZpdHkgPT0gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
Okhhc0FjdGl2aXR5OjpZZXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGhhc0FjdGl2aXR5KTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJgogICAgICAgICAgICAgaGFzQWN0aXZpdHkgPSBNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHk6OlllczsKIAogICAgICAgICBjYWxsYmFjayhoYXNBY3Rpdml0eSk7
Ci0gICAgfSB9OworICAgIH07CiAKICAgICBtX3JlZ2lzdHJ5LnByb3ZpZGVyKCkuY2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocmVtb3RlUG9ydCwgKm1fcHJvY2Vzc2VzW2ldLCBXVEZN
b3ZlKG91dGVyQ2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IGNjMjk5NGQyZjkyZDkwZjdhMmFl
ZTJjM2U5YWZlNWU4ZmFjMTc3OTUuLmE4ODI2YjhjMDBjMDBiN2E4NzZhZDM4YWZhZTYxYWU3OGU4
YWNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2Fn
ZVBvcnRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWwuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9z
ZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CiAgICAgYm9vbCBwb3N0TWVzc2Fn
ZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcmVtb3RlVGFyZ2V0KTsKIAotICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7Ci0gICAgdm9p
ZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+
JiYgY2FsbGJhY2spOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7CisgICAgdm9pZCBj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rp
dml0eSk+JiYgY2FsbGJhY2spOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlNZXNz
YWdlc1BlbmRpbmdPckluRmxpZ2h0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKaW5kZXggMGE1Y2QxNzczZTkzMWIwNDlmZjQ4ZDcxYjk3ZWFkOWI2NjYzNWM5OS4uMTJhYTlm
MmNmYmYxMmQzZTA4OWE1YmExYjA4NzY2NDhjMWYxNjU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaCIKKyNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM1LDYgKzM3LDcgQEAgc3RhdGljIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyKiBnbG9iYWxQcm92aWRlcjsKIAogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIm
IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIGlmICghZ2xvYmFsUHJvdmlk
ZXIpCkBAIC01MSw0ICs1NCwxMiBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpz
ZXRTaGFyZWRQcm92aWRlcihNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgcAogICAgIGdsb2Jh
bFByb3ZpZGVyID0gJnByb3ZpZGVyOwogfQogCitNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYg
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpOworCisgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggOGEzYWJhMjgyMTA0NmE5NjRjMGY0
NWUzZWI3NDNhYzM4ZDZjOTk2Zi4uZGZmYWI2NDkyYjZlZWMyMzYxY2U0ZWM1OWFhMjI5ZTkwMDVk
N2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMjYsMTYgKzI2LDE4IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogCiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ciB7CiBwdWJsaWM6CisgICAgc3RhdGljIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBmcm9t
Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRTaGFyZWRQcm92aWRlcihNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYpOwogCkBA
IC00Nyw5ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZVBvcnREaXNl
bnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGxvY2FsKSA9IDA7CiAgICAgCi0gICAgLy8gRklYTUU6IElkZWFsbHkgdGhlIGNhbGxiYWNrIHdv
dWxkIGJlIGEgQ29tcGxldGlvbkhhbmRsZXIgYnV0IGl0IGlzIGFsd2F5cyBjYWxsZWQgb24gdGhl
IGNhbGxlcidzCi0gICAgLy8gdGhyZWFkIGF0IHRoZSBtb21lbnQuCi0gICAgdmlydHVhbCB2b2lk
IHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVu
Y3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQp
ID0gMDsKIApAQCAtNTcsOSArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAg
Tm8sCiAgICAgfTsKLSAgICAvLyBGSVhNRTogSWRlYWxseSB0aGUgY2FsbGJhY2sgd291bGQgYmUg
YSBDb21wbGV0aW9uSGFuZGxlciBidXQgaXQgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgY2FsbGVy
J3MKLSAgICAvLyB0aHJlYWQgYXQgdGhlIG1vbWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tS
ZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2
aXR5KT4mJiBjYWxsYmFjaykgPSAwOwogCiAgICAgLy8gT3BlcmF0aW9ucyB0aGF0IHRoZSBjb29y
ZGluYXRpbmcgcHJvY2VzcyBwZXJmb3JtcyAoZS5nLiB0aGUgVUlQcm9jZXNzKQogICAgIHZpcnR1
YWwgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNBY3Rpdml0eSk+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcApp
bmRleCAwYjA3YzI3NTNhOTljZTAyMDZkNDFjY2IwZWE0OWVkMDQxNmYxNGE2Li4xOGRkMjE3YTM0
ZDNmNDgyMGNjYTVjMDk1NTNiODFlYTIzYWFiN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlckltcGwuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsLmgiCiAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtODcsMTAgKzg2LDEwIEBAIHZvaWQgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXJJbXBsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgb3V0ZXJDYWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXJJbXBsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgb3V0ZXJDYWxsYmFj
aykKIHsKICAgICAvLyBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2Ygb3V0ZXJDYWxsYmFjayB0
byBnZXQgaXRzZWxmIHRvIHRoZSBhcHByb3ByaWF0ZSB0aHJlYWQgKGUuZy4gV2ViV29ya2VyIHRo
cmVhZCkKLSAgICBhdXRvIGNhbGxiYWNrID0gW291dGVyQ2FsbGJhY2sgPSBXVEZNb3ZlKG91dGVy
Q2FsbGJhY2spXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBtZXNzYWdlRGVsaXZlcnlDYWxsYmFjaykgeworICAgIGF1dG8gY2Fs
bGJhY2sgPSBbb3V0ZXJDYWxsYmFjayA9IFdURk1vdmUob3V0ZXJDYWxsYmFjayldKFZlY3RvcjxN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIG1l
c3NhZ2VEZWxpdmVyeUNhbGxiYWNrKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgb3V0ZXJDYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2VzKSwgV1RGTW92
ZShtZXNzYWdlRGVsaXZlcnlDYWxsYmFjaykpOwogICAgIH07CkBAIC0xMDAsNyArOTksNyBAQCB2
b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChjb25zdCBNZXNzYWdlUG9ydElkZQogICAgIH0pOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVySW1wbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkp
PiYmIG91dGVyQ2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6
Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIG91dGVy
Q2FsbGJhY2spCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZp
dHkpPiB7IFtvdXRlckNhbGxiYWNrID0gV1RGTW92ZShvdXRlckNhbGxiYWNrKV0oSGFzQWN0aXZp
dHkgaGFzQWN0aXZpdHkpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpAQCAtMTE5LDUgKzExOCw0IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBs
OjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzCiAgICAgY2FsbGJh
Y2soTWVzc2FnZVBvcnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUoaWRl
bnRpZmllcikgPyBIYXNBY3Rpdml0eTo6WWVzIDogSGFzQWN0aXZpdHk6Ok5vKTsKIH0KIAotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaAppbmRl
eCBkMzU1NGUxYWExZGY0NTdiMWI4NWQyZmI4MmM3NTY5Zjk4OWQ3YjZiLi4wMTVmYWU4NWVjMjAy
YTg5ZDJlYzFjYjdjZTUwNThmM2FmY2JkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJ
bXBsLmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lc3NhZ2VQb3J0RGlz
ZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwogICAg
IHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2Nh
bCkgZmluYWw7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5h
bDsKLSAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0
Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1
bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0
aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKIAogICAgIHZv
aWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgUHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0
aXZpdHkpPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAppbmRleCAxY2Iz
NTU0NmUzM2ZjNjYxMGM0NmEyZDBkOWQyODM2ODg5NDU3NmNlLi5lMGU2MGYyZTk3MDdjMzJmMGM4
OTc1ZGEzZGI1ZmVkZmQ3Nzc5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcApAQCAt
MTQxLDcgKzE0MSw3IEBAIGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OmRpZFBvc3RN
ZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmCiAgICAgcmV0dXJuIGNoYW5u
ZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgcmVtb3RlVGFyZ2V0KTsK
IH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6dGFrZUFsbE1lc3NhZ2VzRm9y
UG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNh
bGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6dGFrZUFsbE1lc3NhZ2Vz
Rm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lk
KCk+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAg
LTE1Nyw3ICsxNTcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojp0YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZgogICAgIGNoYW5uZWwtPnRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQocG9ydCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5OjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rpb248dm9pZChN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQordm9p
ZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHko
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5LmgKaW5kZXggNTMxYWE5NTg0ODQzZGE3NTE1NzYxMWIxM2I3NGU0MTBmZWI2NzNhNS4uNmJj
YTI4MmVkY2E5YTMwMDcyOTI3NWI5NjQ5YTRjNTNhNGFkZjFjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWREaXNlbnRhbmdsZU1lc3NhZ2VQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
bG9jYWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2xvc2VNZXNzYWdlUG9ydChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rp
b248dm9pZCgpPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwg
RnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBv
cnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFj
ayk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBNZXNzYWdlUG9ydENoYW5uZWwqIGV4aXN0aW5nQ2hh
bm5lbENvbnRhaW5pbmdQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMGY3NGI4NzVj
NThlOTYxNDUxMzg3NjRmNzQ5YjMxNTU0ZDlhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgorCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoV29y
a2VyR2xvYmFsU2NvcGUmIHNjb3BlKQorICAgIDogbV9zY29wZShzY29wZSkKK3sKK30KKworV29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6On5Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpCit7CisgICAgd2hpbGUgKCFtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byBmaXJzdCA9IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tz
LmJlZ2luKCk7CisgICAgICAgIGZpcnN0LT52YWx1ZSh7IH0sIFtdIHsgfSk7CisgICAgICAgIG1f
dGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLnJlbW92ZShmaXJzdCk7CisgICAgfQorICAgIHdoaWxl
ICghbV9hY3Rpdml0eUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBmaXJzdCA9
IG1fYWN0aXZpdHlDYWxsYmFja3MuYmVnaW4oKTsKKyAgICAgICAgZmlyc3QtPnZhbHVlKEhhc0Fj
dGl2aXR5OjpObyk7CisgICAgICAgIG1fYWN0aXZpdHlDYWxsYmFja3MucmVtb3ZlKGZpcnN0KTsK
KyAgICB9Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0
ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2Fs
LCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKK3sKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtsb2NhbCwgcmVtb3RlXSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5jcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwobG9jYWwsIHJlbW90
ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKQor
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvY2FsLCByZW1vdGVdIHsKKyAgICAgICAgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlz
UHJvY2Vzc1RvUmVtb3RlKGxvY2FsLCByZW1vdGUpOworICAgIH0pOworfQorCit2b2lkIFdvcmtl
ck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQo
W2xvY2FsXSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChsb2NhbCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9j
YWxdIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1l
c3NhZ2VQb3J0Q2xvc2VkKGxvY2FsKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFy
Z2V0KQoreworICAgIC8vIEZJWE1FOiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtaWdodCBub3Qg
YmUgc2FmZWx5IGhvcHBhYmxlIHRvIGFub3RoZXIgdGhyZWFkLCBhbHRob3VnaCB0aGlzIGlzIGRv
bmUgaW4gZXhpc3RpbmcgY29kZS4KKyAgICAvLyBNYXliZSB3ZSBzaG91bGQgdXNlIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0IGFuZCB1cGRhdGUgcG9zdE1lc3NhZ2VUb1JlbW90ZSB0byB1c2UgYSBj
b25zdCByZWYuCisgICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHJlbW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdl
KSwgcmVtb3RlVGFyZ2V0KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQor
eworICAgIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVu
dGlmaWVyOworICAgIG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRp
ZmllciwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoaWRlbnRpZmllciwg
W3RoaXMsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVu
dGlmaWVyXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIs
IG1lc3NhZ2VzID0gV1RGTW92ZShtZXNzYWdlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQodGhpcyA9PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5t
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpKTsKKyAgICAgICAgICAgICAgICBtX3Rha2VBbGxN
ZXNzYWdlc0NhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoV1RGTW92ZShtZXNzYWdl
cyksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
dm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOworICAg
IG1fYWN0aXZpdHlDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFkID0gbWFr
ZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgY2FsbGJhY2tJZGVudGlmaWVyLCByZW1vdGVUYXJnZXRd
KCkgbXV0YWJsZSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVUYXJnZXQsIFt0aGlzLCB3b3Jr
ZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIGNhbGxiYWNrSWRlbnRpZmllcl0oYXV0
byBoYXNBY3Rpdml0eSkgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIGhhc0FjdGl2aXR5XShhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0gJmRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIo
KSk7CisgICAgICAgICAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRl
bnRpZmllcikoaGFzQWN0aXZpdHkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4m
JiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFz
dENhbGxiYWNrSWRlbnRpZmllcjsKKyAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLmFkZChjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNr
SWRlbnRpZmllciwgaWRlbnRpZmllciwgcHJvY2Vzc0lkZW50aWZpZXJdKCkgbXV0YWJsZSB7Cisg
ICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShpZGVudGlmaWVyLCBwcm9jZXNzSWRlbnRpZmllciwgW3Ro
aXMsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlm
aWVyXShhdXRvIGhhc0FjdGl2aXR5KSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZp
dHldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpcyA9
PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpKTsKKyAgICAgICAgICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2Fs
bGJhY2tJZGVudGlmaWVyKShoYXNBY3Rpdml0eSk7CisgICAgICAgICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NmNiNDNiMGZjMDZiMDliMzhkNjlkYzc3NzI4MTZiNjA3ZDgzZTQyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7CisKK2NsYXNzIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
IGZpbmFsIDogcHVibGljIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcihXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIH5Xb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcigpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlTmV3TWVz
c2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAgICB2b2lkIGVudGFuZ2xl
TG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAg
ICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVt
b3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQo
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZp
bmFsOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0
aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKworICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgUHJvY2Vzc0lkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKKwor
ICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOworCisgICAgdWludDY0X3QgbV9sYXN0Q2Fs
bGJhY2tJZGVudGlmaWVyIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+PiBtX2FjdGl2aXR5Q2Fs
bGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1ZTE1NWI3ODAyMDUyNTg3N2Q0ZDcw
N2M1YTliOGJmZWZlNGQzNzJjLi5hOTcwYTdhZGE2NzVhMTZjZjE2ODcwZWMzZWIzYTZjMzRjZWRj
MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNDYzLDYgKzQ2MywxMyBAQCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBXb3JrZXJH
bG9iYWxTY29wZTo6Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiAgICAgcmV0dXJuICptX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBXb3Jr
ZXJHbG9iYWxTY29wZTo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAgIGlmICgh
bV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcikKKyAgICAgICAgbV9tZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciA9IG1ha2VVbmlxdWU8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+
KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7Cit9CisK
IHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZUltYWdlQml0bWFwKEltYWdlQml0bWFwOjpT
b3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFw
OjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZSgq
dGhpcywgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHByb21pc2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA5Yjc3
ZTJjNjEzYWFiMTlhOWVhNTdmNzE1Yzg1YzE0Y2JiYzhkNTE2Li4xYjcxYzExYWNjNGE5MDBkOWJl
MjFhNjUxNjYxOTMzNTIzNGM5ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJF
dmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC03Myw2ICs3
NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
biYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyJiBtZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOwogCiAgICAgV29ya2VyU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KICAgICB2b2lkIGNs
ZWFyU2NyaXB0KCkgeyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KQEAgLTIxMCw3ICsyMTIsNyBAQCBw
cml2YXRlOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKLQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4gbV9t
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWRl
bnRpZmllciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNGVh
Y2ZhMDYyZjBkMDkyYjA5YmExYjMxOTZhN2ZjZWY4ZjM2MGVkYS4uNzYxNDFmNzQwYzBlNjVhMjZm
MDAxY2JlMDNjNzZmYTc4NGNmODc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya01ETlNSZWdpc3Rlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTUzLDYgKzU0
LDcgQEAKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKQEAgLTc1LDE3ICs3NywxOCBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorUmVmPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3
b3JrUHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7
CiB9CiAKLU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNz
KG5ldHdvcmtQcm9jZXNzKQogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICwgbV9tZG5zUmVnaXN0
ZXIoKnRoaXMpCiAjZW5kaWYKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIod2ViUHJvY2Vz
c0lkZW50aWZpZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC05MTAsNCArOTEzLDg0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYK
IAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlTmV3TWVzc2FnZVBv
cnRDaGFubmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDIpCit7CisgICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMu
YWRkKHBvcnQxKTsKKyAgICBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDIpOworICAg
IG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDcmVhdGVN
ZXNzYWdlUG9ydENoYW5uZWwocG9ydDEsIHBvcnQyKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUo
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiByZW1vdGUpCit7CisgICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMuYWRkKGxvY2Fs
KTsKKyAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlk
RW50YW5nbGVMb2NhbFRvUmVtb3RlKGxvY2FsLCByZW1vdGUsIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXIpOworCisgICAgYXV0byogY2hhbm5lbCA9IG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkoKS5leGlzdGluZ0NoYW5uZWxDb250YWluaW5nUG9ydChsb2NhbCk7Cisg
ICAgaWYgKGNoYW5uZWwgJiYgY2hhbm5lbC0+aGFzQW55TWVzc2FnZXNQZW5kaW5nT3JJbkZsaWdo
dCgpKQorICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpNZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQobG9jYWwpLCAwKTsKK30KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQo
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQoreworICAgIGF1dG8gcmVzdWx0ID0g
bV9wcm9jZXNzRW50YW5nbGVkUG9ydHMucmVtb3ZlKHBvcnQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworCisgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5u
ZWxSZWdpc3RyeSgpLmRpZERpc2VudGFuZ2xlTWVzc2FnZVBvcnQocG9ydCk7Cit9CisKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCkKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKK30KKwor
dWludDY0X3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om5leHRNZXNzYWdlQmF0Y2hJ
ZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBkZWxpdmVyeUNhbGxiYWNrKQoreworICAgIHN0
YXRpYyB1aW50NjRfdCBjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllcjsKKyAgICBBU1NFUlQo
IW1fbWVzc2FnZUJhdGNoRGVsaXZlcnlDb21wbGV0aW9uSGFuZGxlcnMuY29udGFpbnMoY3VycmVu
dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIgKyAxKSk7CisgICAgbV9tZXNzYWdlQmF0Y2hEZWxpdmVy
eUNvbXBsZXRpb25IYW5kbGVycy5hZGQoKytjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciwg
V1RGTW92ZShkZWxpdmVyeUNhbGxiYWNrKSk7CisgICAgcmV0dXJuIGN1cnJlbnRNZXNzYWdlQmF0
Y2hJZGVudGlmaWVyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0
YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IHVpbnQ2NF90KT4mJiBjYWxsYmFjaykKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQ
b3J0Q2hhbm5lbFJlZ2lzdHJ5KCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvJiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBkZWxpdmVyeUNhbGxiYWNr
KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlcyksIG5leHRNZXNz
YWdlQmF0Y2hJZGVudGlmaWVyKFdURk1vdmUoZGVsaXZlcnlDYWxsYmFjaykpKTsKKyAgICB9KTsK
K30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRGVsaXZlck1lc3Nh
Z2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGNhbGxiYWNrID0gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy50
YWtlKG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOworICAgIEFTU0VSVChjYWxsYmFjayk7CisgICAg
Y2FsbGJhY2soKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cG9z
dE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCkKK3sKKyAgICBpZiAobmV0d29ya1Byb2Nlc3Mo
KS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoV1RG
TW92ZShtZXNzYWdlKSwgcG9ydCkpIHsKKyAgICAgICAgLy8gTG9vayB1cCB0aGUgcHJvY2VzcyBm
b3IgdGhhdCBwb3J0CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBuZXR3b3JrUHJvY2VzcygpLm1l
c3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZXhpc3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQo
cG9ydCk7CisgICAgICAgIEFTU0VSVChjaGFubmVsKTsKKyAgICAgICAgYXV0byBwcm9jZXNzSWRl
bnRpZmllciA9IGNoYW5uZWwtPnByb2Nlc3NGb3JQb3J0KHBvcnQpOworICAgICAgICBpZiAocHJv
Y2Vzc0lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbmV0d29ya1Byb2Nlc3MoKS53ZWJQcm9jZXNzQ29ubmVjdGlvbigqcHJvY2Vzc0lk
ZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok1lc3NhZ2Vz
QXZhaWxhYmxlRm9yUG9ydChwb3J0KSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShwb3J0
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJs
ZSB7CisgICAgICAgIGNhbGxiYWNrKGhhc0FjdGl2aXR5ID09IE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCit7Cisg
ICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSB7IHBvcnQgfSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgaXNMb2NhbGx5UmVhY2hhYmxlKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soaXNMb2NhbGx5UmVhY2hhYmxlID8gTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpZZXMgOiBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6SGFzQWN0aXZpdHk6Ok5vKTsKKyAgICB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMDU1OGQ3MWNjMmZlOTFkNDZh
NTM3YWU1MjNjNzk5Y2MwNjVjNTg4My4uMGJiNzYyZmE2NjM0MmM3ODA1M2VmZjkxOWY1YjY2ZWI1
NzBlMjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVzc2FnZVBvcnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KQEAgLTgxLDcgKzgzLDcg
QEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogCi0gICAg
c3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKICAg
ICB2aXJ0dWFsIH5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogCiAgICAgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CkBA
IC0xNDQsOCArMTQ2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlU29ja2V0Q2hhbm5l
bCh1aW50NjRfdCBpZGVudGlmaWVyKTsKIAorICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9jZXNzSWRlbnRp
ZmllcjsgfQorCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwor
CiBwcml2YXRlOgotICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQcmVj
b25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAKQEAgLTIwNiw2ICsyMTIsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgY3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpOwor
ICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpOworICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmds
ZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgdm9pZCBtZXNz
YWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKyAg
ICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdlUG9ydE1l
c3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOworCiAjaWYgVVNFKExJQldF
QlJUQykKICAgICBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyKCk7CiAjZW5kaWYKQEAg
LTIzMyw2ICsyNDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RzKCk7CiAKKyAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRlbnRpZmllcihGdW5j
dGlvbjx2b2lkKCk+JiYpOworCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0gZGVmYXVs
dDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAgLTMxMSw2ICszMjgsMTAgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+IG1fcGF5bWVudENvb3JkaW5hdG9yOwog
I2VuZGlmCisgICAgY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsKKworICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
PiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlv
bjx2b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA2ZWUyMmQzMzQwZjA1ZGYzNTJiMjdkMDU5MmM1NzdkNGUzNTA1OWQ1
Li44MjIwYmVkYmUyNmQyOWYxNGVkMzhiYjQ1OWFmNDU3ZGY4ODQxMGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTg2LDQgKzg2LDEzIEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAjZW5k
aWYKKworICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyIHBvcnQyKQorICAgIEVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3Rl
KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgbG9jYWwsIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcmVtb3RlKQorICAgIE1lc3NhZ2VQb3J0RGlzZW50
YW5nbGVkKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgbG9jYWwpCisgICAg
TWVzc2FnZVBvcnRDbG9zZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBs
b2NhbCkKKyAgICBUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXIgcG9ydCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4gbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpIEFzeW5j
CisgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMgbWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBy
ZW1vdGUpCisgICAgQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoYm9vbCBoYXNBY3Rpdml0eSkgQXN5bmMKKyAg
ICBEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVu
dGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhmNWZkNjViZGVmNzI2NTE4NjlmYzA0OWM1YmU5NzVmYzcyNjA5N2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Ok5ldHdv
cmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9yZWdp
c3RyeSgqdGhpcykKK3sKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQoreworICAgIC8vIFNob3VsZCBuZXZl
ciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpl
bnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQoreworICAgIC8vIFNob3Vs
ZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
KQoreworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJv
dmlkZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImKQoreworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJ
IHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKQor
eworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlk
ZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya01lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxk
IG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKQoreworICAgIC8vIFNo
b3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy53ZWJQcm9jZXNzQ29u
bmVjdGlvbihwcm9jZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKEhhc0FjdGl2aXR5OjpObyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5jaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0
eShwb3J0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNhNDc4
YmEzODVmNjBiYmI5MjM3NTZlY2U5OWVjZmNhNTdmYWEyMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7CisKK2NsYXNzIE5ldHdvcmtNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyKE5ldHdvcmtQcm9jZXNzJik7CisgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
UmVnaXN0cnkmIHJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9yZWdpc3RyeTsgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcmVtb3RlKSBmaW5hbDsKKyAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJv
Y2Vzc1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWws
IGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAg
ICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7CisgICAgdm9p
ZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwg
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFs
OworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0Fj
dGl2aXR5KT4mJikgZmluYWw7CisKKyAgICBOZXR3b3JrUHJvY2VzcyYgbV9uZXR3b3JrUHJvY2Vz
czsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSBtX3JlZ2lzdHJ5Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc0YmM0NmZlZWZlOWRkZjY3MzFlYjkxMGY1
YzViYzExNGFjMTgzYjUuLjNjOTQ5OWFhNmFiN2RhNTgyYzc3MzIwMzg3NGY4ZTg4YjYyZmUxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xMzksNiArMTM5LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJv
b2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMo
aXNIb2xkaW5nTG9ja2VkRmlsZXMpLCAwKTsgfSkKICNlbmRpZgorICAgICwgbV9tZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcigqdGhpcykKIHsKICAgICBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llczo6aW5pdGlhbGl6ZSgpOwogCkBAIC0xNjAsNyArMTYxLDcgQEAgTmV0d29ya1Byb2Nl
c3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWUKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlz
dGVuZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGlzT25MaW5lKSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZvciAo
YXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiB3ZWFrVGhpcy0+bV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMpCisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiB3ZWFrVGhp
cy0+bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgICAgICB3ZWJQcm9j
ZXNzQ29ubmVjdGlvbi0+c2V0T25MaW5lU3RhdGUoaXNPbkxpbmUpOwogICAgIH0pOwogCkBAIC0x
ODcsMTAgKzE4OCw4IEBAIERvd25sb2FkTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2Fk
TWFuYWdlcigpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQog
ewotICAgIGF1dG8gY291bnQgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0gKGNvbnN0IGF1dG8mIGMpIHsKLSAgICAgICAgcmV0dXJuIGMucHRyKCkgPT0gJmNv
bm5lY3Rpb247Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjb3VudCwgY291bnQgPT0gMSk7
CisgICAgQVNTRVJUKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnJl
bW92ZShjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOwogfQogCiBib29sIE5ldHdv
cmtQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQpAQCAtMzg0LDE2ICszODMsMTggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplQ29ubmVjdGlvbihjb25uZWN0
aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQVNTRVJU
KCFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIg
c29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7
CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlKCp0aGlzLCBzb2NrZXRQYWlyLnNlcnZlcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOworICAgIGF1dG8gbmV3Q29ubmVjdGlv
biA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZp
ZXIsIHNvY2tldFBhaXIuc2VydmVyKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gbmV3Q29ubmVj
dGlvbi5nZXQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwg
V1RGTW92ZShuZXdDb25uZWN0aW9uKSk7CiAKLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29j
a2V0KHNvY2tldFBhaXIuY2xpZW50KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkF0dGFjaG1lbnQgeyBzb2NrZXRQYWlyLmNsaWVudCB9KTsKICNlbGlmIE9TKERBUldJ
TikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAgIG1hY2hfcG9ydF90IGxp
c3RlbmluZ1BvcnQgPSBNQUNIX1BPUlRfTlVMTDsKQEAgLTQwOCwxMSArNDA5LDExIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNv
bm5lY3Rpb24uCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZSgqdGhpcywgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25u
ZWN0aW9uKSk7CisgICAgYXV0byBuZXdDb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gbmV3Q29ubmVj
dGlvbi5nZXQoKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hZGQoaWRlbnRpZmllciwg
V1RGTW92ZShuZXdDb25uZWN0aW9uKSk7CiAKLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9y
dChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlk
Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXR0YWNobWVudCB7IGxpc3RlbmluZ1BvcnQsIE1BQ0hf
TVNHX1RZUEVfTUFLRV9TRU5EIH0pOwogI2VsaWYgT1MoV0lORE9XUykKICAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAg
ICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMo
c2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcikpIHsKQEAgLTQyMCwyMyArNDIxLDIz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCi0g
ICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZSgqdGhpcywgc2VydmVySWRlbnRpZmllcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMu
YXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOworICAgIGF1dG8gbmV3Q29ubmVjdGlvbiA9IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIHNl
cnZlcklkZW50aWZpZXIpOworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBuZXdDb25uZWN0aW9uLmdl
dCgpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KG5ld0Nvbm5lY3Rpb24pKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoY2xp
ZW50SWRlbnRpZmllcik7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpB
dHRhY2htZW50IHsgY2xpZW50SWRlbnRpZmllciB9KTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICNlbmRpZgogCiAgICAgaWYgKCFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+c2V0T25MaW5lU3Rh
dGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKKyAgICAgICAg
Y29ubmVjdGlvbi5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9u
KCkub25MaW5lKCkpOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcyAmJiAhbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkpOwogICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWlu
LCBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCktPmNvbm5lY3Rpb24oKSk7CisgICAgICAg
IGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
KTsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25z
LmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJl
ZigpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKIApAQCAtNDUwLDcgKzQ1MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvCiAgICAg
VU5VU0VEX1BBUkFNKHJlZ2lzdHJhYmxlRG9tYWluKTsKICNlbmRpZgogCi0gICAgbV9zdG9yYWdl
TWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbihtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCkt
PmNvbm5lY3Rpb24oKSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkQ29ubmVjdGlvbihj
b25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQpAQCAtMjA4Miw3ICsyMDgzLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZAogICAgIHBsYXRmb3JtUHJlcGFyZVRvU3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwogICAgIHBsYXRmb3JtU3luY0FsbENvb2tpZXMoW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zKQorICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAt
MjE1Niw3ICsyMTU3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNlbmRpZgog
CiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKCk7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0
aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTI2OTQs
NCArMjY5NSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3ND
bG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG1fc3RvcmFnZU1hbmFnZXJT
ZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKK05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUHJvY2Vz
c0lkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBh
ZjY3NDU2M2EwNzU2YzAyYzdhODVmMDM4ZjkyZTU3MGEzZDBkODFlLi43OWMzMGUxYjRiZWVjMzlk
M2QzMTlhNzU1ZjJiZWJjNjFkMGVjY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMzQ0LDcgKzM0NSwxMCBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgY29uc3QgT3B0aW9uU2V0PE5ldHdvcmtD
YWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
T3B0aW9uczsgfQotICAgIAorCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIHdl
YlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKSBjb25zdDsKKyAg
ICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSYgbWVzc2FnZVBvcnRDaGFubmVs
UmVnaXN0cnkoKSB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLnJlZ2lzdHJ5
KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gcGxhdGZvcm1DcmVhdGVE
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdDsKQEAgLTM4OCw3ICszOTIsNyBAQCBwcml2YXRl
OgogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29y
a1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Ms
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKIAogICAg
IHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwpAQCAtNDc3LDcgKzQ4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0
aWFsaXplU3RvcmFnZVF1b3RhKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CiAK
ICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCi0gICAgVmVjdG9yPFJlZjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFJlZjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCiAgICAgU3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsIHsgZmFsc2Ug
fTsKQEAgLTU2Nyw2ICs1NzEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgUEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbjsKIAog
ICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0aW9uczsK
KyAgICBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgbV9tZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggNGZjMTkyMGFkYWI3NWRkYmNhZTU1NTM1MTBiOWMxNmZiNDdhZmQwYi4uY2E2NGY1OTM3MWFm
MDE0NjEwMjE5YjBlOTVkNzg4M2UzZGJmMmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsy
NSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJ
bml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRl
cyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhib29sIGlzU2VydmljZVdvcmtlclBy
b2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQorICAg
IENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKSAtPiAoT3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogI2lmIFVTRShT
T1VQKQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBhZGM0YWFkOTg4MThmYTA2YWZj
NmJlODk2MTQ1ZDU2MzE1ODMyZGI3Li44NDZmZWRhNjFkOWE2YjIzYzYyYThkOTE4MzVjNTM4ZjMy
Y2Q5OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0xODMs
MTUgKzE4MywxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEM+IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlv
bkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwg
QyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9u
U2V0PFNlbmRPcHRpb24+ID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlv
bj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+Ci0gICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
IG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0
aW5hdGlvbklEID0geyB9KQorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdl
LCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25J
RCA9IHsgfSwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQogICAgIHsK
LSAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHk8VCwgQz4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOwog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIHZvaWQgYWRkQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYsIHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqCiBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKERlY29kZXIqKT4gdGFrZUFzeW5jUmVwbHlIYW5kbGVyKENvbm5lY3Rpb24mLCB1aW50NjRf
dCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+Ci12b2lkIENvbm5lY3Rpb246
OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVw
bHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQogewogICAgIENPTVBJTEVf
QVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIApAQCAtNDUyLDcgKzQ1
Miw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVy
SUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKLSAgICBzZW5k
TWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOworICAgIHNlbmRNZXNzYWdlKFdURk1vdmUo
ZW5jb2RlciksIHNlbmRPcHRpb25zKTsKICAgICBhZGRBc3luY1JlcGx5SGFuZGxlcigqdGhpcywg
bGlzdGVuZXJJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChEZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYg
IWRlY29kZXItPmlzSW52YWxpZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4MTM3ODgxYmI0
MWVlN2E5NzgzYmFkODY0NDU3MWRhMWY5MWZkNjJkLi43ODE0ZmFhZTNhMjYwYjM4M2ZkOTEwZDE4
MGFhODlkNmM0OTk0Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMxLDYgKzMxLDcgQEAgTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC0yNTUsNyArMjU2LDYgQEAgVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAogVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCi1VSVByb2Nl
c3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IGRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZk
ZTA5Zjk1Y2E3YmEuLjhjNDBjNTI1NDZmZmQwNGJhMTljYTg3MGVjZjI4NmQ5ZmIxZDQ4YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eU1hcC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2OGNkYWRiNzY4
OThjYTM5Nzg0Nzk4ZjIzOTk4N2QzMmRmZTM5OWU4Li44ZWU4M2UwMWMwMDY0ZWY5ZTNlOWEwZGM4
OTQ4MDgyMzU2ZGVkZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTc5LDcgKzc5LDYgQEAgc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKICAgICA6IEF1eGls
aWFyeVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3Jp
dHkoKSkKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX251bVBlbmRp
bmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSKQogICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgqdGhpcykKICNl
bmRpZgpAQCAtMTM1LDEzICsxMzQsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgbV9wZW5k
aW5nQ29ubmVjdGlvblJlcGxpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VXZWFrUHRyKHdl
YlByb2Nlc3NQcm94eSksIFdURk1vdmUocmVwbHkpKSk7Ci0KICAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6TGF1bmNoaW5nKSB7Ci0gICAgICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0
cysrOworICAgICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIobWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgV1RGTW92ZShyZXBseSkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHdl
YlByb2Nlc3NQcm94eSwgV1RGTW92ZShyZXBseSkpOworfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit7CiAgICAgYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzID0gZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW47CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTUxLDcgKzE1MiwyMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2NlcwogICAgIH0KICNlbmRpZgogCi0gICAgY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4pLCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlBy
b2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4gfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikg
bXV0YWJsZSB7CisgICAgICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIgfHwgIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICByZXBseSh7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykgfHwgT1MoV0lORE9XUykKKyAgICAg
ICAgcmVwbHkoKmNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyNlbGlmIE9TKERBUldJTikKKyAgICAg
ICAgTUVTU0FHRV9DSEVDSyhNQUNIX1BPUlRfVkFMSUQoY29ubmVjdGlvbklkZW50aWZpZXItPnBv
cnQoKSkpOworICAgICAgICByZXBseShJUEM6OkF0dGFjaG1lbnQgeyBjb25uZWN0aW9uSWRlbnRp
Zmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9KTsKKyNlbHNlCisgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKKyAgICB9LCAwLCBJUEM6OlNlbmRPcHRpb246OkRp
c3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91
bmQpCkBAIC0yOTgsMjMgKzMxMyw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nCiB7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLXsK
LSAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7Ci0KLSAg
ICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCi0gICAgYXV0byBy
ZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpLnNlY29uZDsKLQot
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKSB8fCBPUyhXSU5ET1dTKQotICAgIHJlcGx5KGNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbGlmIE9TKERBUldJTikKLSAgICBNRVNTQUdFX0NIRUNL
KE1BQ0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpKTsKLSAgICByZXBs
eShJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19U
WVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCi19
Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHk+JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CiAgICAgYXV0byogc3RvcmUgPSB3
ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChzZXNzaW9uSUQpOwpAQCAtMzk0LDEwICszOTIs
MTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHM7ICsraSkKLSAgICAgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZmFsc2UsIHsgfSksIDAp
OwotICAgIAotICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CisgICAgYXV0
byBwZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzKTsKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdDb25uZWN0aW9uUmVwbGllcyA6IHBlbmRp
bmdDb25uZWN0aW9uUmVwbGllcykgeworICAgICAgICBpZiAocGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzLmZpcnN0KQorICAgICAgICAgICAgb3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmZpcnN0LCBXVEZNb3ZlKHBlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5zZWNvbmQpKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9w
cm9jZXNzUG9vbC5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZi
MzAwMmNmNjYxYmYxOTEyYWEwODUxNDE3MmY2YjQ2ZjAxOTRlZWYuLmQ4OTdlMjBhOTM1Y2Y4MTk2
ZGVjMTY4M2Q0NTMwZmZjN2I3OTQ1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMTIsNyArMjEyLDYgQEAg
cHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKLSAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0
IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGRpZEZldGNo
V2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKICAg
ICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMjUw
LDYgKzI0OSw4IEBAIHByaXZhdGU6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAg
ICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCisgICAgdm9pZCBvcGVuTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYpOworCiAgICAgdm9pZCBw
cm9jZXNzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFJlZjxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIAogICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nl
c3NQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlZTJkODFhMmY3OTU0
ZTQwZTVjNGNkMDZmYjEyYzI0NDlkYmNmOWQuLjBjOGY3NjI3YWM3MmZhNGE3NzgyYWU1OTRiNDcw
YmFiNTNiODQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDggKzIx
LDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZWNlaXZlciB7Ci0gICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQotCiAgICAgRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxl
bmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjRjNjQ0YmUy
YWRjNzdlNTU3YmYwZTI0Yzg2Y2Q5N2I1YTA5ZWUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oIgotCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIq
IHByb3ZpZGVyID0gbmV3IFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7Ci0gICAgcmV0dXJu
ICpwcm92aWRlcjsKLX0KLQotVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6VUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcigpCi0gICAgOiBtX3JlZ2lzdHJ5KCp0aGlzKQotewotfQotCi1V
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp+VUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cigpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCi17Ci0gICAg
Ly8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjplbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQotewotICAg
IC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJikKLXsKLSAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNz
IHByb3ZpZGVyLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYpCi17Ci0gICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkg
cHJvY2VzcyBwcm92aWRlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBV
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKQotewotICAgIC8vIFNob3Vs
ZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImKQotewotICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4g
dGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChIYXNBY3Rp
dml0eSk+JiYpCi17Ci0gICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJv
Y2VzcyBwcm92aWRlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0
eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIFByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgaWYgKCFwcm9j
ZXNzKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEhhc0FjdGl2aXR5OjpObyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwcm9jZXNzLT5jaGVja1Byb2Nlc3NMb2NhbFBvcnRG
b3JBY3Rpdml0eShwb3J0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2YzI2OTYwNGEyOGNjNDU2MzVkNGIzNmJlMzVhZTY2YjMxMDY0OTI1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0
Q2hhbm5lbFJlZ2lzdHJ5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBVSU1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlciYgc2luZ2xldG9uKCk7Ci0gICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0
cnkmIHJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9yZWdpc3RyeTsgfQotCi1wcml2YXRlOgotICAgIFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKLSAgICB+VUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpIGZpbmFsOwotCi0gICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwotICAgIHZvaWQgZW50YW5n
bGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
JiByZW1vdGUpIGZpbmFsOwotICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAgdm9pZCBt
ZXNzYWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxv
Y2FsKSBmaW5hbDsKLSAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRh
cmdldCkgZmluYWw7Ci0gICAgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rpb248dm9p
ZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgY2hlY2tQcm9jZXNz
TG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFz
QWN0aXZpdHkpPiYmKSBmaW5hbDsKLQotICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJl
Z2lzdHJ5IG1fcmVnaXN0cnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYxYTFiZmE0ZDI0MzBmN2Y1OTM2
MDMzNDRlNGU5YTliNTA5NDExNmUuLjA4OWI4M2MwY2Y3Mzc2NzlmODdjOTdmOTEwZTQ1ODg1MjU0
ZjI1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODUs
NyArODUsNiBAQAogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRleHQuaCIKLSNpbmNsdWRlICJVSU1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJVbmRvT3JSZWRvLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDQ1OWE5ZDNhNGE4OTNkNDI5NGIxYWMzYmJhODUwYWI2MGUzYzM3ZDku
LmNmNTZhZmUxYTQ0OWYzNTYyMzQ2Y2YzYWIwZGU2YmM0NjcwNjRjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIyMDYsMTggKzIyMDYsNiBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAjZW5kaWYKIH0K
IAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyJiBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KQotewotICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGRlc3RpbmF0aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UsIHNvdXJjZU9yaWdpbikpOwot
fQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2Us
IFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCi17Ci0g
ICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoZGVzdGluYXRpb24s
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZSwgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKLX0KLSNl
bmRpZgotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2Vy
dGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCmluZGV4IGFmMTZjZWY4ZDI4ZTYzOWQ3MWI2M2MzNjNjMGY3ODJkYzI5ODhlMzIu
LmQ0MzUzMjU5NzdmMWE1OWJiZTNmMmM3YzgyOTBmNTViMmQxOTg3ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDcxLDExICs0NzEsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlKFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZSYmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0jZW5k
aWYKLQogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0
ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2b2lk
IHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRpZmll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVz
c2FnZXMuaW4KaW5kZXggZThiZTk2NTZiNTczYTBhZWRkZTY5OTJiMGM3NTM1ZmRhMGQ2NzhlOS4u
ZDNmN2VlOGM4NWRiMjQzOTFjMTE0ZGM1ZWVkOTQ1YmRkOWQwODQ2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KQEAgLTM5LDkg
KzM5LDQgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Bvb2wgewogCiAgICAgU2V0V2ViUHJvY2Vz
c0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgIENs
ZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lEKQotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBz
dHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCi0jZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDEwOGQxZTk0
MjMxYTRiNGY3ZWYzNzUxOGYzMjBhMGM3NmYxNGU0NzYuLjRiZGNjZWY1OGYzMzZmM2Q0MTAyMzNm
YTY1ODVlZmU3ODgxZTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0
YXRlLmgiCi0jaW5jbHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1
ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgpAQCAtMTkxLDkgKzE5MCw2IEBAIFdlYlBy
b2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiAgICAgd2hpbGUgKG1fbnVtYmVyT2ZUaW1l
c1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQtLSA+IDApCiAgICAgICAgIFdlYkNvcmU6OmVu
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CiAKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9s
b2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVycy52YWx1ZXMoKSkKLSAgICAgICAgY2Fs
bGJhY2soTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpObyk7Ci0KICNp
ZiBQTEFURk9STShNQUMpCiAgICAgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9u
KCkucmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSh0aGlzKTsKICNlbmRpZgpA
QCAtMzUwLDkgKzM0Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAg
ICBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXAuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgcG9y
dCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQotICAgICAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3RyeSgpLmRpZENsb3NlTWVzc2FnZVBvcnQocG9y
dCk7Ci0KICAgICBtX3Byb2Nlc3NQb29sLT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIApA
QCAtMTQxMiw5OCArMTQwNSw2IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCkKIH0KICNlbmRpZgogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cG9ydDIpCi17Ci0gICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMuYWRkKHBvcnQxKTsKLSAgICBt
X3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDIpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkQ3JlYXRlTWVzc2FnZVBvcnRD
aGFubmVsKHBvcnQxLCBwb3J0Mik7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbnRhbmds
ZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKLXsKLSAgICBt
X3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQobG9jYWwpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkRW50YW5nbGVMb2NhbFRvUmVt
b3RlKGxvY2FsLCByZW1vdGUsIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLQotICAgIGF1dG8q
IGNoYW5uZWwgPSBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdp
c3RyeSgpLmV4aXN0aW5nQ2hhbm5lbENvbnRhaW5pbmdQb3J0KGxvY2FsKTsKLSAgICBpZiAoY2hh
bm5lbCAmJiBjaGFubmVsLT5oYXNBbnlNZXNzYWdlc1BlbmRpbmdPckluRmxpZ2h0KCkpCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChs
b2NhbCksIDApOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVBvcnREaXNlbnRh
bmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQotewotICAgIGF1dG8gcmVz
dWx0ID0gbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMucmVtb3ZlKHBvcnQpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6c2luZ2xldG9uKCkucmVnaXN0cnkoKS5kaWREaXNlbnRhbmdsZU1lc3NhZ2VQb3J0KHBvcnQp
OwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQotewotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCB1aW50NjRfdCBtZXNzYWdlc0NhbGxiYWNrSWRl
bnRpZmllcikKLXsKLSAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5yZWdpc3RyeSgpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQocG9ydCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZXNDYWxsYmFja0lkZW50aWZpZXJdKFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgRnVuY3Rpb248dm9pZCgpPiYm
IGRlbGl2ZXJ5Q2FsbGJhY2spIHsKLQotICAgICAgICBzdGF0aWMgdWludDY0X3QgY3VycmVudE1l
c3NhZ2VCYXRjaElkZW50aWZpZXI7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZXNzYWdlQmF0
Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy5lbnN1cmUoKytjdXJyZW50TWVzc2FnZUJhdGNo
SWRlbnRpZmllciwgW2RlbGl2ZXJ5Q2FsbGJhY2sgPSBXVEZNb3ZlKGRlbGl2ZXJ5Q2FsbGJhY2sp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZGVsaXZlcnlDYWxsYmFj
ayk7Ci0gICAgICAgIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwotCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZFRha2VB
bGxNZXNzYWdlc0ZvclBvcnQoV1RGTW92ZShtZXNzYWdlcyksIG1lc3NhZ2VzQ2FsbGJhY2tJZGVu
dGlmaWVyLCBjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciksIDApOwotICAgIH0pOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWlu
dDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9t
ZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VCYXRjaElk
ZW50aWZpZXIpOwotICAgIEFTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2soKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCi17
Ci0gICAgaWYgKFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lz
dHJ5KCkuZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBwb3J0KSkgewot
ICAgICAgICAvLyBMb29rIHVwIHRoZSBwcm9jZXNzIGZvciB0aGF0IHBvcnQKLSAgICAgICAgYXV0
byogY2hhbm5lbCA9IFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJl
Z2lzdHJ5KCkuZXhpc3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQocG9ydCk7Ci0gICAgICAgIEFT
U0VSVChjaGFubmVsKTsKLSAgICAgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNoYW5uZWwt
PnByb2Nlc3NGb3JQb3J0KHBvcnQpOwotICAgICAgICBpZiAocHJvY2Vzc0lkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcigqcHJvY2Vzc0lkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChw
b3J0KSwgMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIgcG9ydCwgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQotewotICAgIFVJTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuY2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkocG9ydCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY2FsbGJhY2tJZGVudGlmaWVyXShNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHkgaGFzQWN0aXZpdHkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rp
dml0eSA9PSBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6OlllcyksIDAp
OwotICAgIH0pOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tQcm9jZXNzTG9jYWxQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+
JiYgY2FsbGJhY2spCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRDYWxsYmFja0lkZW50
aWZpZXI7Ci0gICAgYXV0byByZXN1bHQgPSBtX2xvY2FsUG9ydEFjdGl2aXR5Q29tcGxldGlvbkhh
bmRsZXJzLmVuc3VyZSgrK2N1cnJlbnRDYWxsYmFja0lkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICByZXR1cm4gV1RGTW92ZShjYWxs
YmFjayk7Ci0gICAgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNoZWNrUHJvY2Vzc0xvY2Fs
UG9ydEZvckFjdGl2aXR5KHBvcnQsIGN1cnJlbnRDYWxsYmFja0lkZW50aWZpZXIpLCAwKTsKLX0K
LQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2
aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUp
Ci17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fbG9jYWxQb3J0QWN0aXZpdHlDb21wbGV0aW9uSGFu
ZGxlcnMudGFrZShjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIGlmICghY2FsbGJhY2spCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGNhbGxiYWNrKGlzTG9jYWxseVJlYWNoYWJsZSA/IE1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzIDogTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpObyk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIGNvbnN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUlu
Zm9ybWF0aW9uKQogewogICAgIHByb2Nlc3NQb29sKCkuZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbihkb21haW4sIHByZXdhcm1JbmZvcm1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDE4ZjQ4ODBhMGJiMmQ0ZDgzZDJmYjZjNTk3Yzg3Yzdj
ZGQ2ZWM4OTYuLjY5NTE3Mzc2ZmI4NTNlOGIwYmNmNDdiYTYyMzMwMGJmZGViYTU5OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zOSw4ICszOSw2IEBA
CiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTIzOSw4ICsyMzcs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFeGNlZWRBY3RpdmVNZW1vcnlMaW1pdCgpOwogICAg
IHZvaWQgZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdCgpOwogCi0gICAgdm9pZCBjaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwotCiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNp
b25hbExvYWQoKSB7IG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcyA9IHRydWU7IH0K
ICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMoKSBjb25zdCB7IHJldHVy
biBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHM7IH0KIApAQCAtMzQyLDE2ICszMzgs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVBZGRlZFRvV2ViUHJvY2Vzc0NhY2hlKCkgY29u
c3Q7CiAgICAgdm9pZCBzaG91bGRUZXJtaW5hdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKLSAgICB2b2lkIGNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQxLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImIHBvcnQyKTsKLSAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlz
UHJvY2Vzc1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9j
YWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKTsKLSAgICB2
b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYpOwotICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJik7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIHVpbnQ2NF90IG1lc3NhZ2VzQ2Fs
bGJhY2tJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyJik7Ci0gICAgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7
Ci0gICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFi
bGUpOwotCiAgICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpIGNvbnN0OwogICAgIGJvb2wgaXNBbGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNvbnN0OwogCkBAIC00NzgsMTAgKzQ2NCw2IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKICNlbmRpZgogCi0gICAgSGFzaFNl
dDxXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRz
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNo
RGVsaXZlcnlDb21wbGV0aW9uSGFuZGxlcnM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFz
QWN0aXZpdHkpPj4gbV9sb2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVyczsKLQogICAg
IHVuc2lnbmVkIG1fc3VzcGVuZGVkUGFnZUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21t
aXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcmV3YXJt
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMzJiYWZlYTllMTA5NThjMjVjZDE5NGRhMTg0NTM2YWQwOTNmNzUyZC4u
ZDZkMDYzOTg1NjE0YzUyNDJhZDIyNWYxODUyZjVmOGNlNDA4Yjk0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTQs
MTYgKzU0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBNZW1vcnlQcmVzc3VyZVN0YXR1c0NoYW5nZWQoYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1
cmUpCiAgICAgRGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlMaW1pdFdoaWxlQWN0aXZlKCkKIAotICAg
IENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBv
cnQyKQotICAgIEVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKHN0cnVjdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgbG9jYWwsIHN0cnVjdCBXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXIgcmVtb3RlKQotICAgIE1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgbG9jYWwpCi0gICAgTWVzc2FnZVBv
cnRDbG9zZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBsb2NhbCkKLSAg
ICBUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIgcG9ydCwgdWludDY0X3QgbWVzc2FnZXNDYWxsYmFja0lkZW50aWZpZXIpCi0gICAgUG9z
dE1lc3NhZ2VUb1JlbW90ZShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMg
bWVzc2FnZSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciByZW1vdGUpCi0g
ICAgQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCi0gICAgRGlkRGVs
aXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikK
LSAgICBEaWRDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIGJvb2wgaXNMb2NhbGx5UmVhY2hhYmxlKQotCiAgICAgRGlkQ29sbGVjdFBy
ZXdhcm1JbmZvcm1hdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVj
dCBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24gcHJld2FybUluZm9ybWF0aW9uKQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA3ZTZmOTc0M2I3MzJiOTczOTk4NzU5NmY3ZWQyZmI3Njg2NGZmOGQx
Li5iYWI2M2Q5ZDVkODg5OTBjNzY4NWExMzc1MjFiM2IwOTM0NTk4MjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwODcsNiArMzA4
Nyw4IEBACiAJCTQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ05ldHdvcmsuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0
d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTE0MzYzMjBGNjc3QjEwMDI2RjkxMiAvKiBJ
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTE0QTc4MjMxNkVDM0YwMEI1NjAwNyAvKiBOZXR3b3JrTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMTE0QTc5MjMxNkVDM0YwMEI1NjAwNyAvKiBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhcHR1cmVVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUw
IC8qIE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjczNiw2ICs2NzM4LDgg
QEAKIAkJCQk0MTAzRkJBMTIwNjFCREI3MDBDMkVBRjggLyogTmV0d29ya0xvYWRDaGVja2VyLmgg
Ki8sCiAJCQkJODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50Lmgg
Ki8sCiAJCQkJODM5MTQ5NjMxQkVBODM4NTAwRDJEOTUzIC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cy5oICovLAorCQkJCTQxMTE0QTc5MjMxNkVDM0YwMEI1NjAwNyAvKiBOZXR3b3JrTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwICovLAorCQkJCTQxMTE0QTc4MjMxNkVDM0YwMEI1NjAwNyAv
KiBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLywKIAkJCQk1MTBDQzdERjE2
MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICovLAogCQkJCTUxMENDN0UwMTYx
MzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovLAogCQkJCTUxQThBNjE3MTYyN0Y1
QkIwMDBEOTBFOSAvKiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDhkYTdjOTE0MWVkMzk5ZGQyMmMxYzNhN2JmZWQ3MjE4YTc5ZDg4
YjAuLjg1YTRiZDlmMzJkOTJmNDE4MjM0ODliNWI0M2ZiNmYwNGVlYzVhOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIldlYlNvY2tldFN0
cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQ
b3J0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAKQEAgLTI4OSw2ICsyOTAsMTYgQEAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmluaXRpYWxpemVTV0NsaWVudENvbm5l
Y3QKIAogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQotCiAjZW5kaWYKKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5tZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQobWVzc2FnZVBv
cnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNoZWNr
UHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQoreworICAgIGNhbGxiYWNrKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpp
c0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlKG1lc3NhZ2VQb3J0SWRlbnRpZmll
cikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggNjI2ZGFiMTFiMmRmMjk5NGNhZGJhNzczZjkyNTEwOGYxYzU3OWI1Ni4uOGIwODZiNDlmMzYy
ZWUyZDIyNTMxOTgzMmYzMTQ0N2NkZjAxNjVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTQ1LDYgKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyOworc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkzLDYgKzk1LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAgICAgdm9pZCBzZXRPbkxpbmVTdGF0ZShi
b29sIGlzT25MaW5lKTsKIAorICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBtZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKQogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRDYWNo
ZVJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmLCBQQUw6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNzQyMGY4MjE2MTM4ZTdlMTA5MDVkZjFiNDYwMjA5
ZjdjNWM1YmU3OS4uNTE3NzE1ZjU5YWNmZjVhMTAyNTUyYzE3OGIzYzdiZGRkNjBiYzZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjksNCArMjksNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewog
ICAgIERpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKICAgICBEaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIFNldE9uTGluZVN0YXRl
KGJvb2wgaXNPbkxpbmUpOworCisgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoYm9vbCBpc0xv
Y2FsbHlSZWFjaGFibGUpIEFzeW5jCisgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVj
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwCmluZGV4IDMzMjc5MzM5NWUwZDhjNTcxZmVhMjg4MWY3YjcxZmE2NjVkMGFlOTQuLjk2NWFk
YWQ0M2E3NTM0MDQxZDM0MTJiNjdjODAxYmNiNThmM2FmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC0xMDksOSArMTEwLDcgQEAgdm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2
aWNlV29ya2UKIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIEZJWE1FOiBUZW1w
b3JhcmlseSBwaXBlIHRoZSBTVyBwb3N0TWVzc2FnZSBtZXNzYWdlcyB2aWEgdGhlIFVJUHJvY2Vz
cyBzaW5jZSB0aGlzIGlzIHdoZXJlIHRoZSBNZXNzYWdlUG9ydCByZWdpc3RyeSBsaXZlcwotICAg
IC8vIGFuZCB0aGlzIGF2b2lkcyByYWNlcy4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVy
LCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmll
ciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV0Ns
aWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0
eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYgZGF0YSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCA5MjNkYjgwMjhkYTdiM2RmYjJhOTk0ZWQ1YTkxNjExN2ZjNTI0OGE2Li5j
MTllYTFkZjJmYjhkZWM0MDQyNGZhYTM2MTlmOTc3YTU5MzRlMTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yODAsOSArMjgwLDcgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllcgogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3Nh
Z2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKQogewotICAgIC8vIEZJWE1FOiBUZW1wb3JhcmlseSBwaXBlIHRoZSBT
VyBwb3N0TWVzc2FnZSBtZXNzYWdlcyB2aWEgdGhlIFVJUHJvY2VzcyBzaW5jZSB0aGlzIGlzIHdo
ZXJlIHRoZSBNZXNzYWdlUG9ydCByZWdpc3RyeSBsaXZlcwotICAgIC8vIGFuZCB0aGlzIGF2b2lk
cyByYWNlcy4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUG9vbDo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmln
aW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5kZXggNmQyODU2YTA0ZWRhMjkyZjZmNmE2ODdjMGUx
NmMyMTAyYTgzMTU1MS4uMzA4NjcyZmE4NDQwOGI5NzU4YmIyNzAzYmMxYjZmYTdlNzNkZDY0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC01
MCw3NiArNTAsNDMgQEAgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6On5XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcigpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgSVBDOjpDb25uZWN0aW9uJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQor
eworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQxLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQyKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6Q3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFu
bmVsKHBvcnQxLCBwb3J0MiksIDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVOZXdNZXNz
YWdlUG9ydENoYW5uZWwgeyBwb3J0MSwgcG9ydDIgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVt
b3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RW50
YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobG9jYWwsIHJlbW90ZSksIDApOwor
ICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpFbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90
ZSB7IGxvY2FsLCByZW1vdGUgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Ok1lc3NhZ2VQb3J0
RGlzZW50YW5nbGVkKHBvcnQpLCAwKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TWVzc2FnZVBvcnRE
aXNlbnRhbmdsZWQgeyBwb3J0IH0sIDApOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpNZXNzYWdlUG9ydENsb3Nl
ZChwb3J0KSwgMCk7CisgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok1lc3NhZ2VQb3J0Q2xvc2VkIHsgcG9y
dCB9LCAwKTsKIH0KIAotdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lk
KCk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudEhhbmRsZXJJZGVudGlmaWVy
OwotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSArK2N1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsK
LQotICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Rha2VBbGxNZXNzYWdlc0Nh
bGxiYWNrTG9jayk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YWtlQWxsTWVzc2FnZXNDYWxs
YmFja3MuZW5zdXJlKGlkZW50aWZpZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQgeyBwb3J0IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VC
YXRjaElkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG1lc3NhZ2VzKSwgW21lc3NhZ2VCYXRjaElkZW50aWZpZXJdIHsKKyAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyB7IG1lc3NhZ2VCYXRj
aElkZW50aWZpZXIgfSwgMCk7CiAgICAgICAgIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6VGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBpZGVudGlmaWVyKSwgMCk7Ci19
Ci0KLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZFRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50
NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVu
dGlmaWVyKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tMb2NrKTsKLSAgICBhdXRvIGNhbGxi
YWNrID0gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MudGFrZShtZXNzYWdlQ2FsbGJhY2tJZGVu
dGlmaWVyKTsKLSAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLQotICAgIEFTU0VSVChjYWxsYmFj
ayk7Ci0gICAgY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlcyksIFttZXNzYWdlQmF0Y2hJZGVudGlm
aWVyXSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRGVsaXZlck1lc3Nh
Z2VQb3J0TWVzc2FnZXMobWVzc2FnZUJhdGNoSWRlbnRpZmllciksIDApOwotICAgIH0pOwotfQot
Ci12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRDaGVja1JlbW90ZVBvcnRG
b3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIobV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrTG9jayk7Ci0gICAgYXV0byBjYWxsYmFjayA9IG1f
cmVtb3RlQWN0aXZpdHlDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIGxv
Y2tlci51bmxvY2tFYXJseSgpOwotCi0gICAgQVNTRVJUKGNhbGxiYWNrKTsKLSAgICBjYWxsYmFj
ayhoYXNBY3Rpdml0eSA/IEhhc0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOworICAg
IH0sIDApOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVz
c2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpQb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIHJlbW90ZVRh
cmdldCksIDApOwotfQotCi12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLXsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5IHsg
Y2FsbGJhY2tJZGVudGlmaWVyLCBNZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9j
YWxseVJlYWNoYWJsZShpZGVudGlmaWVyKSB9LCAwKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UG9z
dE1lc3NhZ2VUb1JlbW90ZSB7IFdURk1vdmUobWVzc2FnZSksIHJlbW90ZVRhcmdldCB9LCAwKTsK
IH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgUHJvY2Vzc0lk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKQpAQCAtMTI4
LDE4ICs5NSwxMiBAQCB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Jl
bW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRh
cmdldCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
c3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7Ci0g
ICAgdWludDY0X3QgaWRlbnRpZmllciA9ICsrY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwotCi0g
ICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFj
a0xvY2spOwotICAgICAgICBBU1NFUlQoIW1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja3MuY29udGFp
bnMoaWRlbnRpZmllcikpOwotICAgICAgICBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLnNldChp
ZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfQotCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVU
YXJnZXQsIGlkZW50aWZpZXIpLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
IHsgcmVtb3RlVGFyZ2V0IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoaGFzQWN0aXZpdHkgPyBIYXNBY3Rpdml0eTo6WWVzIDogSGFzQWN0aXZpdHk6Ok5v
KTsKKyAgICB9LCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDRiYjM3ZmRkNjA3Nzc0ZWQ4MDlh
OTY3YTc3NTE1ZmJhZmI2ZWY2YTEuLjhkYWVhOTM0ZWUzYzJiNDkyMDk1ZDk0Mjk3NmZmOGI0NWVm
OGJmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBA
IC0yNiw4ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
MzYsMTAgKzM0LDYgQEAgY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIKIHB1YmxpYzoKICAgICBzdGF0
aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCi0gICAgdm9p
ZCBkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgdWludDY0X3QgbWVzc2FnZUNhbGxiYWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImLCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkQ2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGhhc0Fj
dGl2aXR5KTsKLSAgICAKIHByaXZhdGU6CiAgICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIoKTsKICAgICB+V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSBmaW5hbDsKQEAgLTQ4
LDE3ICs0MiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQ
cm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2Nh
bCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwog
ICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKLSAgICB2
b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgdGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBwb3N0TWVz
c2FnZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKICAgICB2
b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CiAKLSAgICAvLyBUbyBiZSBjYWxs
ZWQgb25seSBpbiB0aGUgVUkgcHJvY2VzcwotICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQs
IEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKyAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uKCk7CiAKLSAgICBMb2NrIG1fdGFrZUFsbE1lc3Nh
Z2VzQ2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+
JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7Ci0gICAgTG9jayBtX3JlbW90ZUFjdGl2
aXR5Q2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoSGFz
QWN0aXZpdHkpPj4gbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrczsKKyAgICB2b2lkIGNoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxs
YmFjaykgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwMzYwMzJlNDI1OTc1ZTg1NzkwMTQ4NWRmOWY0
OWY5ODUzOTgzZDU1Li5mYzg0ZjcyZmJkODQzZjVkMjA0M2ExYmI3NTdhZjU5OGM5NDU2NDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTI2LDIxICsxMTI2
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpiYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NQaW5nKCkKICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkRpZFJlY2VpdmVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NQaW5nKCksIDApOwogfQogCi12
b2lkIFdlYlByb2Nlc3M6OmRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9yPE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQotewotICAgIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5kaWRUYWtlQWxsTWVzc2FnZXNGb3JQ
b3J0KFdURk1vdmUobWVzc2FnZXMpLCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCBtZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLXsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6c2luZ2xldG9uKCkuY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwg
Y2FsbGJhY2tJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzOjpkaWRDaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0
aXZpdHkpCi17Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmRpZENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0
aXZpdHkpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgTWVzc2FnZVBv
cnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlNmFmMmM5MzhjMWU0MDRjMjA2ZjQzODQyNTM1ZDg2ZTI4
Y2Q4NzhhLi5mM2NhZjMwMzJkMDY5MzVkODAzMDdlOGI2NGRhZjI0NzY2ZDkzNGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI4Niw2ICsyODYsOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIGFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3Q7CiAKKyAgICB2b2lk
IG1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAgICAgfldlYlByb2Nlc3Mo
KTsKQEAgLTM1NSwxMSArMzU3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1haW5UaHJlYWRQaW5n
KCk7CiAgICAgdm9pZCBiYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NQaW5nKCk7CiAKLSAgICB2b2lk
IGRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNoZWNrUHJvY2Vz
c0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRDaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0
aXZpdHkpOwotICAgIHZvaWQgbWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgdm9p
ZCBzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOwogICAgIHZv
aWQgZ2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1N2EyNjU2MzQ1ZmJl
OWQzMzBkZjY1NWUzNTJjMzliZWE1MmI0NWQ5Li43NTdmNThhNGIwOTBkY2E3MjE2ZDUzY2Y4NjM5
MDVmZDcxMTAyNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTE1LDExICsxMTUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNl
bmRpZgogCi0gICAgRGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChWZWN0b3I8V2ViQ29yZTo6TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM+IG1lc3NhZ2VzLCB1aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQotICAgIERpZENoZWNr
UmVtb3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBo
YXNBY3Rpdml0eSkKLSAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllcikKLSAgICBNZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQotCiAgICAgU2V0SGFzU3VzcGVuZGVkUGFnZVByb3h5
KGJvb2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5KTsKICAgICBTZXRJc0luUHJvY2Vzc0NhY2hlKGJv
b2wgaXNJblByb2Nlc3NDYWNoZSkKICAgICBNYXJrSXNOb0xvbmdlclByZXdhcm1lZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377850</attachid>
            <date>2019-09-02 06:14:01 -0700</date>
            <delta_ts>2019-09-02 09:02:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201299-20190902151359.patch</filename>
            <type>text/plain</type>
            <size>69338</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdhMjY2NDZlZmJjYzBiMDM0
ZDc2YmVkYzk2Y2Q1YmNmODE0NmVlNjIuLjM0ZDU0MWU5ODVkYzZhZDU1YTY0YTI4OGNlZDk2YmZj
NmU1Y2JlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDktMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTWVzc2FnZVJlZ2lzdHJ5
IHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIG1lc3NhZ2UgcmVnaXN0cnkgdG8gTmV0d29ya1Byb2Nlc3MuCisgICAg
ICAgIFRha2UgYmVuZWZpdCBvZiB0aGlzIG1vdmUgdG8gdXNlIGFzeW5jIHJlcGx5IElQQyBhcyBt
dWNoIGFzIHBvc3NpYmxlLgorICAgICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSB0aGUg
SVBDIG1lc3NhZ2UgdG8gVUlQcm9jZXNzIHdoZW4gZG9pbmcgcG9zdE1lc3NhZ2Ugd2l0aCBzZXJ2
aWNlIHdvcmtlcnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQ
cm9jZXNzVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bmV4dE1lc3NhZ2VCYXRjaElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRv
UmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjplbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NU
b1JlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2Fn
ZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQ
cm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjptZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojp+V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpz
aHV0RG93bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVG
b3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50YW5n
bGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRD
bG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTktMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDk4Y2IyNTg2NDAzMWE0N2YwYTZmNWIxOWZmOGUwMGQ2Y2Y5NWFmMDku
Ljk0ZjNiMGIwMDcyNmU2ZTk3MzE0MjdjN2YzYmJkZTQyMWVmYjZiZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVn
aXN0ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCkBAIC01Myw2ICs1NCw3IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgi
CkBAIC0xMDIsNiArMTA0LDEwIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworCisgICAgZm9y
IChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMpCisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQb3J0
KHBvcnQpOworCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAg
ICAgICAgbV9ydGNQcm92aWRlci0+Y2xvc2UoKTsKQEAgLTg4Nyw0ICs4OTMsODQgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHMKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MikKK3sK
KyAgICBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDEpOworICAgIG1fcHJvY2Vzc0Vu
dGFuZ2xlZFBvcnRzLmFkZChwb3J0Mik7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeSgpLmRpZENyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbChwb3J0MSwgcG9y
dDIpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnRhbmdsZUxv
Y2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKK3sKKyAgICBtX3By
b2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQobG9jYWwpOworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRFbnRhbmdsZUxvY2FsVG9SZW1vdGUobG9jYWws
IHJlbW90ZSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBhdXRvKiBjaGFubmVsID0g
bmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmV4aXN0aW5nQ2hh
bm5lbENvbnRhaW5pbmdQb3J0KGxvY2FsKTsKKyAgICBpZiAoY2hhbm5lbCAmJiBjaGFubmVsLT5o
YXNBbnlNZXNzYWdlc1BlbmRpbmdPckluRmxpZ2h0KCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok1lc3NhZ2VzQXZhaWxhYmxl
Rm9yUG9ydChsb2NhbCksIDApOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5yZW1v
dmUocG9ydCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBuZXR3
b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkRGlzZW50YW5nbGVN
ZXNzYWdlUG9ydChwb3J0KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQor
eworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRD
bG9zZU1lc3NhZ2VQb3J0KHBvcnQpOworfQorCit1aW50NjRfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9pZCgpPiYm
IGRlbGl2ZXJ5Q2FsbGJhY2spCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRNZXNzYWdl
QmF0Y2hJZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBs
ZXRpb25IYW5kbGVycy5jb250YWlucyhjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciArIDEp
KTsKKyAgICBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLmFkZCgrK2N1
cnJlbnRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGRlbGl2ZXJ5Q2FsbGJhY2spKTsK
KyAgICByZXR1cm4gY3VycmVudE1lc3NhZ2VCYXRjaElkZW50aWZpZXI7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgdWludDY0X3QpPiYmIGNhbGxiYWNrKQorewor
ICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS50YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KHBvcnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBtZXNzYWdlcywgRnVuY3Rp
b248dm9pZCgpPiYmIGRlbGl2ZXJ5Q2FsbGJhY2spIG11dGFibGUgeworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKG1lc3NhZ2VzKSwgbmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoV1RGTW92ZShk
ZWxpdmVyeUNhbGxiYWNrKSkpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNz
YWdlQmF0Y2hJZGVudGlmaWVyKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX21lc3NhZ2VCYXRj
aERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUJhdGNoSWRlbnRpZmllcik7
CisgICAgQVNTRVJUKGNhbGxiYWNrKTsKKyAgICBjYWxsYmFjaygpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
KQoreworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
KCkuZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBwb3J0KSkgeworICAg
ICAgICAvLyBMb29rIHVwIHRoZSBwcm9jZXNzIGZvciB0aGF0IHBvcnQKKyAgICAgICAgYXV0byog
Y2hhbm5lbCA9IG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5l
eGlzdGluZ0NoYW5uZWxDb250YWluaW5nUG9ydChwb3J0KTsKKyAgICAgICAgQVNTRVJUKGNoYW5u
ZWwpOworICAgICAgICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY2hhbm5lbC0+cHJvY2Vzc0Zv
clBvcnQocG9ydCk7CisgICAgICAgIGlmIChwcm9jZXNzSWRlbnRpZmllcikgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBuZXR3b3JrUHJvY2VzcygpLndl
YlByb2Nlc3NDb25uZWN0aW9uKCpwcm9jZXNzSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6TWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHBvcnQpLCAwKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
Cit7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHBvcnQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soaGFzQWN0
aXZpdHkgPT0gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpZZXMpOwor
ICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBv
cnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5IHsgcG9ydCB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhp
c0xvY2FsbHlSZWFjaGFibGUgPyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZp
dHk6OlllcyA6IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6Tm8pOwor
ICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCBmYWQ4YjZlOTAyNTExMGQ2MjFhM2UwOWUyMjIyNTkyZDgxYjVhYjc5Li43MTRi
MDliMDM5N2ZkNTQ1ZmJkMjRmZTVlNmU1OTgzMWFmYmQ4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1h
cC5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgpAQCAtMTQ2LDYgKzE0OCw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpI
YXNBY3Rpdml0eSk+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKQEAgLTIwOCw2ICsyMTIsMTUgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOworICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpOworICAgIHZvaWQgbWVzc2FnZVBvcnREaXNl
bnRhbmdsZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
KTsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOworICAgIHZvaWQgY2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdl
UG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOworCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyKCk7CiAjZW5k
aWYKQEAgLTIzMiw2ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RzKCk7CiAKKyAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRlbnRpZmll
cihGdW5jdGlvbjx2b2lkKCk+JiYpOworCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0g
ZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJl
c291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAgLTMxMSw2ICszMjYs
OSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eT4gbV9wYXltZW50Q29vcmRpbmF0b3I7CiAjZW5kaWYKICAgICBjb25zdCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworCisgICAgSGFzaFNldDxX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVs
aXZlcnlDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQwZWZhMGIwYjJl
MzUxZTE0NzE1MDdmNjQ4MTQ2ODYyZjljZDRmYzAuLmVlOGY3MmQyMmY3OGFjYjQ4MDQzMDY3ZmQ5
ZjYxOTY1YmMyMWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtODMsNCArODMsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRpZgorCisgICAgQ3JlYXRlTmV3TWVzc2FnZVBv
cnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEsIHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCisgICAgRW50YW5nbGVM
b2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBsb2NhbCwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBy
ZW1vdGUpCisgICAgTWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBsb2NhbCkKKyAgICBNZXNzYWdlUG9ydENsb3NlZChzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIGxvY2FsKQorICAgIFRha2VBbGxNZXNzYWdlc0Zv
clBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoVmVj
dG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtZXNzYWdlcywgdWludDY0X3Qg
bWVzc2FnZUJhdGNoSWRlbnRpZmllcikgQXN5bmMKKyAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkKKyAgICBDaGVja1JlbW90ZVBvcnRG
b3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+
IChib29sIGhhc0FjdGl2aXR5KSBBc3luYworICAgIERpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3Nh
Z2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5NmMxMTY0NzM4YThkZDU5Y2YzNDAwOTA3
YmIxOGIyMjk5NWNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdvcmtNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3Mo
bmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3JlZ2lzdHJ5KCp0aGlzKQoreworfQorCit2b2lkIE5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFu
bmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2Vz
cyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkg
cHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBO
ZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVk
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJl
IGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3Nh
Z2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hv
dWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNh
bGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNz
YWdlVG9SZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImKQoreworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhl
IFVJIHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc0FjdGl2aXR5KT4mJikKK3sKKyAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGlu
IHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogY29ubmVjdGlv
biA9IG1fbmV0d29ya1Byb2Nlc3Mud2ViUHJvY2Vzc0Nvbm5lY3Rpb24ocHJvY2Vzc0lkZW50aWZp
ZXIpOworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihI
YXNBY3Rpdml0eTo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlv
bi0+Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MmVlMGIzNGRhY2U5MGU1YWE0ZjY3MzEwNjUw
MjJmMzRkZDZmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzOworCitjbGFzcyBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihOZXR3b3JrUHJvY2VzcyYp
OworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5JiByZWdpc3RyeSgpIHsg
cmV0dXJuIG1fcmVnaXN0cnk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZU5ld01lc3Nh
Z2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2Fs
LCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7Cisg
ICAgdm9pZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CisgICAgdm9pZCBtZXNzYWdlUG9ydERpc2Vu
dGFuZ2xlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5h
bDsKKyAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rp
b248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOworCisgICAgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5h
bDsKKworICAgIE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fcmVnaXN0cnk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggMmEzNjY2YjNlOTJmNTJmZjQ2MGQxMTFiNzUyZTJlNDRhYThhZjYwYy4u
OGE3OWM0OWU0MzA5Yzc1ZTRhNjZiM2M5MGI5NDE2ODM1N2ZlYzIyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzOSw2ICsxMzks
NyBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2Nr
ZWRGaWxlcykgeyBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRG
aWxlcyksIDApOyB9KQogI2VuZGlmCisgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KCp0aGlzKQogewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFs
aXplKCk7CiAKQEAgLTI2OTMsNCArMjY5NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAK
K05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA3ZjRiNWQyZTZlYzhlNGJjYjQ3MWVjZWVkNTkyMjRlZTkwY2NlNjYx
Li42YTEwMDRiNjQxZWZkZTQzYjRmY2ZiNDA2MmY1YTZkOTI1YmRlODNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMzQ2
LDcgKzM0NywxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgY29uc3Qg
T3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlT3B0aW9uczsgfQotICAgIAorCisgICAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKSBjb25zdDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSYg
bWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKSB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLnJlZ2lzdHJ5KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4gcGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdDsKQEAgLTU2OSw2
ICs1NzMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgUEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbjsKIAogICAgIE9wdGlvblNl
dDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0aW9uczsKKyAgICBOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggODEzNzg4MWJiNDFl
ZTdhOTc4M2JhZDg2NDQ1NzFkYTFmOTFmZDYyZC4uNzgxNGZhYWUzYTI2MGIzODNmZDkxMGQxODBh
YTg5ZDZjNDk5NGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMSw2ICszMSw3IEBAIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMjU1LDcgKzI1Niw2IEBAIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKIFVJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAotVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmNwcAppbmRleCBkYzVhZGYxYTNlNGI5NGFhMDE0YjQzMGVmYTY2ZGUw
OWY5NWNhN2JhLi44YzQwYzUyNTQ2ZmZkMDRiYTE5Y2E4NzBlY2YyODZkOWZiMWQ0OGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjAzYzZiNjgwM2U3MWIyMzEwZWMzOTJhMGQ1ZDQwYzhmZWJkNzhmNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1VSU1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyJiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24o
KQotewotICAgIHN0YXRpYyBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKiBwcm92aWRlciA9
IG5ldyBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwotICAgIHJldHVybiAqcHJvdmlkZXI7
Ci19Ci0KLVVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OlVJTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIoKQotICAgIDogbV9yZWdpc3RyeSgqdGhpcykKLXsKLX0KLQotVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6flVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQotewotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQotewotICAgIC8vIFNob3VsZCBu
ZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50
YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKLXsKLSAgICAvLyBTaG91bGQg
bmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCi17Ci0g
ICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
KQotewotICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJv
dmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikKLXsKLSAgICAvLyBTaG91bGQg
bmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBv
c3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImKQotewotICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQg
aW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIYXNBY3Rpdml0eSk+JiYpCi17Ci0gICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBp
biB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0Fj
dGl2aXR5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvKiBwcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcik7Ci0g
ICAgaWYgKCFwcm9jZXNzKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEhhc0FjdGl2aXR5
OjpObyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwcm9jZXNzLT5jaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShwb3J0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjNjc5ZTNlYjAyMzQwN2Y1NTEzMDRjNGM1NDU1OTdlZDJlZmQzNzA1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7Ci0gICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9yZWdpc3RyeTsgfQotCi1wcml2
YXRlOgotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKLSAgICB+VUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcigpIGZpbmFsOwotCi0gICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdl
UG9ydENoYW5uZWwoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwg
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwotICAg
IHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwotICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRh
bmdsZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7
Ci0gICAgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKLSAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQo
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKLSAgICB2b2lkIGNoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxs
YmFjaykgZmluYWw7Ci0gICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOwot
Ci0gICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkgbV9yZWdpc3RyeTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggZDdhZGE0NDJiMGZjYjVlYTQzNzljZmQ0ZWFiOTFjMmNlODRlMjNjOS4u
MTA1YzhjNmZmZTYzYmViNWMxNzIwZTkzN2IwN2NlMzg4ZTFmZWQwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAi
VGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAi
VGV4dElucHV0Q29udGV4dC5oIgotI2luY2x1ZGUgIlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlVu
ZG9PclJlZG8uaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWQ1Yjk2
MzEyYmRiMTAzZjZjODdmMTFjNDExNzQ0YzJkOTM2MDQ5ZS4uM2UxOWY4OWYwODU0ZjEwNzhiY2I5
NGZkNGIwZGQwM2VhMTJjMzcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMjE5NSwxOCArMjE5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uLCBN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCi17Ci0gICAgc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb24sIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZSwgc291cmNlT3JpZ2luKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kVG9OZXR3b3JraW5nUHJv
Y2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5hdGlvbiwgV1RGTW92ZShtZXNzYWdlKSwgc291
cmNlLCBjb25uZWN0aW9uSWRlbnRpZmllcikpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nl
c3NQcm94eSYgbmV3TmV0d29ya1Byb2Nlc3NQcm94eSkKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMDg2ZTM4
NmE2Yzc3NTQ3YjA2YjE3NDVhNDYyOTQxMmI3OGMwNWJmNS4uMTFmMjM5MTNjMjk0NDkxMDAwOTIw
NzhjZmVjYjkxNjY4YTkxYzMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC00NzEsMTEgKzQ3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
JiYpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbmRpZgotCiAgICAgc3RhdGljIHVpbnQ2
NF90IHJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVhdGlvbkxpc3RlbmVyKEZ1bmN0aW9uPHZvaWQoV2Vi
UHJvY2Vzc1Bvb2wmKT4mJik7CiAgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlclByb2Nlc3NQb29s
Q3JlYXRpb25MaXN0ZW5lcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCBlOGJlOTY1
NmI1NzNhMGFlZGRlNjk5MmIwYzc1MzVmZGEwZDY3OGU5Li5kM2Y3ZWU4Yzg1ZGIyNDM5MWMxMTRk
YzVlZWQ5NDViZGQ5ZDA4NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgpAQCAtMzksOSArMzksNCBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzUG9vbCB7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgQ2xlYXJXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCi0KLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBz
b3VyY2VPcmlnaW4pCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYWY2NzQ4YzlmNzM4MTVmNzYwOTg1OGY1MDkzYjli
NjA5YTY1NzI2NS4uNzM0MGRhYzNjNDllODcyZWE2Zjc1ZDJlYmIyYzIzMjZlMGVhOWM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKLSNpbmNsdWRlICJVSU1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVXRp
bGl0aWVzLmgiCkBAIC0xODYsOSArMTg1LDYgQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vz
c1Byb3h5KCkKICAgICB3aGlsZSAobV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNE
aXNhYmxlZC0tID4gMCkKICAgICAgICAgV2ViQ29yZTo6ZW5hYmxlU3VkZGVuVGVybWluYXRpb24o
KTsKIAotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2xvY2FsUG9ydEFjdGl2aXR5Q29tcGxl
dGlvbkhhbmRsZXJzLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjayhNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6Ok5vKTsKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBI
aWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZW1vdmVQcm9jZXNzUmVxdWly
aW5nSGlnaFBlcmZvcm1hbmNlKHRoaXMpOwogI2VuZGlmCkBAIC0zNDUsOSArMzQxLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKIAogICAgIG1fdXNlckluaXRpYXRlZEFjdGlv
bk1hcC5jbGVhcigpOwogCi0gICAgZm9yIChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVk
UG9ydHMpCi0gICAgICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigp
LnJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKLQogICAgIG1fcHJvY2Vzc1Bv
b2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCkBAIC0xNDE3LDk4ICsxNDEwLDYgQEAg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtUGF0aHNXaXRo
QXNzdW1lZFJlYWRBY2Nlc3MoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBw
b3J0MSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MikKLXsKLSAgICBtX3Byb2Nl
c3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDEpOwotICAgIG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRz
LmFkZChwb3J0Mik7Ci0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkucmVnaXN0cnkoKS5kaWRDcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwocG9ydDEsIHBvcnQyKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKQotewotICAgIG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRz
LmFkZChsb2NhbCk7Ci0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkucmVnaXN0cnkoKS5kaWRFbnRhbmdsZUxvY2FsVG9SZW1vdGUobG9jYWwsIHJlbW90ZSwgY29y
ZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotCi0gICAgYXV0byogY2hhbm5lbCA9IFVJTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZXhpc3RpbmdDaGFubmVs
Q29udGFpbmluZ1BvcnQobG9jYWwpOwotICAgIGlmIChjaGFubmVsICYmIGNoYW5uZWwtPmhhc0Fu
eU1lc3NhZ2VzUGVuZGluZ09ySW5GbGlnaHQoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6TWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGxvY2FsKSwgMCk7Ci19Ci0KLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQpCi17Ci0gICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3NFbnRhbmds
ZWRQb3J0cy5yZW1vdmUocG9ydCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
Ci0KLSAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3Ry
eSgpLmRpZERpc2VudGFuZ2xlTWVzc2FnZVBvcnQocG9ydCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBv
cnQpCi17Ci0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucmVn
aXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQb3J0KHBvcnQpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQsIHVpbnQ2NF90IG1lc3NhZ2VzQ2FsbGJhY2tJZGVudGlmaWVyKQotewotICAgIFVJTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkudGFrZUFsbE1l
c3NhZ2VzRm9yUG9ydChwb3J0LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBtZXNzYWdlc0NhbGxiYWNrSWRlbnRpZmllcl0oVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiYmIG1lc3NhZ2VzLCBGdW5jdGlvbjx2b2lkKCk+JiYgZGVsaXZlcnlDYWxsYmFjaykgewot
Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllcjsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhh
bmRsZXJzLmVuc3VyZSgrK2N1cnJlbnRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyLCBbZGVsaXZlcnlD
YWxsYmFjayA9IFdURk1vdmUoZGVsaXZlcnlDYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShkZWxpdmVyeUNhbGxiYWNrKTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChXVEZN
b3ZlKG1lc3NhZ2VzKSwgbWVzc2FnZXNDYWxsYmFja0lkZW50aWZpZXIsIGN1cnJlbnRNZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKSwgMCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVu
dGlmaWVyKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29t
cGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUJhdGNoSWRlbnRpZmllcik7Ci0gICAgQVNTRVJU
KGNhbGxiYWNrKTsKLSAgICBjYWxsYmFjaygpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCkKLXsKLSAgICBpZiAoVUlNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucmVnaXN0cnkoKS5kaWRQb3N0TWVzc2FnZVRv
UmVtb3RlKFdURk1vdmUobWVzc2FnZSksIHBvcnQpKSB7Ci0gICAgICAgIC8vIExvb2sgdXAgdGhl
IHByb2Nlc3MgZm9yIHRoYXQgcG9ydAotICAgICAgICBhdXRvKiBjaGFubmVsID0gVUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucmVnaXN0cnkoKS5leGlzdGluZ0NoYW5u
ZWxDb250YWluaW5nUG9ydChwb3J0KTsKLSAgICAgICAgQVNTRVJUKGNoYW5uZWwpOwotICAgICAg
ICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY2hhbm5lbC0+cHJvY2Vzc0ZvclBvcnQocG9ydCk7
Ci0gICAgICAgIGlmIChwcm9jZXNzSWRlbnRpZmllcikgewotICAgICAgICAgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKCpwcm9jZXNz
SWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6TWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHBvcnQpLCAwKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIpCi17Ci0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
c2luZ2xldG9uKCkucmVnaXN0cnkoKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShwb3J0LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lkZW50aWZpZXJd
KE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rpdml0eSkgewot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRDaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjYWxsYmFja0lkZW50aWZpZXIsIGhhc0FjdGl2aXR5ID09IE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzKSwgMCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKLXsKLSAgICBz
dGF0aWMgdWludDY0X3QgY3VycmVudENhbGxiYWNrSWRlbnRpZmllcjsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fbG9jYWxQb3J0QWN0aXZpdHlDb21wbGV0aW9uSGFuZGxlcnMuZW5zdXJlKCsrY3VycmVu
dENhbGxiYWNrSWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKGNhbGxiYWNrKTsKLSAgICB9KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotCi0gICAgc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6Q2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwg
Y3VycmVudENhbGxiYWNrSWRlbnRpZmllciksIDApOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBib29sIGlzTG9jYWxseVJlYWNoYWJsZSkKLXsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gbV9sb2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25IYW5kbGVycy50YWtlKGNhbGxiYWNrSWRl
bnRpZmllcik7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2Fs
bGJhY2soaXNMb2NhbGx5UmVhY2hhYmxlID8gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5OjpZZXMgOiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6
Ok5vKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3Jt
YXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgV2Vi
Q29yZTo6UHJld2FybUluZm9ybWF0aW9uJiBwcmV3YXJtSW5mb3JtYXRpb24pCiB7CiAgICAgcHJv
Y2Vzc1Bvb2woKS5kaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGRvbWFpbiwgcHJld2FybUlu
Zm9ybWF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggOGVkZjUzMDQwZmMxNWI0OTVmMTk1NGQzNmQxZWQyNjQzZTFhOTgyZS4uYmRhMDg1OTU1Zjhl
MjE1NmNiZDhmYjZkNzg4ZGE2NjAxMzk1ZjNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtMjQxLDggKzIzOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZEV4Y2VlZEFjdGl2ZU1lbW9yeUxpbWl0KCk7CiAgICAgdm9pZCBkaWRFeGNlZWRJbmFjdGl2ZU1l
bW9yeUxpbWl0KCk7CiAKLSAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4m
Jik7Ci0KICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCgpIHsgbV9oYXNDb21taXR0
ZWRBbnlQcm92aXNpb25hbExvYWRzID0gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ29tbWl0dGVkQW55
UHJvdmlzaW9uYWxMb2FkcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ29tbWl0dGVkQW55UHJvdmlz
aW9uYWxMb2FkczsgfQogCkBAIC0zNDMsMTYgKzMzOSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
YW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUoKSBjb25zdDsKICAgICB2b2lkIHNob3VsZFRlcm1p
bmF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgY3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpOwot
ICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpOwotICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmds
ZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBtZXNz
YWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKLSAg
ICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiwgdWludDY0X3QgbWVzc2FnZXNDYWxsYmFja0lkZW50aWZpZXIpOwotICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKLSAgICB2b2lkIGNoZWNr
UmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZERlbGl2ZXJNZXNz
YWdlUG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwotICAgIHZv
aWQgZGlkQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBib29sIGlzTG9jYWxseVJlYWNoYWJsZSk7Ci0KICAgICBib29sIGhhc1Byb3Zp
c2lvbmFsUGFnZVdpdGhJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICAgICBib29s
IGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KSBjb25zdDsKIApAQCAtNDc5LDEwICs0NjUsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PiBtX3VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk7CiAjZW5kaWYKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyPiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBG
dW5jdGlvbjx2b2lkKCk+PiBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJz
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4+IG1fbG9jYWxQb3J0QWN0
aXZpdHlDb21wbGV0aW9uSGFuZGxlcnM7Ci0KICAgICB1bnNpZ25lZCBtX3N1c3BlbmRlZFBhZ2VD
b3VudCB7IDAgfTsKICAgICBib29sIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJld2FybWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDMyYmFmZWE5ZTEw
OTU4YzI1Y2QxOTRkYTE4NDUzNmFkMDkzZjc1MmQuLmQ2ZDA2Mzk4NTYxNGM1MjQyYWQyMjVmMTg1
MmY1ZjhjZTQwOGI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTU0LDE2ICs1NCw2IEBAIG1lc3NhZ2VzIC0+IFdl
YlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTWVtb3J5UHJlc3N1cmVTdGF0dXND
aGFuZ2VkKGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKQogICAgIERpZEV4Y2VlZEluYWN0aXZl
TWVtb3J5TGltaXRXaGlsZUFjdGl2ZSgpCiAKLSAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5u
ZWwoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MikKLSAgICBFbnRhbmdsZUxvY2FsUG9y
dEluVGhpc1Byb2Nlc3NUb1JlbW90ZShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIGxvY2FsLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkK
LSAgICBNZXNzYWdlUG9ydERpc2VudGFuZ2xlZChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyIGxvY2FsKQotICAgIE1lc3NhZ2VQb3J0Q2xvc2VkKHN0cnVjdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXIgbG9jYWwpCi0gICAgVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChz
dHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQsIHVpbnQ2NF90IG1lc3Nh
Z2VzQ2FsbGJhY2tJZGVudGlmaWVyKQotICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXIgcmVtb3RlKQotICAgIENoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCwgdWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyKQotICAgIERpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKHVp
bnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCi0gICAgRGlkQ2hlY2tQcm9jZXNzTG9jYWxQ
b3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGlzTG9jYWxs
eVJlYWNoYWJsZSkKLQogICAgIERpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0
aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjNkNGYwOGMy
ZGRjOWVjMTMxY2JmMmU0NmJjZWM3MDBhYmE5ZmVhOC4uNTBmNzQ2YTM4N2M4Y2NiMWVkYjZhMzdh
M2M1NWYyYWY5NzI3MTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMDkwLDYgKzMwOTAsOCBAQAogCQk0MTA0ODJDQjFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSVENOZXR3b3JrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEw
NDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTExNDM2MzIwRjY3N0IxMDAyNkY5MTIgLyogSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3ODIzMTZFQzNG
MDBCNTYwMDcgLyogTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3OTIzMTZFQzNGMDBCNTYw
MDcgLyogTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTI4NkVGMjFDOEE5MEMwMDNB
ODU1MCAvKiBNZWRpYUNhcHR1cmVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFDYXB0dXJlVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYUNhcHR1cmVVdGlsaXRpZXMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYUNhcHR1cmVV
dGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY3NDgsNiArNjc1MCw4IEBACiAJCQkJNDEwM0ZCQTEyMDYxQkRCNzAw
QzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5oICovLAogCQkJCTgzRDQ1NEQ2MUJFOUQzQzQw
MDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovLAogCQkJCTgzOTE0OTYzMUJFQTgzODUw
MEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCAqLywKKwkJCQk0MTExNEE3OTIzMTZF
QzNGMDBCNTYwMDcgLyogTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCAqLywK
KwkJCQk0MTExNEE3ODIzMTZFQzNGMDBCNTYwMDcgLyogTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmggKi8sCiAJCQkJNTEwQ0M3REYxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzLmNwcCAqLywKIAkJCQk1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3MuaCAqLywKIAkJCQk1MUE4QTYxNzE2MjdGNUJCMDAwRDkwRTkgLyogTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZGE3Yzkx
NDFlZDM5OWRkMjJjMWMzYTdiZmVkNzIxOGE3OWQ4OGIwLi44NWE0YmQ5ZjMyZDkyZjQxODIzNDg5
YjViNDNmYjZmMDRlZWM1YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTU3LDYg
KzU3LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCkBAIC0yODksNiAr
MjkwLDE2IEBAIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25uZWN0CiAKICAgICByZXR1cm4gaWRlbnRpZmll
cjsKIH0KLQogI2VuZGlmCisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdl
c0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBt
ZXNzYWdlUG9ydElkZW50aWZpZXIpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubWVz
c2FnZXNBdmFpbGFibGVGb3JQb3J0KG1lc3NhZ2VQb3J0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0
eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBj
YWxsYmFjayhXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxs
eVJlYWNoYWJsZShtZXNzYWdlUG9ydElkZW50aWZpZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYyNmRhYjExYjJkZjI5OTRjYWRiYTc3
M2Y5MjUxMDhmMWM1NzliNTYuLjhiMDg2YjQ5ZjM2MmVlMmQyMjUzMTk4MzJmMzE0NDdjZGYwMTY1
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00NSw2ICs0NSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOworc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKK3N0
cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05Myw2ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9u
KHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYpOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiAKKyAgICB2b2lk
IGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgbWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYpOworCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiwgUEFMOjpT
ZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDc0MjBmODIxNjEzOGU3ZTEwOTA1ZGYxYjQ2MDIwOWY3YzVjNWJlNzkuLjUxNzcxNWY1OWFjZmY1
YTEwMjU1MmMxNzhiM2M3YmRkZDYwYmM2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI5LDQgKzI5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRGaW5pc2hQaW5nTG9hZCh1aW50
NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkRmluaXNoUHJlY29ubmVj
dGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvcikKICAgICBTZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKTsKKworICAgIENo
ZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIgcG9ydCkgLT4gKGJvb2wgaXNMb2NhbGx5UmVhY2hhYmxlKSBBc3luYworICAg
IE1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyIHBvcnQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAzMzI3OTMzOTVlMGQ4YzU3
MWZlYTI4ODFmN2I3MWZhNjY1ZDBhZTk0Li45NjVhZGFkNDNhNzUzNDA0MWQzNDEyYjY3YzgwMWJj
YjU4ZjNhZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAt
MTA5LDkgKzExMCw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlCiAKIHZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYg
bWVzc2FnZSwgY29uc3QgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkgcGlwZSB0aGUgU1cgcG9zdE1l
c3NhZ2UgbWVzc2FnZXMgdmlhIHRoZSBVSVByb2Nlc3Mgc2luY2UgdGhpcyBpcyB3aGVyZSB0aGUg
TWVzc2FnZVBvcnQgcmVnaXN0cnkgbGl2ZXMKLSAgICAvLyBhbmQgdGhpcyBhdm9pZHMgcmFjZXMu
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bv
b2w6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RG
TW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdU
Rk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgfSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTIzZGI4MDI4ZGE3
YjNkZmIyYTk5NGVkNWE5MTYxMTdmYzUyNDhhNi4uYzE5ZWExZGYyZmI4ZGVjNDA0MjRmYWEzNjE5
Zjk3N2E1OTM0ZTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAt
MjgwLDkgKzI4MCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNU
ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIKIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICAv
LyBGSVhNRTogVGVtcG9yYXJpbHkgcGlwZSB0aGUgU1cgcG9zdE1lc3NhZ2UgbWVzc2FnZXMgdmlh
IHRoZSBVSVByb2Nlc3Mgc2luY2UgdGhpcyBpcyB3aGVyZSB0aGUgTWVzc2FnZVBvcnQgcmVnaXN0
cnkgbGl2ZXMKLSAgICAvLyBhbmQgdGhpcyBhdm9pZHMgcmFjZXMuCi0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CisgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZSht
ZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CiB9CiAKIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vz
c2Z1bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmlu
ZGV4IDhlNjIxNmE3NzE3ODA3ZWVjY2ZiN2Q0NTg0ODQ3ZDc1NmQ3OTQwYzMuLjM4MDNhYTZjYjVm
NDRjMTgxODg0NWFjZGJiNjc5MjFhM2Y4ZjAyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtNTAsNjYgKzUwLDQzIEBAIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjp+V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgaW5saW5lIElQQzo6Q29ubmVjdGlv
biYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OworfQorCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdNZXNz
YWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MSwgY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChwb3J0MSwgcG9ydDIpLCAwKTsKKyAg
ICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsIHsgcG9ydDEsIHBv
cnQyIH0sIDApOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjplbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKGxvY2FsLCByZW1vdGUpLCAwKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW50YW5n
bGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUgeyBsb2NhbCwgcmVtb3RlIH0sIDApOwog
fQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydERpc2Vu
dGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpNZXNzYWdlUG9ydERpc2VudGFuZ2xlZChwb3J0KSwgMCk7Cisg
ICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Ok1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkIHsgcG9ydCB9LCAwKTsK
IH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9z
ZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6TWVzc2FnZVBvcnRDbG9zZWQocG9ydCksIDApOworICAgIG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpNZXNzYWdlUG9ydENsb3NlZCB7IHBvcnQgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyB1
aW50NjRfdCBjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgaWRlbnRpZmll
ciA9ICsrY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwotCi0gICAgQVNTRVJUKCFtX3Rha2VBbGxN
ZXNzYWdlc0NhbGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV90YWtlQWxsTWVz
c2FnZXNDYWxsYmFja3MuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6VGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChwb3J0LCBpZGVudGlmaWVyKSwgMCk7Ci19Ci0KLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OmRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrID0gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFj
a3MudGFrZShtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoY2FsbGJhY2sp
OwotICAgIGNhbGxiYWNrKFdURk1vdmUobWVzc2FnZXMpLCBbbWVzc2FnZUJhdGNoSWRlbnRpZmll
cl0gewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlbGl2ZXJNZXNzYWdl
UG9ydE1lc3NhZ2VzKG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpLCAwKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZGlkQ2hlY2tSZW1vdGVQb3J0Rm9y
QWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGhhc0FjdGl2aXR5KQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrID0gbV9y
ZW1vdGVBY3Rpdml0eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgQVNT
RVJUKGNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhoYXNBY3Rpdml0eSA/IEhhc0FjdGl2aXR5OjpZ
ZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlRha2VBbGxNZXNzYWdlc0ZvclBvcnQgeyBwb3J0IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3Nh
Z2VCYXRjaElkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG1lc3NhZ2VzKSwgW21lc3NhZ2VCYXRjaElkZW50aWZpZXJdIHsKKyAgICAgICAgICAg
IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyB7IG1lc3NhZ2VC
YXRjaElkZW50aWZpZXIgfSwgMCk7CisgICAgICAgIH0pOworICAgIH0sIDApOwogfQogCiB2b2lk
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0
IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIHJlbW90ZVRhcmdldCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlBv
c3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSwgcmVtb3RlVGFyZ2V0KSwgMCk7Ci19Ci0KLXZvaWQg
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyKQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlk
Q2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkgeyBjYWxsYmFja0lkZW50aWZpZXIsIE1l
c3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlKGlkZW50aWZp
ZXIpIH0sIDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQb3N0TWVzc2FnZVRvUmVtb3RlIHsgbWVz
c2FnZSwgcmVtb3RlVGFyZ2V0IH0sIDApOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIYXNBY3Rpdml0eSk+JiYpCkBAIC0xMjAsMTUgKzk3LDkgQEAgdm9pZCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
TWVzc2EKIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzdGF0aWMgdWludDY0X3Qg
Y3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSArK2N1
cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKLQotICAgIEFTU0VSVCghbV9yZW1vdGVBY3Rpdml0eUNh
bGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9yZW1vdGVBY3Rpdml0eUNhbGxi
YWNrcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1v
dGVUYXJnZXQsIGlkZW50aWZpZXIpLCAwKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSB7IHJlbW90ZVRhcmdldCB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBoYXNBY3Rpdml0
eSkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhc0FjdGl2aXR5ID8gSGFz
QWN0aXZpdHk6OlllcyA6IEhhc0FjdGl2aXR5OjpObyk7CisgICAgfSwgMCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaAppbmRleCBkMDUwNjg0ODFiNDkxNGZmYWFlYzgxMzRhZmViODc1MzVkZWI3YjZlLi5lNDQ5
OTRlNjA1ZDk2NjA3YWE3MGE4MmRiODk4ZWU5MDFlNTZhZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMjYsOCArMjYsNiBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0j
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM2LDEwICszNCw2IEBAIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgZGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIHVp
bnQ2NF90IG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIsIHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElk
ZW50aWZpZXIpOwotICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgdWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGRpZENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBoYXNBY3Rpdml0eSk7Ci0gICAgCiBwcml2YXRlOgog
ICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CiAgICAgfldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyKCkgZmluYWw7CkBAIC01MiwxMyArNDYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFy
Z2V0KSBmaW5hbDsKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CiAK
LSAgICAvLyBUbyBiZSBjYWxsZWQgb25seSBpbiB0aGUgVUkgcHJvY2VzcwogICAgIHZvaWQgY2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKSBmaW5hbDsKLQotICAgIExvY2sgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja0xv
Y2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+
PiBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrczsKLSAgICBMb2NrIG1fcmVtb3RlQWN0aXZpdHlD
YWxsYmFja0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIYXNBY3Rpdml0eSk+PiBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggZTI3OWQ0NGY3NmE4MmQ1ZTlmNTA4ZmNmMGZlNGQ4YWI1MGRhOWExNS4uZTM1NmE0ZjAzM2Ux
MjQ3ZjYxNDYwYzg2Mjc0YWY5YWI5NDNjMjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTExMSwyMSArMTExMSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6YmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzUGluZygpCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzUGluZygpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpkaWRUYWtlQWxs
TWVzc2FnZXNGb3JQb3J0KFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdl
cywgdWludDY0X3QgbWVzc2FnZUNhbGxiYWNrSWRlbnRpZmllciwgdWludDY0X3QgbWVzc2FnZUJh
dGNoSWRlbnRpZmllcikKLXsKLSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2lu
Z2xldG9uKCkuZGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChXVEZNb3ZlKG1lc3NhZ2VzKSwgbWVz
c2FnZUNhbGxiYWNrSWRlbnRpZmllciwgbWVzc2FnZUJhdGNoSWRlbnRpZmllcik7Ci19Ci0KLXZv
aWQgV2ViUHJvY2Vzczo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCi17
Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNoZWNrUHJv
Y2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHBvcnQsIGNhbGxiYWNrSWRlbnRpZmllcik7Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzczo6ZGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGhhc0FjdGl2aXR5KQotewotICAgIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5kaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rp
dml0eShjYWxsYmFja0lkZW50aWZpZXIsIGhhc0FjdGl2aXR5KTsKLX0KLQogdm9pZCBXZWJQcm9j
ZXNzOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewogICAgIE1lc3NhZ2VQb3J0Ojpub3RpZnlNZXNzYWdlQXZhaWxhYmxl
KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZTZh
ZjJjOTM4YzFlNDA0YzIwNmY0Mzg0MjUzNWQ4NmUyOGNkODc4YS4uZjNjYWYzMDMyZDA2OTM1ZDgw
MzA3ZThiNjRkYWYyNDc2NmQ5MzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0yODYsNiArMjg2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBhcmVBbGxQYWdlc1Ro
cm90dGxlYWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBtZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQo
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisKIHByaXZhdGU6CiAgICAg
V2ViUHJvY2VzcygpOwogICAgIH5XZWJQcm9jZXNzKCk7CkBAIC0zNTUsMTEgKzM1Nyw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBtYWluVGhyZWFkUGluZygpOwogICAgIHZvaWQgYmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzUGluZygpOwogCi0gICAgdm9pZCBkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0
KFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgdWlu
dDY0X3QgbWVzc2FnZUNhbGxiYWNrSWRlbnRpZmllciwgdWludDY0X3QgbWVzc2FnZUJhdGNoSWRl
bnRpZmllcik7Ci0gICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCB1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIpOwotICAgIHZvaWQgZGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGhhc0FjdGl2aXR5KTsKLSAgICB2b2lkIG1lc3NhZ2Vz
QXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsK
LQogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgIHZvaWQgc2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0
IFZlY3RvcjxHYW1lcGFkRGF0YT4mKTsKICAgICB2b2lkIGdhbWVwYWRDb25uZWN0ZWQoY29uc3Qg
R2FtZXBhZERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNTdhMjY1NjM0NWZiZTlkMzMwZGY2NTVlMzUyYzM5YmVhNTJiNDVk
OS4uNzU3ZjU4YTRiMDkwZGNhNzIxNmQ1M2NmODYzOTA1ZmQ3MTEwMjZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExNSwxMSAr
MTE1LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAjZW5kaWYKIAotICAgIERpZFRha2VBbGxNZXNz
YWdlc0ZvclBvcnQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtZXNz
YWdlcywgdWludDY0X3QgbWVzc2FnZUNhbGxiYWNrSWRlbnRpZmllciwgdWludDY0X3QgbWVzc2Fn
ZUJhdGNoSWRlbnRpZmllcikKLSAgICBEaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSh1aW50
NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkpCi0gICAgQ2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCi0gICAgTWVzc2FnZXNBdmFp
bGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkK
LQogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQcm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94
eSk7CiAgICAgU2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9jZXNzQ2FjaGUpCiAgICAg
TWFya0lzTm9Mb25nZXJQcmV3YXJtZWQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377853</attachid>
            <date>2019-09-02 09:02:07 -0700</date>
            <delta_ts>2019-09-04 03:46:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201299-20190902180205.patch</filename>
            <type>text/plain</type>
            <size>70266</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdhMjY2NDZlZmJjYzBiMDM0
ZDc2YmVkYzk2Y2Q1YmNmODE0NmVlNjIuLjM0ZDU0MWU5ODVkYzZhZDU1YTY0YTI4OGNlZDk2YmZj
NmU1Y2JlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDktMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTWVzc2FnZVJlZ2lzdHJ5
IHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIG1lc3NhZ2UgcmVnaXN0cnkgdG8gTmV0d29ya1Byb2Nlc3MuCisgICAg
ICAgIFRha2UgYmVuZWZpdCBvZiB0aGlzIG1vdmUgdG8gdXNlIGFzeW5jIHJlcGx5IElQQyBhcyBt
dWNoIGFzIHBvc3NpYmxlLgorICAgICAgICBUaGlzIGFsc28gYWxsb3dzIHRvIHJlbW92ZSB0aGUg
SVBDIG1lc3NhZ2UgdG8gVUlQcm9jZXNzIHdoZW4gZG9pbmcgcG9zdE1lc3NhZ2Ugd2l0aCBzZXJ2
aWNlIHdvcmtlcnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQ
cm9jZXNzVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bmV4dE1lc3NhZ2VCYXRjaElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRv
UmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjplbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NU
b1JlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2Fn
ZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQ
cm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjptZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojp+V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpz
aHV0RG93bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVG
b3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50YW5n
bGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRD
bG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTktMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3Mga2V5ZWQgYnkgdGhlaXIgV2ViUHJvY2VzcyBpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDk4Y2IyNTg2NDAzMWE0N2YwYTZmNWIxOWZmOGUwMGQ2Y2Y5NWFmMDku
Ljk0ZjNiMGIwMDcyNmU2ZTk3MzE0MjdjN2YzYmJkZTQyMWVmYjZiZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVn
aXN0ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCkBAIC01Myw2ICs1NCw3IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgi
CkBAIC0xMDIsNiArMTA0LDEwIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworCisgICAgZm9y
IChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMpCisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQb3J0
KHBvcnQpOworCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAg
ICAgICAgbV9ydGNQcm92aWRlci0+Y2xvc2UoKTsKQEAgLTg4Nyw0ICs4OTMsODQgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHMKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MikKK3sK
KyAgICBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDEpOworICAgIG1fcHJvY2Vzc0Vu
dGFuZ2xlZFBvcnRzLmFkZChwb3J0Mik7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeSgpLmRpZENyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbChwb3J0MSwgcG9y
dDIpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnRhbmdsZUxv
Y2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKK3sKKyAgICBtX3By
b2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQobG9jYWwpOworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRFbnRhbmdsZUxvY2FsVG9SZW1vdGUobG9jYWws
IHJlbW90ZSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICBhdXRvKiBjaGFubmVsID0g
bmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmV4aXN0aW5nQ2hh
bm5lbENvbnRhaW5pbmdQb3J0KGxvY2FsKTsKKyAgICBpZiAoY2hhbm5lbCAmJiBjaGFubmVsLT5o
YXNBbnlNZXNzYWdlc1BlbmRpbmdPckluRmxpZ2h0KCkpCisgICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok1lc3NhZ2VzQXZhaWxhYmxl
Rm9yUG9ydChsb2NhbCksIDApOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5yZW1v
dmUocG9ydCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBuZXR3
b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkRGlzZW50YW5nbGVN
ZXNzYWdlUG9ydChwb3J0KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQor
eworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRD
bG9zZU1lc3NhZ2VQb3J0KHBvcnQpOworfQorCit1aW50NjRfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9pZCgpPiYm
IGRlbGl2ZXJ5Q2FsbGJhY2spCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRNZXNzYWdl
QmF0Y2hJZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBs
ZXRpb25IYW5kbGVycy5jb250YWlucyhjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciArIDEp
KTsKKyAgICBtX21lc3NhZ2VCYXRjaERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLmFkZCgrK2N1
cnJlbnRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGRlbGl2ZXJ5Q2FsbGJhY2spKTsK
KyAgICByZXR1cm4gY3VycmVudE1lc3NhZ2VCYXRjaElkZW50aWZpZXI7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgdWludDY0X3QpPiYmIGNhbGxiYWNrKQorewor
ICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS50YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KHBvcnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBtZXNzYWdlcywgRnVuY3Rp
b248dm9pZCgpPiYmIGRlbGl2ZXJ5Q2FsbGJhY2spIG11dGFibGUgeworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKG1lc3NhZ2VzKSwgbmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoV1RGTW92ZShk
ZWxpdmVyeUNhbGxiYWNrKSkpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNz
YWdlQmF0Y2hJZGVudGlmaWVyKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX21lc3NhZ2VCYXRj
aERlbGl2ZXJ5Q29tcGxldGlvbkhhbmRsZXJzLnRha2UobWVzc2FnZUJhdGNoSWRlbnRpZmllcik7
CisgICAgQVNTRVJUKGNhbGxiYWNrKTsKKyAgICBjYWxsYmFjaygpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
KQoreworICAgIGlmIChuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
KCkuZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBwb3J0KSkgeworICAg
ICAgICAvLyBMb29rIHVwIHRoZSBwcm9jZXNzIGZvciB0aGF0IHBvcnQKKyAgICAgICAgYXV0byog
Y2hhbm5lbCA9IG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5l
eGlzdGluZ0NoYW5uZWxDb250YWluaW5nUG9ydChwb3J0KTsKKyAgICAgICAgQVNTRVJUKGNoYW5u
ZWwpOworICAgICAgICBhdXRvIHByb2Nlc3NJZGVudGlmaWVyID0gY2hhbm5lbC0+cHJvY2Vzc0Zv
clBvcnQocG9ydCk7CisgICAgICAgIGlmIChwcm9jZXNzSWRlbnRpZmllcikgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBuZXR3b3JrUHJvY2VzcygpLndl
YlByb2Nlc3NDb25uZWN0aW9uKCpwcm9jZXNzSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6TWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHBvcnQpLCAwKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
Cit7CisgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHBvcnQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soaGFzQWN0
aXZpdHkgPT0gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpZZXMpOwor
ICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBv
cnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5IHsgcG9ydCB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhp
c0xvY2FsbHlSZWFjaGFibGUgPyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZp
dHk6OlllcyA6IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6Tm8pOwor
ICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCBmYWQ4YjZlOTAyNTExMGQ2MjFhM2UwOWUyMjIyNTkyZDgxYjVhYjc5Li43MTRi
MDliMDM5N2ZkNTQ1ZmJkMjRmZTVlNmU1OTgzMWFmYmQ4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1h
cC5oIgogI2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgpAQCAtMTQ2LDYgKzE0OCw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJQcm9jZXNzSWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpI
YXNBY3Rpdml0eSk+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKQEAgLTIwOCw2ICsyMTIsMTUgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIAorICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOworICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpOworICAgIHZvaWQgbWVzc2FnZVBvcnREaXNl
bnRhbmdsZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
KTsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOworICAgIHZvaWQgY2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdl
UG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOworCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyKCk7CiAjZW5k
aWYKQEAgLTIzMiw2ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RzKCk7CiAKKyAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRlbnRpZmll
cihGdW5jdGlvbjx2b2lkKCk+JiYpOworCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0g
ZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJl
c291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAgLTMxMSw2ICszMjYs
OSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eT4gbV9wYXltZW50Q29vcmRpbmF0b3I7CiAjZW5kaWYKICAgICBjb25zdCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworCisgICAgSGFzaFNldDxX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVs
aXZlcnlDb21wbGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQwZWZhMGIwYjJl
MzUxZTE0NzE1MDdmNjQ4MTQ2ODYyZjljZDRmYzAuLmVlOGY3MmQyMmY3OGFjYjQ4MDQzMDY3ZmQ5
ZjYxOTY1YmMyMWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtODMsNCArODMsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRpZgorCisgICAgQ3JlYXRlTmV3TWVzc2FnZVBv
cnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEsIHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCisgICAgRW50YW5nbGVM
b2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBsb2NhbCwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBy
ZW1vdGUpCisgICAgTWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBsb2NhbCkKKyAgICBNZXNzYWdlUG9ydENsb3NlZChzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIGxvY2FsKQorICAgIFRha2VBbGxNZXNzYWdlc0Zv
clBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoVmVj
dG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtZXNzYWdlcywgdWludDY0X3Qg
bWVzc2FnZUJhdGNoSWRlbnRpZmllcikgQXN5bmMKKyAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkKKyAgICBDaGVja1JlbW90ZVBvcnRG
b3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+
IChib29sIGhhc0FjdGl2aXR5KSBBc3luYworICAgIERpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3Nh
Z2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5NmMxMTY0NzM4YThkZDU5Y2YzNDAwOTA3
YmIxOGIyMjk5NWNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdvcmtNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3Mo
bmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX3JlZ2lzdHJ5KCp0aGlzKQoreworfQorCit2b2lkIE5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFu
bmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2Vz
cyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkg
cHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBO
ZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVk
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJl
IGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3Nh
Z2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hv
dWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNh
bGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNz
YWdlVG9SZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImKQoreworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhl
IFVJIHByb2Nlc3MgcHJvdmlkZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc0FjdGl2aXR5KT4mJikKK3sKKyAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGlu
IHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogY29ubmVjdGlv
biA9IG1fbmV0d29ya1Byb2Nlc3Mud2ViUHJvY2Vzc0Nvbm5lY3Rpb24ocHJvY2Vzc0lkZW50aWZp
ZXIpOworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihI
YXNBY3Rpdml0eTo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlv
bi0+Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MmVlMGIzNGRhY2U5MGU1YWE0ZjY3MzEwNjUw
MjJmMzRkZDZmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzOworCitjbGFzcyBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihOZXR3b3JrUHJvY2VzcyYp
OworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5JiByZWdpc3RyeSgpIHsg
cmV0dXJuIG1fcmVnaXN0cnk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZU5ld01lc3Nh
Z2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2Fs
LCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7Cisg
ICAgdm9pZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CisgICAgdm9pZCBtZXNzYWdlUG9ydERpc2Vu
dGFuZ2xlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5h
bDsKKyAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9y
dChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rp
b248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOworCisgICAgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5h
bDsKKworICAgIE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fcmVnaXN0cnk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggMmEzNjY2YjNlOTJmNTJmZjQ2MGQxMTFiNzUyZTJlNDRhYThhZjYwYy4u
OGE3OWM0OWU0MzA5Yzc1ZTRhNjZiM2M5MGI5NDE2ODM1N2ZlYzIyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzOSw2ICsxMzks
NyBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2Nr
ZWRGaWxlcykgeyBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRG
aWxlcyksIDApOyB9KQogI2VuZGlmCisgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KCp0aGlzKQogewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFs
aXplKCk7CiAKQEAgLTI2OTMsNCArMjY5NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAK
K05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA3ZjRiNWQyZTZlYzhlNGJjYjQ3MWVjZWVkNTkyMjRlZTkwY2NlNjYx
Li42YTEwMDRiNjQxZWZkZTQzYjRmY2ZiNDA2MmY1YTZkOTI1YmRlODNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMzQ2
LDcgKzM0NywxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgY29uc3Qg
T3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlT3B0aW9uczsgfQotICAgIAorCisgICAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKSBjb25zdDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSYg
bWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKSB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLnJlZ2lzdHJ5KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4gcGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdDsKQEAgLTU2OSw2
ICs1NzMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgUEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbjsKIAogICAgIE9wdGlvblNl
dDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0aW9uczsKKyAgICBOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggODEzNzg4MWJiNDFl
ZTdhOTc4M2JhZDg2NDQ1NzFkYTFmOTFmZDYyZC4uNzgxNGZhYWUzYTI2MGIzODNmZDkxMGQxODBh
YTg5ZDZjNDk5NGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMSw2ICszMSw3IEBAIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya01l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMjU1LDcgKzI1Niw2IEBAIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKIFVJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAotVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZXh0TWVudUVsZW1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGV4dE1lbnVFbGVtZW50SW5mby5oCmluZGV4IGVkZDFiZmU4YjYxYTdhMDYxZTgyZWE0ODY1YTIx
YzQ3NjE5ZTMwYjcuLmRjMmY5MGQ5NTA3YjE5OWM4MDc1ODE2YzYwMWVmOTllMjA3NjVkM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1l
bnRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51
RWxlbWVudEluZm8uaApAQCAtMjcsOCArMjcsMTIgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKK09CSkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAKaW5kZXggZGM1YWRmMWEzZTRiOTRhYTAxNGI0MzBlZmE2NmRlMDlmOTVj
YTdiYS4uOGM0MGM1MjU0NmZmZDA0YmExOWNhODcwZWNmMjg2ZDlmYjFkNDhhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFw
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
TWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIwM2M2YjY4MDNlNzFiMjMxMGVjMzkyYTBkNWQ0MGM4ZmViZDc4ZjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCi0KLSNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotVUlNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciYgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkKLXsK
LSAgICBzdGF0aWMgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciogcHJvdmlkZXIgPSBuZXcg
VUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKLSAgICByZXR1cm4gKnByb3ZpZGVyOwotfQot
Ci1VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKCkKLSAgICA6IG1fcmVnaXN0cnkoKnRoaXMpCi17Ci19Ci0KLVVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6On5VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKLXsKLSAgICAvLyBTaG91bGQgbmV2ZXIg
YmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xl
TG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCi17Ci0gICAgLy8gU2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdl
UG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQotewotICAgIC8v
IFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKLXsK
LSAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVy
LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCi17Ci0gICAgLy8gU2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVz
c2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJikKLXsKLSAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRo
ZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12
b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzQWN0aXZpdHkpPiYmKQotewotICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhl
IFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZv
aWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0
eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogcHJvY2VzcyA9IFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlm
ICghcHJvY2VzcykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihIYXNBY3Rpdml0eTo6Tm8p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJvY2Vzcy0+Y2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY3OWUzZWIwMjM0MDdmNTUxMzA0YzRjNTQ1NTk3ZWQyZWZkMzcwNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
VUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwotICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5JiByZWdpc3RyeSgpIHsgcmV0dXJuIG1fcmVnaXN0cnk7IH0KLQotcHJpdmF0ZToK
LSAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7Ci0gICAgflVJTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIoKSBmaW5hbDsKLQotICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRD
aGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKLSAgICB2b2lk
IGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcmVtb3RlKSBmaW5hbDsKLSAgICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVk
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwotICAg
IHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBsb2NhbCkgZmluYWw7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lk
KCk+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7Ci0gICAgdm9pZCBjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2sp
IGZpbmFsOwotICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKLQotICAg
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fcmVnaXN0cnk7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGQ3YWRhNDQyYjBmY2I1ZWE0Mzc5Y2ZkNGVhYjkxYzJjZTg0ZTIzYzkuLjEwNWM4
YzZmZmU2M2JlYjVjMTcyMGU5MzdiMDdjZTM4OGUxZmVkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlRleHRD
aGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlRleHRJ
bnB1dENvbnRleHQuaCIKLSNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJVbmRvT3JS
ZWRvLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDlkNWI5NjMxMmJk
YjEwM2Y2Yzg3ZjExYzQxMTc0NGMyZDkzNjA0OWUuLjNlMTlmODlmMDg1NGYxMDc4YmNiOTRmZDRi
MGRkMDNlYTEyYzM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTIxOTUsMTggKzIxOTUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQ
cm9jZXNzQXNzZXJ0aW9ucygpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbiwgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIHNlbmRUb05ldHdvcmtpbmdQ
cm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uLCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBzb3VyY2UsIHNvdXJjZU9yaWdpbikpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoZGVzdGluYXRpb24sIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZSwg
Y29ubmVjdGlvbklkZW50aWZpZXIpKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA4NmUzODZhNmM3
NzU0N2IwNmIxNzQ1YTQ2Mjk0MTJiNzhjMDViZjUuLjExZjIzOTEzYzI5NDQ5MTAwMDkyMDc4Y2Zl
Y2I5MTY2OGE5MWMzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtNDcxLDExICs0NzEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclBlcm1hbmVudENy
ZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYmKTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGlu
YXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyB1aW50NjRfdCBy
ZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nl
c3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0
aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KaW5kZXggZThiZTk2NTZiNTcz
YTBhZWRkZTY5OTJiMGM3NTM1ZmRhMGQ2NzhlOS4uZDNmN2VlOGM4NWRiMjQzOTFjMTE0ZGM1ZWVk
OTQ1YmRkOWQwODQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wubWVzc2FnZXMuaW4KQEAgLTM5LDkgKzM5LDQgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2Vzc1Bvb2wgewogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgIENsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQotCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNl
T3JpZ2luKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRp
ZmllciBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCi0jZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGFmNjc0OGM5ZjczODE1Zjc2MDk4NThmNTA5M2I5YjYwOWE2
NTcyNjUuLjczNDBkYWMzYzQ5ZTg3MmVhNmY3NWQyZWJiMmMyMzI2ZTBlYTljNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNyArMzcsNiBA
QAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCi0jaW5jbHVkZSAiVUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclV0aWxpdGll
cy5oIgpAQCAtMTg2LDkgKzE4NSw2IEBAIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94
eSgpCiAgICAgd2hpbGUgKG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJs
ZWQtLSA+IDApCiAgICAgICAgIFdlYkNvcmU6OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CiAK
LSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9sb2NhbFBvcnRBY3Rpdml0eUNvbXBsZXRpb25I
YW5kbGVycy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6Okhhc0FjdGl2aXR5OjpObyk7Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgSGlnaFBl
cmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9uKCkucmVtb3ZlUHJvY2Vzc1JlcXVpcmluZ0hp
Z2hQZXJmb3JtYW5jZSh0aGlzKTsKICNlbmRpZgpAQCAtMzQ1LDkgKzM0MSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAgICBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXAu
Y2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRz
KQotICAgICAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdp
c3RyeSgpLmRpZENsb3NlTWVzc2FnZVBvcnQocG9ydCk7Ci0KICAgICBtX3Byb2Nlc3NQb29sLT5k
aXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIApAQCAtMTQxNyw5OCArMTQxMCw2IEBAIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybVBhdGhzV2l0aEFzc3Vt
ZWRSZWFkQWNjZXNzKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEs
IGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpCi17Ci0gICAgbV9wcm9jZXNzRW50
YW5nbGVkUG9ydHMuYWRkKHBvcnQxKTsKLSAgICBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQo
cG9ydDIpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJl
Z2lzdHJ5KCkuZGlkQ3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsKHBvcnQxLCBwb3J0Mik7Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1Jl
bW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHJlbW90ZSkKLXsKLSAgICBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQo
bG9jYWwpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJl
Z2lzdHJ5KCkuZGlkRW50YW5nbGVMb2NhbFRvUmVtb3RlKGxvY2FsLCByZW1vdGUsIGNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKLQotICAgIGF1dG8qIGNoYW5uZWwgPSBVSU1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3RyeSgpLmV4aXN0aW5nQ2hhbm5lbENvbnRh
aW5pbmdQb3J0KGxvY2FsKTsKLSAgICBpZiAoY2hhbm5lbCAmJiBjaGFubmVsLT5oYXNBbnlNZXNz
YWdlc1BlbmRpbmdPckluRmxpZ2h0KCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChsb2NhbCksIDApOwotfQotCi12b2lkIFdlYlBy
b2Nlc3NQcm94eTo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBwb3J0KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzRW50YW5nbGVkUG9y
dHMucmVtb3ZlKHBvcnQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0g
ICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucmVnaXN0cnkoKS5k
aWREaXNlbnRhbmdsZU1lc3NhZ2VQb3J0KHBvcnQpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQot
ewotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5
KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
LCB1aW50NjRfdCBtZXNzYWdlc0NhbGxiYWNrSWRlbnRpZmllcikKLXsKLSAgICBVSU1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3RyeSgpLnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQocG9ydCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVz
c2FnZXNDYWxsYmFja0lkZW50aWZpZXJdKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiBtZXNzYWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIGRlbGl2ZXJ5Q2FsbGJhY2spIHsKLQotICAg
ICAgICBzdGF0aWMgdWludDY0X3QgY3VycmVudE1lc3NhZ2VCYXRjaElkZW50aWZpZXI7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVy
cy5lbnN1cmUoKytjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciwgW2RlbGl2ZXJ5Q2FsbGJh
Y2sgPSBXVEZNb3ZlKGRlbGl2ZXJ5Q2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUoZGVsaXZlcnlDYWxsYmFjayk7Ci0gICAgICAgIH0pOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotCi0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoV1RGTW92ZSht
ZXNzYWdlcyksIG1lc3NhZ2VzQ2FsbGJhY2tJZGVudGlmaWVyLCBjdXJyZW50TWVzc2FnZUJhdGNo
SWRlbnRpZmllciksIDApOwotICAgIH0pOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
RGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmll
cikKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRp
b25IYW5kbGVycy50YWtlKG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwotICAgIEFTU0VSVChjYWxs
YmFjayk7Ci0gICAgY2FsbGJhY2soKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBvc3RN
ZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCi17Ci0gICAgaWYgKFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkUG9zdE1lc3NhZ2VUb1JlbW90
ZShXVEZNb3ZlKG1lc3NhZ2UpLCBwb3J0KSkgewotICAgICAgICAvLyBMb29rIHVwIHRoZSBwcm9j
ZXNzIGZvciB0aGF0IHBvcnQKLSAgICAgICAgYXV0byogY2hhbm5lbCA9IFVJTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZXhpc3RpbmdDaGFubmVsQ29u
dGFpbmluZ1BvcnQocG9ydCk7Ci0gICAgICAgIEFTU0VSVChjaGFubmVsKTsKLSAgICAgICAgYXV0
byBwcm9jZXNzSWRlbnRpZmllciA9IGNoYW5uZWwtPnByb2Nlc3NGb3JQb3J0KHBvcnQpOwotICAg
ICAgICBpZiAocHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcigqcHJvY2Vzc0lkZW50
aWZpZXIpKQotICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChwb3J0KSwgMCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCwgdWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyKQotewotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnJlZ2lzdHJ5KCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocG9ydCwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJZGVudGlmaWVyXShNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIHsKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkoY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0eSA9PSBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6SGFzQWN0aXZpdHk6OlllcyksIDApOwotICAgIH0pOwotfQotCi12b2lkIFdlYlBy
b2Nlc3NQcm94eTo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCi17Ci0gICAgc3RhdGlj
IHVpbnQ2NF90IGN1cnJlbnRDYWxsYmFja0lkZW50aWZpZXI7Ci0gICAgYXV0byByZXN1bHQgPSBt
X2xvY2FsUG9ydEFjdGl2aXR5Q29tcGxldGlvbkhhbmRsZXJzLmVuc3VyZSgrK2N1cnJlbnRDYWxs
YmFja0lkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewotICAgICAgICByZXR1cm4gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAgfSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHBvcnQsIGN1cnJl
bnRDYWxsYmFja0lkZW50aWZpZXIpLCAwKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1f
bG9jYWxQb3J0QWN0aXZpdHlDb21wbGV0aW9uSGFuZGxlcnMudGFrZShjYWxsYmFja0lkZW50aWZp
ZXIpOwotICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhbGxiYWNr
KGlzTG9jYWxseVJlYWNoYWJsZSA/IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rp
dml0eTo6WWVzIDogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpObyk7
Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFdlYkNvcmU6
OlByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQogewogICAgIHByb2Nlc3NQ
b29sKCkuZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihkb21haW4sIHByZXdhcm1JbmZvcm1h
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhl
ZGY1MzA0MGZjMTViNDk1ZjE5NTRkMzZkMWVkMjY0M2UxYTk4MmUuLmJkYTA4NTk1NWY4ZTIxNTZj
YmQ4ZmI2ZDc4OGRhNjYwMTM5NWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KQEAgLTI0MSw4ICsyMzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFeGNl
ZWRBY3RpdmVNZW1vcnlMaW1pdCgpOwogICAgIHZvaWQgZGlkRXhjZWVkSW5hY3RpdmVNZW1vcnlM
aW1pdCgpOwogCi0gICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwot
CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbExvYWQoKSB7IG1faGFzQ29tbWl0dGVkQW55
UHJvdmlzaW9uYWxMb2FkcyA9IHRydWU7IH0KICAgICBib29sIGhhc0NvbW1pdHRlZEFueVByb3Zp
c2lvbmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFs
TG9hZHM7IH0KIApAQCAtMzQzLDE2ICszMzksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVB
ZGRlZFRvV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBzaG91bGRUZXJtaW5hdGUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIGNyZWF0ZU5ld01l
c3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHBv
cnQxLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQyKTsKLSAgICB2
b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlKTsKLSAgICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwotICAgIHZvaWQgbWVzc2FnZVBv
cnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7Ci0gICAgdm9p
ZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYsIHVpbnQ2NF90IG1lc3NhZ2VzQ2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBv
c3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBjaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBv
cnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRp
ZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpOwotCiAgICAgYm9vbCBoYXNQcm92aXNpb25h
bFBhZ2VXaXRoSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29u
c3Q7CiAKQEAgLTQ3OSwxMCArNDY1LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OwogI2VuZGlmCiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
cj4gbV9wcm9jZXNzRW50YW5nbGVkUG9ydHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rp
b248dm9pZCgpPj4gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVyczsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+PiBtX2xvY2FsUG9ydEFjdGl2aXR5
Q29tcGxldGlvbkhhbmRsZXJzOwotCiAgICAgdW5zaWduZWQgbV9zdXNwZW5kZWRQYWdlQ291bnQg
eyAwIH07CiAgICAgYm9vbCBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc1ByZXdhcm1lZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzMmJhZmVhOWUxMDk1OGMy
NWNkMTk0ZGExODQ1MzZhZDA5M2Y3NTJkLi5kNmQwNjM5ODU2MTRjNTI0MmFkMjI1ZjE4NTJmNWY4
Y2U0MDhiOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01NCwxNiArNTQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIE1lbW9yeVByZXNzdXJlU3RhdHVzQ2hhbmdl
ZChib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSkKICAgICBEaWRFeGNlZWRJbmFjdGl2ZU1lbW9y
eUxpbWl0V2hpbGVBY3RpdmUoKQogCi0gICAgQ3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCi0gICAgRW50YW5nbGVMb2NhbFBvcnRJblRo
aXNQcm9jZXNzVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBs
b2NhbCwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciByZW1vdGUpCi0gICAg
TWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBsb2NhbCkKLSAgICBNZXNzYWdlUG9ydENsb3NlZChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyIGxvY2FsKQotICAgIFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoc3RydWN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBtZXNzYWdlc0Nh
bGxiYWNrSWRlbnRpZmllcikKLSAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKHN0cnVjdCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkKLSAgICBDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShz
dHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllcikKLSAgICBEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRf
dCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQotICAgIERpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFj
aGFibGUpCi0KICAgICBEaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBw
cmV3YXJtSW5mb3JtYXRpb24pCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIzZDRmMDhjMmRkYzll
YzEzMWNiZjJlNDZiY2VjNzAwYWJhOWZlYTguLjUwZjc0NmEzODdjOGNjYjFlZGI2YTM3YTNjNTVm
MmFmOTcyNzE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzA5MCw2ICszMDkwLDggQEAKIAkJNDEwNDgyQ0IxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUlRDTmV0d29yay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTRBNzgyMzE2RUMzRjAwQjU2
MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTRBNzkyMzE2RUMzRjAwQjU2MDA3IC8q
IE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyODZFRjIxQzhBOTBDMDAzQTg1NTAg
LyogTWVkaWFDYXB0dXJlVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTEyODZGMDIxQzhBOTBEMDAzQTg1NTAgLyogTWVkaWFDYXB0dXJlVXRpbGl0aWVzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFDYXB0dXJlVXRpbGl0
aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NzQ4LDYgKzY3NTAsOCBAQAogCQkJCTQxMDNGQkExMjA2MUJEQjcwMEMyRUFG
OCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuaCAqLywKIAkJCQk4M0Q0NTRENjFCRTlEM0M0MDA2Qzkz
QkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCAqLywKIAkJCQk4MzkxNDk2MzFCRUE4Mzg1MDBEMkQ5
NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDExMTRBNzkyMzE2RUMzRjAw
QjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgKi8sCisJCQkJ
NDExMTRBNzgyMzE2RUMzRjAwQjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oICovLAogCQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vz
cy5jcHAgKi8sCiAJCQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNz
LmggKi8sCiAJCQkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGRhN2M5MTQxZWQz
OTlkZDIyYzFjM2E3YmZlZDcyMThhNzlkODhiMC4uODVhNGJkOWYzMmQ5MmY0MTgyMzQ4OWI1YjQz
ZmI2ZjA0ZWVjNWE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NhY2hlZFJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtMjg5LDYgKzI5MCwx
NiBAQCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdAogCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9
Ci0KICNlbmRpZgorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFp
bGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbWVzc2Fn
ZVBvcnRJZGVudGlmaWVyKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm1lc3NhZ2Vz
QXZhaWxhYmxlRm9yUG9ydChtZXNzYWdlUG9ydElkZW50aWZpZXIpOworfQorCit2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgY2FsbGJh
Y2soV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFj
aGFibGUobWVzc2FnZVBvcnRJZGVudGlmaWVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA2MjZkYWIxMWIyZGYyOTk0Y2FkYmE3NzNmOTI1
MTA4ZjFjNTc5YjU2Li44YjA4NmI0OWYzNjJlZTJkMjI1MzE5ODMyZjMxNDQ3Y2RmMDE2NWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDUsNiArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKK3N0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CitzdHJ1Y3Qg
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTMs
NiArOTUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50
NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
ICAgICB2b2lkIHNldE9uTGluZVN0YXRlKGJvb2wgaXNPbkxpbmUpOwogCisgICAgdm9pZCBjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIG1l
c3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImKTsKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycy4KICAgICB2b2lkIGRpZENhY2hlUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYsIFBBTDo6U2Vzc2lv
bklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3NDIw
ZjgyMTYxMzhlN2UxMDkwNWRmMWI0NjAyMDlmN2M1YzViZTc5Li41MTc3MTVmNTlhY2ZmNWExMDI1
NTJjMTc4YjNjN2JkZGQ2MGJjNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0yOSw0ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3Qg
cGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZEZpbmlzaFByZWNvbm5lY3Rpb24o
dWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IpCiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CisKKyAgICBDaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyIHBvcnQpIC0+IChib29sIGlzTG9jYWxseVJlYWNoYWJsZSkgQXN5bmMKKyAgICBNZXNz
YWdlc0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciBwb3J0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMzMyNzkzMzk1ZTBkOGM1NzFmZWEy
ODgxZjdiNzFmYTY2NWQwYWU5NC4uOTY1YWRhZDQzYTc1MzQwNDFkMzQxMmI2N2M4MDFiY2I1OGYz
YWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Rm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTEwOSw5
ICsxMTAsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZQogCiB2b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3Nh
Z2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZp
ZXIpCiB7Ci0gICAgLy8gRklYTUU6IFRlbXBvcmFyaWx5IHBpcGUgdGhlIFNXIHBvc3RNZXNzYWdl
IG1lc3NhZ2VzIHZpYSB0aGUgVUlQcm9jZXNzIHNpbmNlIHRoaXMgaXMgd2hlcmUgdGhlIE1lc3Nh
Z2VQb3J0IHJlZ2lzdHJ5IGxpdmVzCi0gICAgLy8gYW5kIHRoaXMgYXZvaWRzIHJhY2VzLgotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpQ
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDkyM2RiODAyOGRhN2IzZGZi
MmE5OTRlZDVhOTE2MTE3ZmM1MjQ4YTYuLmMxOWVhMWRmMmZiOGRlYzQwNDI0ZmFhMzYxOWY5Nzdh
NTkzNGUxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI4MCw5
ICsyODAsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWlu
YXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291
cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgLy8gRklY
TUU6IFRlbXBvcmFyaWx5IHBpcGUgdGhlIFNXIHBvc3RNZXNzYWdlIG1lc3NhZ2VzIHZpYSB0aGUg
VUlQcm9jZXNzIHNpbmNlIHRoaXMgaXMgd2hlcmUgdGhlIE1lc3NhZ2VQb3J0IHJlZ2lzdHJ5IGxp
dmVzCi0gICAgLy8gYW5kIHRoaXMgYXZvaWRzIHJhY2VzLgotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpQb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNv
dXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2Fn
ZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAppbmRleCA4
ZTYyMTZhNzcxNzgwN2VlY2NmYjdkNDU4NDg0N2Q3NTZkNzk0MGMzLi5iYTM1ZjdhNjM1YTBkNGVm
NmFkNWYwMTEwOTgwMTRlZDI3YTUyZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5jcHAKQEAgLTI2LDggKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2Fn
ZVBvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KQEAgLTUwLDY2ICs1MSw0
MyBAQCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6fldlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorc3RhdGljIGlubGlu
ZSBJUEM6OkNvbm5lY3Rpb24mIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0
dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKK30KKwogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydDEsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwocG9ydDEs
IHBvcnQyKSwgMCk7CisgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hh
bm5lbCB7IHBvcnQxLCBwb3J0MiB9LCAwKTsKIH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiByZW1vdGUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpFbnRhbmdsZUxvY2Fs
UG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShsb2NhbCwgcmVtb3RlKSwgMCk7CisgICAgbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlIHsgbG9jYWws
IHJlbW90ZSB9LCAwKTsKIH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6TWVzc2FnZVBvcnREaXNlbnRhbmds
ZWQocG9ydCksIDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpNZXNzYWdlUG9ydERpc2VudGFuZ2xl
ZCB7IHBvcnQgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Ok1lc3NhZ2VQb3J0Q2xvc2VkKHBvcnQpLCAw
KTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TWVzc2FnZVBvcnRDbG9zZWQgeyBwb3J0IH0sIDApOwog
fQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBzdGF0aWMgdWludDY0X3QgY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwotICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSArK2N1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKLQotICAgIEFT
U0VSVCghbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOwot
ICAgIG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlRha2VB
bGxNZXNzYWdlc0ZvclBvcnQocG9ydCwgaWRlbnRpZmllciksIDApOwotfQotCi12b2lkIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgdWludDY0X3QgbWVzc2FnZUNh
bGxiYWNrSWRlbnRpZmllciwgdWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0byBjYWxsYmFjayA9IG1fdGFrZUFs
bE1lc3NhZ2VzQ2FsbGJhY2tzLnRha2UobWVzc2FnZUNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAg
QVNTRVJUKGNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2VzKSwgW21lc3Nh
Z2VCYXRjaElkZW50aWZpZXJdIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpE
aWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyhtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKSwgMCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9v
bCBoYXNBY3Rpdml0eSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYXV0
byBjYWxsYmFjayA9IG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50
aWZpZXIpOwotICAgIEFTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2soaGFzQWN0aXZpdHkg
PyBIYXNBY3Rpdml0eTo6WWVzIDogSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpUYWtlQWxsTWVzc2FnZXNGb3JQb3J0IHsgcG9ydCB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIG1lc3NhZ2Vz
LCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShtZXNzYWdlcyksIFttZXNzYWdlQmF0Y2hJZGVudGlmaWVy
XSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVz
c2FnZXMgeyBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyIH0sIDApOworICAgICAgICB9KTsKKyAgICB9
LCAwKTsKIH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3Nh
Z2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpQb3N0TWVzc2FnZVRvUmVtb3RlKG1lc3NhZ2UsIHJlbW90ZVRhcmdldCks
IDApOwotfQotCi12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50
aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLXsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5IHsgY2FsbGJh
Y2tJZGVudGlmaWVyLCBNZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxseVJl
YWNoYWJsZShpZGVudGlmaWVyKSB9LCAwKTsKKyAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UG9zdE1lc3Nh
Z2VUb1JlbW90ZSB7IG1lc3NhZ2UsIHJlbW90ZVRhcmdldCB9LCAwKTsKIH0KIAogdm9pZCBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgUHJvY2Vzc0lkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKQpAQCAtMTIwLDE1ICs5OCw5IEBAIHZv
aWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IE1lc3NhCiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
c3RhdGljIHVpbnQ2NF90IGN1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBp
ZGVudGlmaWVyID0gKytjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7Ci0KLSAgICBBU1NFUlQoIW1f
cmVtb3RlQWN0aXZpdHlDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fcmVt
b3RlQWN0aXZpdHlDYWxsYmFja3Muc2V0KGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6Q2hlY2tSZW1vdGVQb3J0
Rm9yQWN0aXZpdHkocmVtb3RlVGFyZ2V0LCBpZGVudGlmaWVyKSwgMCk7CisgICAgbmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkgeyByZW1vdGVU
YXJnZXQgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGJvb2wgaGFzQWN0aXZpdHkpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlciho
YXNBY3Rpdml0eSA/IEhhc0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOworICAgIH0s
IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggZDA1MDY4NDgxYjQ5MTRmZmFhZWM4MTM0YWZlYjg3
NTM1ZGViN2I2ZS4uZTQ0OTk0ZTYwNWQ5NjYwN2FhNzBhODJkYjg5OGVlOTAxZTU2YWU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAgLTI2LDggKzI2
LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oPgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zNiwxMCArMzQs
NiBAQCBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcgogcHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIGRpZFRha2VB
bGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
PiYmIG1lc3NhZ2VzLCB1aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9y
dEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRDaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkpOwot
ICAgIAogcHJpdmF0ZToKICAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOwogICAg
IH5XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpIGZpbmFsOwpAQCAtNTIsMTMgKzQ2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0
eSk+JiYpIGZpbmFsOwogCi0gICAgLy8gVG8gYmUgY2FsbGVkIG9ubHkgaW4gdGhlIFVJIHByb2Nl
c3MKICAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7Ci0KLSAgICBMb2NrIG1fdGFrZUFsbE1l
c3NhZ2VzQ2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5j
dGlvbjx2b2lkKCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7Ci0gICAgTG9jayBt
X3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPj4gbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNr
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGUyNzlkNDRmNzZhODJkNWU5ZjUwOGZjZjBmZTRkOGFiNTBkYTlh
MTUuLmUzNTZhNGYwMzNlMTI0N2Y2MTQ2MGM4NjI3NGFmOWFiOTQzYzIwY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExMTEsMjEgKzExMTEsNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OmJhY2tncm91bmRSZXNwb25zaXZlbmVzc1BpbmcoKQogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkUmVj
ZWl2ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1BpbmcoKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6ZGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHM+JiYgbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCi17Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoV1RGTW92
ZShtZXNzYWdlcyksIG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VCYXRjaElkZW50
aWZpZXIpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgdWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyKQotewotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5jaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShwb3J0LCBjYWxsYmFja0lk
ZW50aWZpZXIpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmRpZENoZWNrUmVtb3RlUG9ydEZvckFj
dGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBoYXNBY3Rpdml0eSkKLXsK
LSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuZGlkQ2hlY2tS
ZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0eSk7Ci19
Ci0KIHZvaWQgV2ViUHJvY2Vzczo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBNZXNzYWdlUG9ydDo6bm90aWZ5
TWVzc2FnZUF2YWlsYWJsZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCmluZGV4IGU2YWYyYzkzOGMxZTQwNGMyMDZmNDM4NDI1MzVkODZlMjhjZDg3OGEuLmYz
Y2FmMzAzMmQwNjkzNWQ4MDMwN2U4YjY0ZGFmMjQ3NjZkOTM0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjg2LDYgKzI4Niw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdDsKIAorICAgIHZvaWQgbWVzc2FnZXNB
dmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwor
CiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKICAgICB+V2ViUHJvY2VzcygpOwpAQCAtMzU1
LDExICszNTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblRocmVhZFBpbmcoKTsKICAgICB2
b2lkIGJhY2tncm91bmRSZXNwb25zaXZlbmVzc1BpbmcoKTsKIAotICAgIHZvaWQgZGlkVGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYgbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIsIHVpbnQ2NF90
IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwotICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0
Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgdWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZENoZWNrUmVtb3RlUG9ydEZvckFj
dGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBoYXNBY3Rpdml0eSk7Ci0g
ICAgdm9pZCBtZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJik7Ci0KICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICB2b2lkIHNldEluaXRp
YWxHYW1lcGFkcyhjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+Jik7CiAgICAgdm9pZCBnYW1lcGFk
Q29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDU3YTI2NTYzNDVmYmU5ZDMzMGRmNjU1
ZTM1MmMzOWJlYTUyYjQ1ZDkuLjc1N2Y1OGE0YjA5MGRjYTcyMTZkNTNjZjg2MzkwNWZkNzExMDI2
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xMTUsMTEgKzExNSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAKLSAg
ICBEaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4gbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCi0gICAgRGlkQ2hlY2tSZW1vdGVQb3J0
Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIGhhc0FjdGl2aXR5
KQotICAgIENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCwgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQot
ICAgIE1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyIHBvcnQpCi0KICAgICBTZXRIYXNTdXNwZW5kZWRQYWdlUHJveHkoYm9vbCBoYXNT
dXNwZW5kZWRQYWdlUHJveHkpOwogICAgIFNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCBpc0luUHJv
Y2Vzc0NhY2hlKQogICAgIE1hcmtJc05vTG9uZ2VyUHJld2FybWVkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377969</attachid>
            <date>2019-09-04 03:46:12 -0700</date>
            <delta_ts>2019-09-04 05:46:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201299-20190904124610.patch</filename>
            <type>text/plain</type>
            <size>72181</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkNDg1NWFiZTJhYWM0Mjg2
ZWY4NTJjYjMzZTBlZTY1NzgzYzgyNGQuLjUwMTU3MzA4ZDA2MGY3NzNhNmE0N2VkNmNlMmUxZjM1
MDcwOWFiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDktMDQgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTWVzc2FnZVJlZ2lzdHJ5
IHRvIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2Vu
LgorCisgICAgICAgIE1vdmUgbWVzc2FnZSByZWdpc3RyeSB0byBOZXR3b3JrUHJvY2Vzcy4KKyAg
ICAgICAgVGFrZSBiZW5lZml0IG9mIHRoaXMgbW92ZSB0byB1c2UgYXN5bmMgcmVwbHkgSVBDIGFz
IG11Y2ggYXMgcG9zc2libGUuCisgICAgICAgIFRoaXMgYWxzbyBhbGxvd3MgdG8gcmVtb3ZlIHRo
ZSBJUEMgbWVzc2FnZSB0byBVSVByb2Nlc3Mgd2hlbiBkb2luZyBwb3N0TWVzc2FnZSB3aXRoIHNl
cnZpY2Ugd29ya2Vycy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnRhbmdsZUxvY2FsUG9ydEluVGhp
c1Byb2Nlc3NUb1JlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZXNzYWdlUG9ydENsb3NlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpuZXh0TWVzc2FnZUJhdGNo
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBvc3RNZXNzYWdl
VG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya01lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNz
YWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9tZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Ojp3ZWJQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om1lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6On5XZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnNodXREb3duKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJs
ZUZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNo
ZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5l
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjplbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9y
dENsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wMyAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBVbmFibGUgdG8gb3BlbiBsb2Nh
bCBmaWxlIGZyb20gZmF2b3JpdGVzIGJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IGNm
ZjNmMzU5NzUzYzgyYzJjYjZlNWM5NmYwY2ZjMTE2ZGU3OTM1YjYuLjY0YzAwYjI1YmU4MzU0NWJm
NjYwZmZkNDg3OGQwNzc4NjZhZTBiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAgLTY3
LDMgKzY3LDE1IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpIYXNBY3Rpdml0eSwKKyAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6Okhhc0FjdGl2aXR5OjpObywKKyAgICAgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpZZXMKKyAgICA+OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCA5OGNiMjU4NjQwMzFhNDdmMGE2ZjViMTlmZjhlMDBkNmNm
OTVhZjA5Li4yODExNWYyZjU2NGFlNTNlM2VkMGZhYmVmY2MwM2FkMTNlZDdhZGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TUROU1JlZ2lzdGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgpAQCAtNTMsNiArNTQsNyBAQAogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIldlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIgpAQCAtMTAyLDYgKzEwNCwxMCBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICAgICBSRUxFQVNFX0FTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKwor
ICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQorICAgICAgICBu
ZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNz
YWdlUG9ydChwb3J0KTsKKwogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlk
ZXIpCiAgICAgICAgIG1fcnRjUHJvdmlkZXItPmNsb3NlKCk7CkBAIC04ODcsNCArODkzLDgyIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbihQQUw6OlNlc3Npb25JRCBzCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpCit7CisgICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMuYWRkKHBvcnQxKTsKKyAgICBtX3By
b2Nlc3NFbnRhbmdsZWRQb3J0cy5hZGQocG9ydDIpOworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwocG9y
dDEsIHBvcnQyKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW50
YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpCit7Cisg
ICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMuYWRkKGxvY2FsKTsKKyAgICBuZXR3b3JrUHJvY2Vz
cygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkRW50YW5nbGVMb2NhbFRvUmVtb3Rl
KGxvY2FsLCByZW1vdGUsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgYXV0byogY2hh
bm5lbCA9IG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5leGlz
dGluZ0NoYW5uZWxDb250YWluaW5nUG9ydChsb2NhbCk7CisgICAgaWYgKGNoYW5uZWwgJiYgY2hh
bm5lbC0+aGFzQW55TWVzc2FnZXNQZW5kaW5nT3JJbkZsaWdodCgpKQorICAgICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpNZXNzYWdlc0F2
YWlsYWJsZUZvclBvcnQobG9jYWwpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBwb3J0KQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzRW50YW5nbGVkUG9y
dHMucmVtb3ZlKHBvcnQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisg
ICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmRpZERpc2Vu
dGFuZ2xlTWVzc2FnZVBvcnQocG9ydCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cG9ydCkKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKK30KKwordWludDY0X3QgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZv
aWQoKT4mJiBkZWxpdmVyeUNhbGxiYWNrKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50
TWVzc2FnZUJhdGNoSWRlbnRpZmllcjsKKyAgICBBU1NFUlQoIW1fbWVzc2FnZUJhdGNoRGVsaXZl
cnlDb21wbGV0aW9uSGFuZGxlcnMuY29udGFpbnMoY3VycmVudE1lc3NhZ2VCYXRjaElkZW50aWZp
ZXIgKyAxKSk7CisgICAgbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy5h
ZGQoKytjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciwgV1RGTW92ZShkZWxpdmVyeUNhbGxi
YWNrKSk7CisgICAgcmV0dXJuIGN1cnJlbnRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyOworfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJiBjYWxsYmFj
aykKK3sKKyAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCku
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgbWVzc2FnZXMs
IEZ1bmN0aW9uPHZvaWQoKT4mJiBkZWxpdmVyeUNhbGxiYWNrKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShtZXNzYWdlcyksIG5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKFdU
Rk1vdmUoZGVsaXZlcnlDYWxsYmFjaykpKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0
X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9tZXNz
YWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VCYXRjaElkZW50
aWZpZXIpOworICAgIEFTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2soKTsKK30KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydCkKK3sKKyAgICBpZiAobmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxS
ZWdpc3RyeSgpLmRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgcG9ydCkp
IHsKKyAgICAgICAgLy8gTG9vayB1cCB0aGUgcHJvY2VzcyBmb3IgdGhhdCBwb3J0CisgICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5KCkuZXhpc3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQocG9ydCk7CisgICAgICAgIEFTU0VS
VChjaGFubmVsKTsKKyAgICAgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNoYW5uZWwtPnBy
b2Nlc3NGb3JQb3J0KHBvcnQpOworICAgICAgICBpZiAocHJvY2Vzc0lkZW50aWZpZXIpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbmV0d29ya1Byb2Nl
c3MoKS53ZWJQcm9jZXNzQ29ubmVjdGlvbigqcHJvY2Vzc0lkZW50aWZpZXIpKQorICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChwb3J0
KSwgMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQoreworICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0
cnkoKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShwb3J0LCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNr
KGhhc0FjdGl2aXR5ID09IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6
WWVzKTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCit7CisgICAgY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpDaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSB7IHBvcnQgfSwgV1RGTW92ZShjYWxsYmFjayksIDAp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCBmYWQ4YjZlOTAyNTExMGQ2MjFhM2UwOWUyMjIyNTkyZDgxYjVhYjc5Li43MTRiMDliMDM5N2Zk
NTQ1ZmJkMjRmZTVlNmU1OTgzMWFmYmQ4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oIgogI2lu
Y2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgpAQCAtMTQ2LDYgKzE0OCw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQcm9j
ZXNzSWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0
eSk+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CiAKQEAgLTIwOCw2ICsyMTIsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgY3JlYXRlTmV3
TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpOworICAg
IHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGUpOworICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQo
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CisgICAgdm9pZCBtZXNzYWdl
UG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKyAgICB2
b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHM+JiYsIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
UmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3Nh
Z2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOworCiAjaWYgVVNFKExJQldFQlJU
QykKICAgICBOZXR3b3JrUlRDUHJvdmlkZXImIHJ0Y1Byb3ZpZGVyKCk7CiAjZW5kaWYKQEAgLTIz
Miw2ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiAKKyAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRlbnRpZmllcihGdW5jdGlv
bjx2b2lkKCk+JiYpOworCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
ciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0gZGVmYXVsdDsK
ICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAgLTMxMSw2ICszMjYsOSBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gbV9w
YXltZW50Q29vcmRpbmF0b3I7CiAjZW5kaWYKICAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworCisgICAgSGFzaFNldDxXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXI+IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzOworICAgIEhhc2hN
YXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fbWVzc2FnZUJhdGNoRGVsaXZlcnlDb21w
bGV0aW9uSGFuZGxlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQwZWZhMGIwYjJlMzUxZTE0NzE1
MDdmNjQ4MTQ2ODYyZjljZDRmYzAuLmVlOGY3MmQyMmY3OGFjYjQ4MDQzMDY3ZmQ5ZjYxOTY1YmMy
MWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
ODMsNCArODMsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikgU3luY2hyb25vdXMKICNlbmRpZgorCisgICAgQ3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVs
KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEsIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCisgICAgRW50YW5nbGVMb2NhbFBvcnRJ
blRoaXNQcm9jZXNzVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciBsb2NhbCwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciByZW1vdGUpCisg
ICAgTWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciBsb2NhbCkKKyAgICBNZXNzYWdlUG9ydENsb3NlZChzdHJ1Y3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyIGxvY2FsKQorICAgIFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoVmVjdG9yPFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBtZXNzYWdlcywgdWludDY0X3QgbWVzc2FnZUJh
dGNoSWRlbnRpZmllcikgQXN5bmMKKyAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkKKyAgICBDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0
eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChib29sIGhh
c0FjdGl2aXR5KSBBc3luYworICAgIERpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKHVpbnQ2
NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5NmMxMTY0NzM4YThkZDU5Y2YzNDAwOTA3YmIxOGIyMjk5
NWNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdvcmtNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6TmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1By
b2Nlc3MpCisgICAgLCBtX3JlZ2lzdHJ5KCp0aGlzKQoreworfQorCit2b2lkIE5ldHdvcmtNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7
CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRl
ci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3Rl
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBw
cm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBp
biB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xv
c2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0
aW9uPHZvaWQoKT4mJik+JiYpCit7CisgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0
aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1v
dGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImKQoreworICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nl
c3MgcHJvdmlkZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTmV0d29y
a01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0Fj
dGl2aXR5KT4mJikKK3sKKyAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBw
cm9jZXNzIHByb3ZpZGVyLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0
eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IG1fbmV0
d29ya1Byb2Nlc3Mud2ViUHJvY2Vzc0Nvbm5lY3Rpb24ocHJvY2Vzc0lkZW50aWZpZXIpOworICAg
IGlmICghY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihIYXNBY3Rpdml0
eTo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+Y2hlY2tQ
cm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5MmVlMGIzNGRhY2U5MGU1YWE0ZjY3MzEwNjUwMjJmMzRkZDZm
NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOwor
CitjbGFzcyBOZXR3b3JrTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5l
dHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihOZXR3b3JrUHJvY2VzcyYpOworICAgIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5JiByZWdpc3RyeSgpIHsgcmV0dXJuIG1f
cmVnaXN0cnk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hh
bm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CisgICAgdm9pZCBl
bnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXImIHJlbW90ZSkgZmluYWw7CisgICAgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xlZChj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKKyAgICB2
b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgp
PiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOworCisgICAgdm9pZCBjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2sp
IGZpbmFsOworICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKKworICAg
IE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fcmVnaXN0cnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggMmEzNjY2YjNlOTJmNTJmZjQ2MGQxMTFiNzUyZTJlNDRhYThhZjYwYy4uOGE3OWM0OWU0
MzA5Yzc1ZTRhNjZiM2M5MGI5NDE2ODM1N2ZlYzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzOSw2ICsxMzksNyBAQCBOZXR3
b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3dl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykg
eyBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRGaWxlcyksIDAp
OyB9KQogI2VuZGlmCisgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCp0aGlzKQog
ewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CiAK
QEAgLTI2OTMsNCArMjY5NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKK05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCA3ZjRiNWQyZTZlYzhlNGJjYjQ3MWVjZWVkNTkyMjRlZTkwY2NlNjYxLi42YTEwMDRi
NjQxZWZkZTQzYjRmY2ZiNDA2MmY1YTZkOTI1YmRlODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oIgorI2luY2x1ZGUgIk5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtMzQ2LDcgKzM0Nywx
MCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgY29uc3QgT3B0aW9uU2V0
PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlT3B0aW9uczsgfQotICAgIAorCisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSYgbWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkoKSB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LnJlZ2lzdHJ5KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gcGxhdGZv
cm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdDsKQEAgLTU2OSw2ICs1NzMsNyBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgUEFMOjpT
ZXNzaW9uSUQ+IG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbjsKIAogICAgIE9wdGlvblNldDxOZXR3b3Jr
Q2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0aW9uczsKKyAgICBOZXR3b3JrTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIgbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggNmEyM2FjNDhlZTIxMTJmNjhhYjU4YjFlYWFlNWRmYjJiYWJmY2VmNS4uNTZhY2I2
NWNjYWJjNTVlODM1NjA1NGNmNGMyMjYyOTI2NTlhYzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC00MzksNiArNDM5LDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdl
YkNvcmUvR3JhcGhpY3NMYXllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kJzogWyc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpM
b2NrQmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCisg
ICAgICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkn
OiBbJzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGEnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBh
c3RlYm9hcmRJbWFnZSc6IFsnPFdlYkNvcmUvUGFzdGVib2FyZC5oPiddLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggODEzNzg4MWJiNDFlZTdhOTc4M2JhZDg2NDQ1NzFkYTFmOTFmZDYyZC4uNzgxNGZhYWUzYTI2
MGIzODNmZDkxMGQxODBhYTg5ZDZjNDk5NGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMSw2ICszMSw3
IEBAIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorTmV0d29ya1By
b2Nlc3MvTmV0d29ya01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMjU1LDcgKzI1Niw2IEBAIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVx
dWVzdC5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9u
LmNwcAotVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5oCmluZGV4IGVkZDFiZmU4YjYxYTdh
MDYxZTgyZWE0ODY1YTIxYzQ3NjE5ZTMwYjcuLmRjMmY5MGQ5NTA3YjE5OWM4MDc1ODE2YzYwMWVm
OTllMjA3NjVkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZXh0TWVudUVsZW1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRleHRNZW51RWxlbWVudEluZm8uaApAQCAtMjcsOCArMjcsMTIgQEAKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKK09CSkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNE
aWN0aW9uYXJ5OworCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IG5hbWVzcGFjZSBBUEkgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggZGM1YWRmMWEzZTRiOTRhYTAxNGI0
MzBlZmE2NmRlMDlmOTVjYTdiYS4uOGM0MGM1MjU0NmZmZDA0YmExOWNhODcwZWNmMjg2ZDlmYjFk
NDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFy
eVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwM2M2YjY4MDNlNzFiMjMxMGVjMzkyYTBkNWQ0MGM4
ZmViZDc4ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCi0KLSNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciog
cHJvdmlkZXIgPSBuZXcgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKLSAgICByZXR1cm4g
KnByb3ZpZGVyOwotfQotCi1VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpVSU1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyKCkKLSAgICA6IG1fcmVnaXN0cnkoKnRoaXMpCi17Ci19Ci0KLVVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6On5VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKLXsKLSAgICAv
LyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCi17Ci0gICAg
Ly8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjptZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImKQotewotICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3Mg
cHJvdmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJikKLXsKLSAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBw
cm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCi17Ci0gICAg
Ly8gU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKLXsKLSAgICAvLyBTaG91bGQgbmV2ZXIg
YmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKQotewotICAgIC8vIFNob3VsZCBuZXZlciBi
ZSBjYWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
LCBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogcHJv
Y2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50
aWZpZXIpOwotICAgIGlmICghcHJvY2VzcykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihI
YXNBY3Rpdml0eTo6Tm8pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJvY2Vzcy0+
Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY3OWUzZWIwMjM0MDdmNTUxMzA0YzRjNTQ1NTk3ZWQy
ZWZkMzcwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJD
b3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwotICAgIFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5JiByZWdpc3RyeSgpIHsgcmV0dXJuIG1fcmVnaXN0cnk7
IH0KLQotcHJpdmF0ZToKLSAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7Ci0gICAg
flVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSBmaW5hbDsKLQotICAgIHZvaWQgY3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgbG9jYWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBm
aW5hbDsKLSAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKLSAgICB2b2lkIG1lc3NhZ2VQ
b3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9j
YWwpIGZpbmFsOwotICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2Fn
ZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
LCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9S
ZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7Ci0gICAgdm9p
ZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0
eSk+JiYgY2FsbGJhY2spIGZpbmFsOwotICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYm
KSBmaW5hbDsKLQotICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fcmVn
aXN0cnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDkzYmY1NWNlMDE0NmYxNWFmNjE3YmI3NGQ4MGM5YmJm
NTU5NzQ2NjkuLjhjZjRjNTVhNTNhNmIxNDU3Y2IxMzVkMjkxNGMyNDlhNzBlZmQ4MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODUsNyArODUsNiBAQAog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgog
I2luY2x1ZGUgIlRleHRJbnB1dENvbnRleHQuaCIKLSNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJVbmRvT3JSZWRvLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IDlkNWI5NjMxMmJkYjEwM2Y2Yzg3ZjExYzQxMTc0NGMyZDkzNjA0OWUuLjNlMTlmODlmMDg1
NGYxMDc4YmNiOTRmZDRiMGRkMDNlYTEyYzM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIxOTUsMTggKzIxOTUsNiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIHNl
bmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9u
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UsIHNvdXJjZU9yaWdpbikpOwotfQotCi12b2lkIFdl
YlByb2Nlc3NQb29sOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBj
b25zdCBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoZGVzdGluYXRpb24sIFdURk1vdmUobWVz
c2FnZSksIHNvdXJjZSwgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKLX0KLSNlbmRpZgotCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5l
dHdvcmtQcm9jZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCiB7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmlu
ZGV4IDA4NmUzODZhNmM3NzU0N2IwNmIxNzQ1YTQ2Mjk0MTJiNzhjMDViZjUuLjExZjIzOTEzYzI5
NDQ5MTAwMDkyMDc4Y2ZlY2I5MTY2OGE5MWMzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDcxLDExICs0NzEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3Rl
Y3Rpb25TcGFjZSYmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwg
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0jZW5kaWYKLQogICAgIHN0
YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcihGdW5jdGlv
bjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJQ
cm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KaW5k
ZXggZThiZTk2NTZiNTczYTBhZWRkZTY5OTJiMGM3NTM1ZmRhMGQ2NzhlOS4uZDNmN2VlOGM4NWRi
MjQzOTFjMTE0ZGM1ZWVkOTQ1YmRkOWQwODQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KQEAgLTM5LDkgKzM5LDQgQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2Vzc1Bvb2wgewogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgIENsZWFyV2ViUHJvY2Vz
c0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQotCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBt
ZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtl
ck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCi0jZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFmNjc0OGM5ZjczODE1Zjc2MDk4
NThmNTA5M2I5YjYwOWE2NTcyNjUuLjczNDBkYWMzYzQ5ZTg3MmVhNmY3NWQyZWJiMmMyMzI2ZTBl
YTljNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCi0jaW5j
bHVkZSAiVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIlVzZXJEYXRh
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3RvclV0aWxpdGllcy5oIgpAQCAtMTg2LDkgKzE4NSw2IEBAIFdlYlByb2Nlc3NQcm94eTo6
fldlYlByb2Nlc3NQcm94eSgpCiAgICAgd2hpbGUgKG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1p
bmF0aW9uV2FzRGlzYWJsZWQtLSA+IDApCiAgICAgICAgIFdlYkNvcmU6OmVuYWJsZVN1ZGRlblRl
cm1pbmF0aW9uKCk7CiAKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9sb2NhbFBvcnRBY3Rp
dml0eUNvbXBsZXRpb25IYW5kbGVycy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2soTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpObyk7Ci0KICNpZiBQTEFURk9STShN
QUMpCiAgICAgSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlcjo6c2luZ2xldG9uKCkucmVtb3ZlUHJv
Y2Vzc1JlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZSh0aGlzKTsKICNlbmRpZgpAQCAtMzQ1LDkgKzM0
MSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAKICAgICBtX3VzZXJJbml0
aWF0ZWRBY3Rpb25NYXAuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vz
c0VudGFuZ2xlZFBvcnRzKQotICAgICAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5yZWdpc3RyeSgpLmRpZENsb3NlTWVzc2FnZVBvcnQocG9ydCk7Ci0KICAgICBt
X3Byb2Nlc3NQb29sLT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIApAQCAtMTQxNyw5OCAr
MTQxMCw2IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9y
bVBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpCi17Ci0g
ICAgbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMuYWRkKHBvcnQxKTsKLSAgICBtX3Byb2Nlc3NFbnRh
bmdsZWRQb3J0cy5hZGQocG9ydDIpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkQ3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsKHBvcnQx
LCBwb3J0Mik7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbnRhbmdsZUxvY2FsUG9ydElu
VGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKLXsKLSAgICBtX3Byb2Nlc3NFbnRh
bmdsZWRQb3J0cy5hZGQobG9jYWwpOwotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkRW50YW5nbGVMb2NhbFRvUmVtb3RlKGxvY2FsLCBy
ZW1vdGUsIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLQotICAgIGF1dG8qIGNoYW5uZWwgPSBV
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3RyeSgpLmV4aXN0
aW5nQ2hhbm5lbENvbnRhaW5pbmdQb3J0KGxvY2FsKTsKLSAgICBpZiAoY2hhbm5lbCAmJiBjaGFu
bmVsLT5oYXNBbnlNZXNzYWdlc1BlbmRpbmdPckluRmxpZ2h0KCkpCi0gICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChsb2NhbCksIDApOwot
fQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQotewotICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9j
ZXNzRW50YW5nbGVkUG9ydHMucmVtb3ZlKHBvcnQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOwotCi0gICAgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkucmVnaXN0cnkoKS5kaWREaXNlbnRhbmdsZU1lc3NhZ2VQb3J0KHBvcnQpOwotfQotCi12b2lk
IFdlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBwb3J0KQotewotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiBwb3J0LCB1aW50NjRfdCBtZXNzYWdlc0NhbGxiYWNrSWRlbnRpZmllcikKLXsK
LSAgICBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3RyeSgp
LnRha2VBbGxNZXNzYWdlc0ZvclBvcnQocG9ydCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbWVzc2FnZXNDYWxsYmFja0lkZW50aWZpZXJdKFZlY3RvcjxNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIGRlbGl2ZXJ5Q2Fs
bGJhY2spIHsKLQotICAgICAgICBzdGF0aWMgdWludDY0X3QgY3VycmVudE1lc3NhZ2VCYXRjaElk
ZW50aWZpZXI7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNv
bXBsZXRpb25IYW5kbGVycy5lbnN1cmUoKytjdXJyZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciwg
W2RlbGl2ZXJ5Q2FsbGJhY2sgPSBXVEZNb3ZlKGRlbGl2ZXJ5Q2FsbGJhY2spXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoZGVsaXZlcnlDYWxsYmFjayk7Ci0gICAgICAg
IH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwot
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZFRha2VBbGxNZXNzYWdlc0Zv
clBvcnQoV1RGTW92ZShtZXNzYWdlcyksIG1lc3NhZ2VzQ2FsbGJhY2tJZGVudGlmaWVyLCBjdXJy
ZW50TWVzc2FnZUJhdGNoSWRlbnRpZmllciksIDApOwotICAgIH0pOwotfQotCi12b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2Fn
ZUJhdGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9tZXNzYWdlQmF0Y2hE
ZWxpdmVyeUNvbXBsZXRpb25IYW5kbGVycy50YWtlKG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwot
ICAgIEFTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2soKTsKLX0KLQotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBt
ZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCi17Ci0gICAgaWYgKFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkUG9z
dE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBwb3J0KSkgewotICAgICAgICAvLyBM
b29rIHVwIHRoZSBwcm9jZXNzIGZvciB0aGF0IHBvcnQKLSAgICAgICAgYXV0byogY2hhbm5lbCA9
IFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZXhp
c3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQocG9ydCk7Ci0gICAgICAgIEFTU0VSVChjaGFubmVs
KTsKLSAgICAgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGNoYW5uZWwtPnByb2Nlc3NGb3JQ
b3J0KHBvcnQpOwotICAgICAgICBpZiAocHJvY2Vzc0lkZW50aWZpZXIpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cigqcHJvY2Vzc0lkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6Ok1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChwb3J0KSwgMCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCwg
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQotewotICAgIFVJTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkocG9ydCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJ
ZGVudGlmaWVyXShNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0
aXZpdHkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQ2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkoY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0eSA9PSBNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6OlllcyksIDApOwotICAgIH0pOwot
fQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2sp
Ci17Ci0gICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRDYWxsYmFja0lkZW50aWZpZXI7Ci0gICAg
YXV0byByZXN1bHQgPSBtX2xvY2FsUG9ydEFjdGl2aXR5Q29tcGxldGlvbkhhbmRsZXJzLmVuc3Vy
ZSgrK2N1cnJlbnRDYWxsYmFja0lkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewotICAgICAgICByZXR1cm4gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAg
fSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2
aXR5KHBvcnQsIGN1cnJlbnRDYWxsYmFja0lkZW50aWZpZXIpLCAwKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpCi17Ci0gICAgYXV0
byBjYWxsYmFjayA9IG1fbG9jYWxQb3J0QWN0aXZpdHlDb21wbGV0aW9uSGFuZGxlcnMudGFrZShj
YWxsYmFja0lkZW50aWZpZXIpOwotICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsK
LQotICAgIGNhbGxiYWNrKGlzTG9jYWxseVJlYWNoYWJsZSA/IE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzIDogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5OjpObyk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDb2xsZWN0UHJl
d2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IGNvbnN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUluZm9ybWF0aW9uKQog
ewogICAgIHByb2Nlc3NQb29sKCkuZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihkb21haW4s
IHByZXdhcm1JbmZvcm1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDhlZGY1MzA0MGZjMTViNDk1ZjE5NTRkMzZkMWVkMjY0M2UxYTk4MmUuLmJk
YTA4NTk1NWY4ZTIxNTZjYmQ4ZmI2ZDc4OGRhNjYwMTM5NWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTI0MSw4ICsyMzksNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRFeGNlZWRBY3RpdmVNZW1vcnlMaW1pdCgpOwogICAgIHZvaWQgZGlkRXhjZWVk
SW5hY3RpdmVNZW1vcnlMaW1pdCgpOwogCi0gICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRG
b3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNB
Y3Rpdml0eSk+JiYpOwotCiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbExvYWQoKSB7IG1f
aGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcyA9IHRydWU7IH0KICAgICBib29sIGhhc0Nv
bW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NvbW1pdHRl
ZEFueVByb3Zpc2lvbmFsTG9hZHM7IH0KIApAQCAtMzQzLDE2ICszMzksNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2FuQmVBZGRlZFRvV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBz
aG91bGRUZXJtaW5hdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2
b2lkIGNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQxLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQyKTsKLSAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3Rl
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKTsKLSAgICB2b2lkIG1lc3NhZ2VQb3J0
RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwotICAg
IHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJik7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYsIHVpbnQ2NF90IG1lc3NhZ2VzQ2FsbGJhY2tJZGVudGlmaWVy
KTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJik7Ci0gICAg
dm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRE
ZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUpOwotCiAgICAgYm9v
bCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7
CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJikgY29uc3Q7CiAKQEAgLTQ3OSwxMCArNDY1LDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4gbV91c2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5OwogI2VuZGlmCiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllcj4gbV9wcm9jZXNzRW50YW5nbGVkUG9ydHM7Ci0gICAgSGFzaE1hcDx1
aW50NjRfdCwgRnVuY3Rpb248dm9pZCgpPj4gbV9tZXNzYWdlQmF0Y2hEZWxpdmVyeUNvbXBsZXRp
b25IYW5kbGVyczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+PiBtX2xv
Y2FsUG9ydEFjdGl2aXR5Q29tcGxldGlvbkhhbmRsZXJzOwotCiAgICAgdW5zaWduZWQgbV9zdXNw
ZW5kZWRQYWdlQ291bnQgeyAwIH07CiAgICAgYm9vbCBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lv
bmFsTG9hZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1ByZXdhcm1lZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAz
MmJhZmVhOWUxMDk1OGMyNWNkMTk0ZGExODQ1MzZhZDA5M2Y3NTJkLi5kNmQwNjM5ODU2MTRjNTI0
MmFkMjI1ZjE4NTJmNWY4Y2U0MDhiOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01NCwxNiArNTQsNiBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIE1lbW9yeVByZXNz
dXJlU3RhdHVzQ2hhbmdlZChib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSkKICAgICBEaWRFeGNl
ZWRJbmFjdGl2ZU1lbW9yeUxpbWl0V2hpbGVBY3RpdmUoKQogCi0gICAgQ3JlYXRlTmV3TWVzc2Fn
ZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEs
IHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCi0gICAgRW50YW5n
bGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciBsb2NhbCwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciByZW1vdGUpCi0gICAgTWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciBsb2NhbCkKLSAgICBNZXNzYWdlUG9ydENsb3NlZChzdHJ1Y3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIGxvY2FsKQotICAgIFRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50
NjRfdCBtZXNzYWdlc0NhbGxiYWNrSWRlbnRpZmllcikKLSAgICBQb3N0TWVzc2FnZVRvUmVtb3Rl
KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBzdHJ1Y3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHJlbW90ZSkKLSAgICBDaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLSAgICBEaWREZWxpdmVyTWVzc2FnZVBvcnRN
ZXNzYWdlcyh1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKQotICAgIERpZENoZWNrUHJv
Y2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9v
bCBpc0xvY2FsbHlSZWFjaGFibGUpCi0KICAgICBEaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RydWN0IFdlYkNvcmU6OlByZXdh
cm1JbmZvcm1hdGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGE3Mzc4NTAyYWFhNDc2MjU1NTczZWYwMDk2M2UxOTkwODUzYWY0MWMuLjQ2NzM2MDQwY2UxODgw
NzgxNTYyZWVmNDc0MWRiMTc1M2Q1ZjY1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzA5MSw2ICszMDkxLDggQEAKIAkJNDEwNDgy
Q0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUlRDTmV0d29yay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMTQzNjMyMEY2NzdCMTAwMjZGOTEyIC8qIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTRB
NzgyMzE2RUMzRjAwQjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMTRBNzkyMzE2
RUMzRjAwQjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyODZFRjIx
QzhBOTBDMDAzQTg1NTAgLyogTWVkaWFDYXB0dXJlVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEyODZGMDIxQzhBOTBEMDAzQTg1NTAgLyogTWVkaWFDYXB0dXJl
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFDYXB0dXJlVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEy
QjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzUzLDYgKzY3NTUsOCBAQAogCQkJCTQxMDNGQkEx
MjA2MUJEQjcwMEMyRUFGOCAvKiBOZXR3b3JrTG9hZENoZWNrZXIuaCAqLywKIAkJCQk4M0Q0NTRE
NjFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCAqLywKIAkJCQk4MzkxNDk2
MzFCRUE4Mzg1MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggKi8sCisJCQkJNDEx
MTRBNzkyMzE2RUMzRjAwQjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgKi8sCisJCQkJNDExMTRBNzgyMzE2RUMzRjAwQjU2MDA3IC8qIE5ldHdvcmtNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oICovLAogCQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzcy5jcHAgKi8sCiAJCQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzLmggKi8sCiAJCQkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGRhN2M5MTQxZWQzOTlkZDIyYzFjM2E3YmZlZDcyMThhNzlkODhiMC4uYmZjNWZkNjIwMWVj
ZmE5YTMzNzc1MGVkZWMyMTJlMjUzYjMyYTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZW1vcnlDYWNoZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApA
QCAtMjg5LDYgKzI5MCwxNiBAQCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdAogCiAgICAgcmV0dXJu
IGlkZW50aWZpZXI7CiB9Ci0KICNlbmRpZgorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLm1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChtZXNzYWdlUG9ydElkZW50aWZpZXIpOwor
fQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0
Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdl
UG9ydElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayhXZWJD
b3JlOjpNZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxseVJlYWNoYWJsZSht
ZXNzYWdlUG9ydElkZW50aWZpZXIpID8gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5OjpZZXMgOiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6Ok5v
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4
IDYyNmRhYjExYjJkZjI5OTRjYWRiYTc3M2Y5MjUxMDhmMWM1NzliNTYuLjAwNzFkYjFmNzZiNjBm
NjE1NWFlMDRhMzZiNjhkYjk0YmYxNjcxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJs
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ1LDYgKzQ2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
Oworc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTkzLDYgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5l
Y3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CiAgICAgdm9pZCBzZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKTsKIAorICAg
IHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKKyAgICB2b2lkIG1lc3Nh
Z2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
KTsKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICB2b2lkIGRpZENhY2hlUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYsIFBBTDo6U2Vzc2lvbklE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3NDIwZjgy
MTYxMzhlN2UxMDkwNWRmMWI0NjAyMDlmN2M1YzViZTc5Li42N2ZhNzk0NWQ5NDI0MGE0NGQwZDEx
NjA0MmZkMGQ5MGYwZTk2OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yOSw0ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGlu
Z0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZEZpbmlzaFByZWNvbm5lY3Rpb24odWlu
dDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IpCiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CisKKyAgICBDaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCisgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCmluZGV4IDMzMjc5MzM5NWUwZDhjNTcxZmVhMjg4MWY3YjcxZmE2NjVkMGFlOTQuLjk2
NWFkYWQ0M2E3NTM0MDQxZDM0MTJiNjdjODAxYmNiNThmM2FmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC0xMDksOSArMTEwLDcgQEAgdm9pZCBXZWJTV0Ns
aWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihT
ZXJ2aWNlV29ya2UKIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIEZJWE1FOiBU
ZW1wb3JhcmlseSBwaXBlIHRoZSBTVyBwb3N0TWVzc2FnZSBtZXNzYWdlcyB2aWEgdGhlIFVJUHJv
Y2VzcyBzaW5jZSB0aGlzIGlzIHdoZXJlIHRoZSBNZXNzYWdlUG9ydCByZWdpc3RyeSBsaXZlcwot
ICAgIC8vIGFuZCB0aGlzIGF2b2lkcyByYWNlcy4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIoZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlm
aWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSYgZGF0YSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA5MjNkYjgwMjhkYTdiM2RmYjJhOTk0ZWQ1YTkxNjExN2ZjNTI0OGE2
Li5jMTllYTFkZjJmYjhkZWM0MDQyNGZhYTM2MTlmOTc3YTU5MzRlMTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yODAsOSArMjgwLDcgQEAgdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcgogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIC8vIEZJWE1FOiBUZW1wb3JhcmlseSBwaXBlIHRo
ZSBTVyBwb3N0TWVzc2FnZSBtZXNzYWdlcyB2aWEgdGhlIFVJUHJvY2VzcyBzaW5jZSB0aGlzIGlz
IHdoZXJlIHRoZSBNZXNzYWdlUG9ydCByZWdpc3RyeSBsaXZlcwotICAgIC8vIGFuZCB0aGlzIGF2
b2lkcyByYWNlcy4KLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUG9vbDo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRp
b25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VP
cmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVz
dGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5kZXggOGU2MjE2YTc3MTc4MDdlZWNjZmI3ZDQ1
ODQ4NDdkNzU2ZDc5NDBjMy4uMGVjOTZlNWJmOGQ5ZTM5OTcwZGM3N2VmNzQxYWIwYzE3YjJmM2E1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBA
IC0yNiw4ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzLmg+CkBAIC01MCw2NiArNTEsNDMgQEAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6On5XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSVBDOjpDb25uZWN0aW9uJiBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisK
IHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0
Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQxLCBjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIHBvcnQyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
Q3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKHBvcnQxLCBwb3J0MiksIDApOworICAgIG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwgeyBwb3J0MSwgcG9ydDIgfSwg
MCk7CiB9CiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9j
YWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
bG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6RW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1v
dGUobG9jYWwsIHJlbW90ZSksIDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbnRhbmdsZUxvY2Fs
UG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZSB7IGxvY2FsLCByZW1vdGUgfSwgMCk7CiB9CiAKIHZv
aWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0RGlzZW50YW5nbGVk
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCkKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6Ok1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKHBvcnQpLCAwKTsKKyAgICBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6TWVzc2FnZVBvcnREaXNlbnRhbmdsZWQgeyBwb3J0IH0sIDApOwogfQogCiB2
b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpNZXNzYWdlUG9ydENsb3NlZChwb3J0KSwgMCk7CisgICAgbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Ok1lc3NhZ2VQb3J0Q2xvc2VkIHsgcG9ydCB9LCAwKTsKIH0KIAogdm9pZCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIHVpbnQ2NF90
IGN1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gKytj
dXJyZW50SGFuZGxlcklkZW50aWZpZXI7Ci0KLSAgICBBU1NFUlQoIW1fdGFrZUFsbE1lc3NhZ2Vz
Q2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX3Rha2VBbGxNZXNzYWdlc0Nh
bGxiYWNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KHBvcnQs
IGlkZW50aWZpZXIpLCAwKTsKLX0KLQotdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6ZGlkVGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM+JiYgbWVzc2FnZXMsIHVpbnQ2NF90IG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGF1dG8gY2FsbGJhY2sgPSBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy50YWtl
KG1lc3NhZ2VDYWxsYmFja0lkZW50aWZpZXIpOwotICAgIEFTU0VSVChjYWxsYmFjayk7Ci0gICAg
Y2FsbGJhY2soV1RGTW92ZShtZXNzYWdlcyksIFttZXNzYWdlQmF0Y2hJZGVudGlmaWVyXSB7Ci0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVz
c2FnZXMobWVzc2FnZUJhdGNoSWRlbnRpZmllciksIDApOwotICAgIH0pOwotfQotCi12b2lkIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0
eSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkpCi17Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGF1dG8gY2FsbGJhY2sgPSBtX3JlbW90ZUFj
dGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoY2Fs
bGJhY2spOwotICAgIGNhbGxiYWNrKGhhc0FjdGl2aXR5ID8gSGFzQWN0aXZpdHk6OlllcyA6IEhh
c0FjdGl2aXR5OjpObyk7CisgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydCB7IHBvcnQgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBtZXNzYWdlcywgdWludDY0X3QgbWVzc2FnZUJhdGNo
SWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
bWVzc2FnZXMpLCBbbWVzc2FnZUJhdGNoSWRlbnRpZmllcl0geworICAgICAgICAgICAgbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzIHsgbWVzc2FnZUJhdGNoSWRl
bnRpZmllciB9LCAwKTsKKyAgICAgICAgfSk7CisgICAgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UG9zdE1lc3Nh
Z2VUb1JlbW90ZShtZXNzYWdlLCByZW1vdGVUYXJnZXQpLCAwKTsKLX0KLQotdm9pZCBXZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDaGVja1By
b2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSB7IGNhbGxiYWNrSWRlbnRpZmllciwgTWVzc2FnZVBv
cnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUoaWRlbnRpZmllcikgfSwg
MCk7CisgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBvc3RNZXNzYWdlVG9SZW1vdGUgeyBtZXNzYWdlLCBy
ZW1vdGVUYXJnZXQgfSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIFByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0Fj
dGl2aXR5KT4mJikKQEAgLTEyMCwxNSArOTgsOSBAQCB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYQog
CiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50
SGFuZGxlcklkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgaWRlbnRpZmllciA9ICsrY3VycmVudEhh
bmRsZXJJZGVudGlmaWVyOwotCi0gICAgQVNTRVJUKCFtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLnNl
dChpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0KLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHJlbW90ZVRhcmdl
dCwgaWRlbnRpZmllciksIDApOworICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5IHsgcmVtb3RlVGFyZ2V0IH0sIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGhhc0FjdGl2aXR5KSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzQWN0aXZpdHkgPyBIYXNBY3Rpdml0
eTo6WWVzIDogSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICB9LCAwKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmlu
ZGV4IGQwNTA2ODQ4MWI0OTE0ZmZhYWVjODEzNGFmZWI4NzUzNWRlYjdiNmUuLmU0NDk5NGU2MDVk
OTY2MDdhYTcwYTgyZGI4OThlZTkwMWU1NmFlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0yNiw4ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzYsMTAgKzM0LDYgQEAgY2xhc3MgV2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIm
IHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFZlY3Rv
cjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgdWludDY0X3Qg
bWVzc2FnZUNhbGxiYWNrSWRlbnRpZmllciwgdWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmll
cik7Ci0gICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIp
OwotICAgIHZvaWQgZGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLCBib29sIGhhc0FjdGl2aXR5KTsKLSAgICAKIHByaXZhdGU6CiAgICAgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKICAgICB+V2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIoKSBmaW5hbDsKQEAgLTUyLDEzICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
b3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZp
bmFsOwogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKIAotICAgIC8v
IFRvIGJlIGNhbGxlZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzCiAgICAgdm9pZCBjaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJl
bW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJh
Y2spIGZpbmFsOwotCi0gICAgTG9jayBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrTG9jazsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4+IG1fdGFr
ZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzOwotICAgIExvY2sgbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNr
TG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0Fj
dGl2aXR5KT4+IG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjY2I1
MjdkYTdiYWFkOTgyN2VhMmI5MzFmMDNiYjIzYzNiOGQ4YTA3Li4yZTdiYzI3NDI4YWYwYjUyYWUw
Njc5YThiYmZiMWQ0M2E2NzQyYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC0xMTExLDIxICsxMTExLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpiYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NQaW5nKCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NQaW5nKCksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZFRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50
NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVu
dGlmaWVyKQotewotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5kaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFdURk1vdmUobWVzc2FnZXMpLCBtZXNzYWdlQ2Fs
bGJhY2tJZGVudGlmaWVyLCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLXsKLSAgICBX
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkuY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkocG9ydCwgY2FsbGJhY2tJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzOjpkaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkpCi17Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNh
bGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHkpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6Om1l
c3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50
aWZpZXIpCiB7CiAgICAgTWVzc2FnZVBvcnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUoaWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlNmFmMmM5Mzhj
MWU0MDRjMjA2ZjQzODQyNTM1ZDg2ZTI4Y2Q4NzhhLi5mM2NhZjMwMzJkMDY5MzVkODAzMDdlOGI2
NGRhZjI0NzY2ZDkzNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTI4Niw2ICsyODYsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGFyZUFsbFBhZ2VzVGhyb3R0bGVh
YmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIG1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzKCk7CiAgICAgfldlYlByb2Nlc3MoKTsKQEAgLTM1NSwxMSArMzU3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1haW5UaHJlYWRQaW5nKCk7CiAgICAgdm9pZCBiYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NQaW5nKCk7CiAKLSAgICB2b2lkIGRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9y
PFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCB1aW50NjRfdCBt
ZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7
Ci0gICAgdm9pZCBkaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIGJvb2wgaGFzQWN0aXZpdHkpOwotICAgIHZvaWQgbWVzc2FnZXNBdmFpbGFi
bGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYpOwotCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCiAgICAgdm9pZCBzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9y
PEdhbWVwYWREYXRhPiYpOwogICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFk
RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCA1N2EyNjU2MzQ1ZmJlOWQzMzBkZjY1NWUzNTJjMzliZWE1MmI0NWQ5Li43NTdm
NThhNGIwOTBkY2E3MjE2ZDUzY2Y4NjM5MDVmZDcxMTAyNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTE1LDExICsxMTUsNiBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRzKCkKICNlbmRpZgogCi0gICAgRGlkVGFrZUFsbE1lc3NhZ2VzRm9y
UG9ydChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+IG1lc3NhZ2VzLCB1
aW50NjRfdCBtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyLCB1aW50NjRfdCBtZXNzYWdlQmF0Y2hJ
ZGVudGlmaWVyKQotICAgIERpZENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgYm9vbCBoYXNBY3Rpdml0eSkKLSAgICBDaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBv
cnQsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKLSAgICBNZXNzYWdlc0F2YWlsYWJsZUZv
clBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQotCiAgICAg
U2V0SGFzU3VzcGVuZGVkUGFnZVByb3h5KGJvb2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5KTsKICAg
ICBTZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgaXNJblByb2Nlc3NDYWNoZSkKICAgICBNYXJrSXNO
b0xvbmdlclByZXdhcm1lZCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>