<?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>160404</bug_id>
          
          <creation_ts>2016-08-01 07:48:20 -0700</creation_ts>
          <short_desc>[Fetch API] Add support to ReferrerPolicy</short_desc>
          <delta_ts>2017-03-24 11:04:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=170061</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151937</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216104</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 07:48:20 -0700</bug_when>
    <thetext>[Fetch API] Add support to ReferrerPolicy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216106</commentid>
    <comment_count>1</comment_count>
      <attachid>285012</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 08:13:42 -0700</bug_when>
    <thetext>Created attachment 285012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216108</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 08:15:31 -0700</bug_when>
    <thetext>Attachment 285012 did not pass style-queue:


ERROR: Source/WebCore/loader/ThreadableLoaderClientWrapper.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216353</commentid>
    <comment_count>3</comment_count>
      <attachid>285012</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-01 19:18:18 -0700</bug_when>
    <thetext>Comment on attachment 285012
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:298
&gt; +    if (m_internalRequest.referrer != &quot;no-referrer&quot; &amp;&amp; m_internalRequest.referrer != &quot;client&quot;)

It seems like a case-sensitive check is correct in this case.  Could you add a test that tests No-Referrer and Client?
Could we use enum values instead of doing several string comparisons here?

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:84
&gt;      ASSERT(client);
&gt; +    ASSERT(scriptExecutionContext);

We should come back later and make all these references instead of pointers at the callers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216408</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 23:49:19 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #3)
&gt; Comment on attachment 285012 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285012&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:298
&gt; &gt; +    if (m_internalRequest.referrer != &quot;no-referrer&quot; &amp;&amp; m_internalRequest.referrer != &quot;client&quot;)
&gt; 
&gt; It seems like a case-sensitive check is correct in this case.  Could you add
&gt; a test that tests No-Referrer and Client?
&gt; Could we use enum values instead of doing several string comparisons here?

I will add a FIXME.
I do not like the current handling of referrer.
Although convenient, it is odd to pass it in the headers as it only serves to compute the actual value in CachedResource.
I would much prefer to pass it as a field in a structure like CachedResourceRequest for instance. The same applies to Origin.


&gt; &gt; Source/WebCore/workers/WorkerScriptLoader.cpp:84
&gt; &gt;      ASSERT(client);
&gt; &gt; +    ASSERT(scriptExecutionContext);
&gt; 
&gt; We should come back later and make all these references instead of pointers
&gt; at the callers.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216409</commentid>
    <comment_count>5</comment_count>
      <attachid>285078</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 23:51:45 -0700</bug_when>
    <thetext>Created attachment 285078
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216410</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 23:54:34 -0700</bug_when>
    <thetext>Attachment 285078 did not pass style-queue:


ERROR: Source/WebCore/loader/ThreadableLoaderClientWrapper.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216417</commentid>
    <comment_count>7</comment_count>
      <attachid>285078</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-02 00:21:42 -0700</bug_when>
    <thetext>Comment on attachment 285078
Patch for landing

Clearing flags on attachment: 285078

Committed r204019: &lt;http://trac.webkit.org/changeset/204019&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216418</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-02 00:21:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216419</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-02 00:25:34 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216420</commentid>
    <comment_count>10</comment_count>
      <attachid>285080</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-02 00:25:41 -0700</bug_when>
    <thetext>Created attachment 285080
Patch for landing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285012</attachid>
            <date>2016-08-01 08:13:42 -0700</date>
            <delta_ts>2016-08-01 23:51:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160404-20160801171221.patch</filename>
            <type>text/plain</type>
            <size>52228</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhlMzNlZWU1ZGFmNWVl
NzZhMTIzNjNiMmUzNDE4OWYwY2QzZGY3My4uZTU0NWUxMGI0MTJhYTU3NDZmY2MxMDA0OGE1NGUx
ODgyNjMwODYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTA4LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCB0byBSZWZlcnJlclBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLXdvcmtlci5odG1sCisgICAgICAgICAgICAgICBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci5odG1s
CisKKyAgICAgICAgUmVmYWN0b3JlZCBUaHJlYWRhYmxlTG9hZGVyIEFQSSB0byB0YWtlIG1vcmUg
cmVmZXJlbmNlcy4KKworICAgICAgICBVcGRhdGVkIGxvYWRpbmcgY29kZSBpbiBDYWNoZWRSZXNv
dXJjZSB0byB0YWtlIGludG8gYWNjb3VudCByZWZlcnJlciBwb2xpY3ksIHRoYXQgY2FuIGJlIHNl
dCBieSBmZXRjaCBBUEkuCisgICAgICAgIFRvIGVuYWJsZSBjb3JyZWN0IGhhbmRsaW5nIG9mIE9y
aWdpbldoZW5Dcm9zc09yaWdpbiBwb2xpY3ksIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgY3Jvc3Mt
b3JpZ2luIHN0YXR1cyBvZiBhIHJlcXVlc3QgaXMKKyAgICAgICAgbW92ZWQgZnJvbSBSZXNvdXJj
ZUxvYWRlciB0byBDYWNoZWRSZXNvdXJjZS4KKworICAgICAgICBSZWZlcnJlciBpcyBwYXNzZWQg
dG8gdGhlIGxvYWRpbmcgY29kZSB0aHJvdWdoIEhUVFAgaGVhZGVycy4KKyAgICAgICAgVGhpcyB3
YXMgdHJpZ2dlcmluZyBwcmVmbGlnaHRpbmcgZm9yIFdvcmtlcnMgcmVxdWVzdCBhcyBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyIHdhcyBzZXR0aW5nIHRoZSByZWZlcnJlci4KKyAgICAgICAgSXQgaXMg
bm93IGRvbmUgaW4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCBzbyB0aGF0
IHByZWZsaWdodGluZyBpcyBkb25lIGJlZm9yZSBzZXR0aW5nIHRoZSByZWZlcnJlci4KKyAgICAg
ICAgTm90ZSB0aGF0IHRoaXMgcmVmZXJyZXIgc2V0dGluZyBpcyBvbmx5IGEgd2F5IHRvIHBhc3Mg
YSBzcGVjaWZpYyByZWZlcnJlciB2YWx1ZSB0byB0aGUgbG9hZGluZyBjb2RlLgorICAgICAgICBD
YWNoZWRSZXNvdXJjZSBjb2RlIHdpbGwgY29tcHV0ZSB0aGUgYWN0dWFsIHJlZmVyZXIgdmFsdWUg
YmFzZWQgb24gdGhlIHJlZmVycmVyIHBvbGljeS4KKyAgICAgICAgSXQgbWlnaHQgYmUgZ29vZCBp
biB0aGUgZnV0dXJlIHRvIGhhdmUgYSBkaWZmZXJlbnQgd2F5IG9mIGNvbnZleWluZyB0aGlzIGlu
Zm9ybWF0aW9uIHRvIENhY2hlZFJlc291cmNlLCBtYXliZQorICAgICAgICB0aHJvdWdoIENhY2hl
ZFJlc291cmNlUmVxdWVzdC4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0KTogUmVmYWN0b3Jpbmcg
b2YgVGhyZWFkYWJsZUxvYWRlciBBUEkuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjppbnRlcm5hbFJlcXVl
c3QpOiBTZXR0aW5nIHJlZmVycmVyIGlmIGl0IGhhcyBhIHNwZWNpZmljIHZhbHVlLgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
UmVhZGVyTG9hZGVyOjpzdGFydCk6IFJhY3RvcmluZyBvZiBUaHJlYWRhYmxlTG9hZGVyIEFQSS4K
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQcmVmbGlnaHQp
OiBTZXQgcmVmZXJyZXIgaW4gdGhlIHByZWZsaWdodCByZXF1ZXN0IGlmIGFueS4KKyAgICAgICAg
KFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOiBEaXR0
by4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6IFJlZmFjdG9yaW5nIG9mIFRocmVhZGFibGVMb2FkZXIgQVBJLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpyZWZlcnJlcik6IFN0b3JpbmcgcmVmZXJyZXIgaW4gY2FzZSBvbmUgaXMgZGVmaW5lZC4KKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOiBSZW1vdmluZyBvZiBjcm9zcyBvcmlnaW4gY29tcHV0
YXRpb24gc2luY2UgaXQgaXMgZG9uZSBlYXJsaWVyIGluIENhY2hlZFJlc291cmNlLgorICAgICAg
ICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZSk6IFJlZmFjdG9yaW5nIG9mIFRocmVhZGFibGVMb2FkZXIgQVBJ
LgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6VGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXIpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KTogUmVt
b3Zpbmcgc2V0dGluZyBvZiByZWZlcnJlciBpbiBoZWFkZXIgYW5kIHBhc3NpbmcKKyAgICAgICAg
aXQgYXMgYSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKTogRGl0dG8uCisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6IFJlZmFjdG9yaW5nIG9mIFRocmVhZGFibGVM
b2FkZXIgQVBJLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3QpOiBD
b21wdXRhdGlvbiBvZiByZWZlcnJlciBiYXNlZCBvbiByZWZlcnJlciBwb2xpY3kuCisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6IENvbXB1dGF0
aW9uIG9mIGNyb3NzIG9yaWdpbiBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dmFyeUhlYWRlclZhbHVlc01hdGNoKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpvcHRpb25z
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50U291cmNlOjpjb25uZWN0KTogUmVmYWN0b3Jpbmcgb2YgVGhyZWFkYWJsZUxvYWRlciBBUEku
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOiBE
aXR0by4KKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOiBEaXR0by4KKwogMjAxNi0wOC0wMSAg
RnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEg
UmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3IgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggNzdjYWZkMDMwNjEyZDE3NTYwMzM1YzYyOTY5
NWNlN2M1NDdjYjUzZC4uNzU4ZTVjMTc5N2I3YTIyMWVkMDA1MmM1N2Y2OGU1ZmVkOTcwN2VjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgQmxvYiYgYmxvYikKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6
Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudCA9IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2U7
CiAKLSAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgmY29udGV4dCwgdGhp
cywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CisgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMp
OwogICAgIG1faXNTdGFydGVkID0gbV9sb2FkZXI7CiB9CiAKQEAgLTg0LDggKzg0LDkgQEAgdm9p
ZCBGZXRjaExvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmV0Y2hSZXF1ZXN0JiByZXEKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gcmVxdWVzdC5mZXRj
aE9wdGlvbnMoKS5yZWRpcmVjdDsKICAgICBvcHRpb25zLm1vZGUgPSByZXF1ZXN0LmZldGNoT3B0
aW9ucygpLm1vZGU7CiAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IHJlcXVlc3QuZmV0Y2hPcHRp
b25zKCkuY3JlZGVudGlhbHM7CisgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlcXVlc3Qu
ZmV0Y2hPcHRpb25zKCkucmVmZXJyZXJQb2xpY3k7CiAKLSAgICBtX2xvYWRlciA9IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZSgmY29udGV4dCwgdGhpcywgcmVxdWVzdC5pbnRlcm5hbFJlcXVlc3Qo
KSwgb3B0aW9ucyk7CisgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoY29u
dGV4dCwgKnRoaXMsIHJlcXVlc3QuaW50ZXJuYWxSZXF1ZXN0KCksIG9wdGlvbnMpOwogICAgIG1f
aXNTdGFydGVkID0gbV9sb2FkZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAxZTRhOTM2ODg0Zjg5NDNmYmM3OTY1MDc2ZWZiZmNj
MzNiNjZiY2VmLi5kYWU3MjJlOGQ3MDY1YTkxMTM2MzRiYzEzOTE4MzdmYTg4OTliYWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yOTQs
NiArMjk0LDEwIEBAIFJlc291cmNlUmVxdWVzdCBGZXRjaFJlcXVlc3Q6OmludGVybmFsUmVxdWVz
dCgpIGNvbnN0CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2ludGVybmFsUmVxdWVz
dC5yZXF1ZXN0OwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhtX2hlYWRlcnMtPmlu
dGVybmFsSGVhZGVycygpKTsKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGJvZHkoKS5ib2R5Rm9y
SW50ZXJuYWxSZXF1ZXN0KCkpOworCisgICAgaWYgKG1faW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVy
ICE9ICJuby1yZWZlcnJlciIgJiYgbV9pbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgIT0gImNsaWVu
dCIpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1faW50ZXJuYWxSZXF1ZXN0LnJl
ZmVycmVyKTsKKwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBhZTY4MWU1ZDI1MDNiZTIzMTQzNTEyOGZh
NDJmNGZhMzlmYWYwODc2Li4zMjRkNGM2ZWUyZmE4NzMxNDFiMmQ1MWQ4ZTViMDcwNGM3YWE1NTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTcz
LDYgKzczLDggQEAgRmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogCiB2b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEJsb2ImIGJsb2IpCiB7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworCiAgICAgLy8gVGhlIGJsb2IgaXMgcmVhZCBieSByb3V0aW5nIHRocm91Z2gg
dGhlIHJlcXVlc3QgaGFuZGxpbmcgbGF5ZXIgZ2l2ZW4gYSB0ZW1wb3JhcnkgcHVibGljIHVybC4K
ICAgICBtX3VybEZvclJlYWRpbmcgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKG1fdXJsRm9yUmVhZGlu
Zy5pc0VtcHR5KCkpIHsKQEAgLTk1LDkgKzk3LDkgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpz
dGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8K
ICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gQ29udGVudFNl
Y3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZTsKIAogICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CisgICAgICAg
IG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAgICAg
ICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICAgICAg
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCiB2b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDc4Y2I3NGYwMzc3ZGQx
MWU4M2E2YzhiNDYwZTVjZWYyYmEwNzY2MDIuLjYwMzg2YTllMjQyY2Y1NWE5MWRlOTk0MmRlNGQy
YjFhMTQxMzJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMTUsNiArMTE1LDkgQEAgdm9pZCBDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkK
ICAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRJbml0aWF0b3IobV9sb2FkZXIub3B0aW9ucygp
LmluaXRpYXRvcik7CiAKKyAgICBpZiAoIW1fbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkpCisg
ICAgICAgIHByZWZsaWdodFJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBS
ZWZlcnJlcihtX2xvYWRlci5yZWZlcnJlcigpKTsKKwogICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7
CiAgICAgbV9yZXNvdXJjZSA9IG1fbG9hZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UocHJlZmxpZ2h0UmVxdWVzdCk7CiAgICAgaWYgKG1fcmVz
b3VyY2UpCkBAIC0xMzAsNiArMTMzLDEwIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKworICAgIGlmICghbG9hZGVyLnJlZmVycmVyKCku
aXNOdWxsKCkpCisgICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRl
ci5yZWZlcnJlcigpKTsKKwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1l
bnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdo
dFJlcXVlc3QsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0
YSk7CiAKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgd2h5IGNoZWNraW5nIGZvciByZXNwb25z
ZSBodHRwU3RhdHVzQ29kZSBoZXJlLiBJbiBwYXJ0aWN1bGFyLCBjYW4gd2UgaGF2ZSBhIG5vdC1u
dWxsIGVycm9yIGFuZCBhIDJYWCByZXNwb25zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNGI3MmFmNzNmZjdhYjdmMTc0
MWMzOWVmZWIwZmUyOWVmMjljMmY0Yy4uYWFkYTE1ZmUwYTA3NWQxNjVhMTFlYTNhYTFkNjEzY2Uz
NTZjNzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKICAgICAvLyBUaGUg
bG9hZGVyIHdpbGwgYmUgZGVsZXRlZCBhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gZXhpdHMuCi0g
ICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkU3luY2hyb25v
dXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3Zl
KGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKKyAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPiBsb2FkZXIgPSBhZG9wdFJlZigqbmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1
bWVudCwgY2xpZW50LCBMb2FkU3luY2hyb25vdXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksIFN0cmlu
ZygpKSk7CiAgICAgQVNTRVJUKGxvYWRlci0+aGFzT25lUmVmKCkpOwogfQogCkBAIC02OCw5ICs2
OCw5IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgUmVzCiAgICAgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zLCBudWxscHRy
LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYg
b3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSkKK1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIG9y
aWdpbiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyKQogewotICAgIFJlZlB0cjxEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZEFzeW5jaHJvbm91c2x5LCBXVEZNb3ZlKHJlcXVl
c3QpLCBvcHRpb25zLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9s
aWN5KSkpOworICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFk
b3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9h
ZEFzeW5jaHJvbm91c2x5LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlcikpKTsK
ICAgICBpZiAoIWxvYWRlci0+aXNMb2FkaW5nKCkpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7
CiAgICAgcmV0dXJuIGxvYWRlcjsKQEAgLTc4LDE0ICs3OCwxNSBAQCBSZWZQdHI8RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdQogCiBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwg
Y2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gY3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIG51bGxwdHIsIG51bGxwdHIsIFN0cmluZygpKTsKIH0KIAotRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIEJsb2NraW5nQmVoYXZpb3IgYmxvY2tpbmdCZWhh
dmlvciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYgY29udGVudFNlY3VyaXR5UG9saWN5KQor
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIEJsb2NraW5nQmVo
YXZpb3IgYmxvY2tpbmdCZWhhdmlvciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
JiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlcikKICAgICA6IG1fY2xpZW50KCZjbGll
bnQpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMp
CiAgICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3JlZmVycmVyKFdURk1v
dmUocmVmZXJyZXIpKQogICAgICwgbV9zYW1lT3JpZ2luUmVxdWVzdChzZWN1cml0eU9yaWdpbigp
LmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCiAgICAgLCBtX3NpbXBsZVJlcXVlc3QodHJ1ZSkK
ICAgICAsIG1fYXN5bmMoYmxvY2tpbmdCZWhhdmlvciA9PSBMb2FkQXN5bmNocm9ub3VzbHkpCkBA
IC0zNjEsNiArMzYyLDkgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBBU1NFUlQobV9z
YW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkpOwogICAgIEFT
U0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSk7
CiAKKyAgICBpZiAoIW1fcmVmZXJyZXIuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRU
UFJlZmVycmVyKG1fcmVmZXJyZXIpOworCiAgICAgaWYgKG1fYXN5bmMpIHsKICAgICAgICAgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IG1fb3B0aW9uczsKICAgICAgICAgb3B0aW9u
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gbV9zYW1lT3JpZ2luUmVxdWVzdCA/IENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIDogQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggMDlhZjRjOTUy
OTk1ZTIzYmJjOTM3ZTI4NjRhYTc5ODZkNTk4OGJlZC4uN2QzMjk1N2MwZTFiZWM0MjYzNWQ2ZjU3
OTgzY2M2OGYwOTNhNDQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw4ICsyOSw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKLSNkZWZpbmUgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5PiYmKTsKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShE
b2N1bWVudCYsIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29u
c3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKIAotICAgICAgICBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50JiwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1
cml0eVBvbGljeT4mJik7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmLCBT
dHJpbmcmJiByZWZlcnJlcik7CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CiAKICAgICAg
ICAgdmlydHVhbCB+RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CkBAIC03MSw3ICs3MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExvYWRBc3luY2hyb25vdXNseQogICAg
ICAgICB9OwogCi0gICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
JiYsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYpOworICAgICAgICBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiwgQmxvY2tpbmdCZWhhdmlvciwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudFNlY3VyaXR5UG9saWN5PiYmLCBTdHJpbmcmJik7CiAKICAgICAgICAgdm9pZCBjbGVh
clJlc291cmNlKCk7CiAKQEAgLTEwMyw2ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAg
ICAgICBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9uczsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZlcnJlcjsgfQogICAgICAgICBib29sIGlzTG9hZGluZygpIHsgcmV0dXJu
IG1fcmVzb3VyY2UgfHwgbV9wcmVmbGlnaHRDaGVja2VyOyB9CiAKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CkBAIC0xMTAsNiArMTEx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
ICAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgbV9vcHRpb25zOwogICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOworICAgICAgICBTdHJpbmcgbV9yZWZlcnJlcjsK
ICAgICAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1fc2ltcGxl
UmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwpAQCAtMTE4LDUgKzEyMCwzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjc2YTIzOTUyMjA1MGY5ZmE0ODY4YWM1ODE2ZWJk
NzVkZTY1OWY2YS4uYjRmOGYyOGY3MWFiYjRjMzUxMGEwZDU4ZTM0ZTE2ZWFjMDM0ZjdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTIsOSAr
MTUyLDYgQEAgYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgLy8gU3VicmVzb3VyY2VMb2FkZXIgY291bGQgdXNlIHRoZSBkb2N1
bWVudCBvcmlnaW4gYXMgYSBkZWZhdWx0IGFuZCBzZXQgUG90ZW50aWFsbHlDcm9zc09yaWdpbkVu
YWJsZWQgcmVxdWVzdHMgYWNjb3JkaW5nbHkuCiAgICAgLy8gVGhpcyB3b3VsZCBzaW1wbGlmeSBy
ZXNvdXJjZSBsb2FkZXIgdXNlcnMgYXMgdGhleSB3b3VsZCBvbmx5IG5lZWQgdG8gc2V0IGZldGNo
IG1vZGUgdG8gQ29ycy4KICAgICBtX29yaWdpbiA9IG1fcmVzb3VyY2UtPm9yaWdpbigpOwotICAg
IC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNoLCBzdGVwIDExLCBk
YXRhIFVSTCBoZXJlIGlzIGNvbnNpZGVyZWQgbm90IGNyb3NzIG9yaWdpbi4KLSAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiBtX29yaWdpbiAmJiAhbV9vcmlnaW4tPmNh
blJlcXVlc3QocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIG1fcmVzb3VyY2UtPnNldENyb3NzT3Jp
Z2luKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWYyNDE0NGRlMTE4NWYwNzU3ZjNjMzU4ZTRiNTgwNGE3
Y2YzNjVlLi5lYjAxNmIyMDI2OTNlZGM4MmY0MDgwNWYxYzRhMDE4NmY3NDdiMGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OCwyNiArNTgsMjEg
QEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zKGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmEKIHsKIH0KIAotUmVmUHRyPFRocmVhZGFibGVMb2Fk
ZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQogewotICAgIEFTU0VSVChjbGllbnQpOwotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpKQorICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCiAgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBjbGllbnQsIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwog
Ci0gICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCksICpjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwor
ICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxEb2N1
bWVudD4oY29udGV4dCksIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiB9CiAK
LXZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQordm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkpCisgICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNh
c3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25z
KTsKLSAgICBjb250ZXh0LT5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgICAg
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9u
cyk7CisgICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5oCmluZGV4IGFmZjcwODU4MjU3ZTI2NjQ2MzBiN2RjNmM0ZTRkZmNmYzcwZGMyMzYuLmQ4Y2E2
MGVmZGI4YTFhNWFkNmRiNDc1ZjcwYmE3NzA3NDc2ZGMyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuaApAQCAtNzQsOCArNzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgVGhyZWFkYWJsZUxvYWRlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRocmVhZGFibGVMb2FkZXIpOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYpOwotICAgICAgICBzdGF0aWMgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCos
IFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAg
ICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKICAgICAgICAg
dm9pZCByZWYoKSB7IHJlZlRocmVhZGFibGVMb2FkZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAppbmRleCAwMGM5
OGMwOGZjZTM4NjYzZDdmNTQ1NjliZDM1NWUzMDAyM2ZkMjQyLi45Yzc0MWU2ODM0NTE4M2I3MDhj
MTZiZmQxYjYyMTFmYTQ2MTU1YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
cj4gY3JlYXRlKFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUmVm
PFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBjcmVhdGUoVGhyZWFkYWJsZUxvYWRlckNs
aWVudCYgY2xpZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXIoY2xpZW50KSk7CiAgICAgfQpAQCAtOTUsMTQgKzk1LDEw
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCi0gICAg
ICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICAgICAsIG1fZG9uZShmYWxzZSkKLSAgICB7Ci0g
ICAgfQorICAgIGV4cGxpY2l0IFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudCgmY2xpZW50KSB7IH0KIAogICAgIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqIG1fY2xpZW50OwotICAgIGJvb2wgbV9kb25lOworICAgIGJv
b2wgbV9kb25lIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBi
MGRkNTBjOGE3NjY1NGIwZDQyNjdlZDI0ZTNhYzBjMTkzZTlhYzFjLi5jNTU0ZmVkNjc4ZDM5YmMy
NWIyOGNjNWNiMzdhYTllM2FmOWQyMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ5LDEwICs1MCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlW10gPSAibG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUiOwogCi1Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6Oldvcmtl
clRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6
Y3JlYXRlKGNsaWVudCkpCi0gICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UoKm1f
d29ya2VyQ2xpZW50V3JhcHBlciwgd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLndvcmtlckxv
YWRlclByb3h5KCksIHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCB3b3JrZXJH
bG9iYWxTY29wZS0+dXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCksIHdvcmtlckdsb2Jh
bFNjb3BlLT5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCkpKQorICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKG1fd29y
a2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2Vy
TG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHdvcmtl
ckdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpLCB3b3JrZXJHbG9i
YWxTY29wZS5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSkpCiB7CiB9CiAKQEAgLTYxLDE4ICs2MiwxOCBAQCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjp+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigpCiAgICAgbV9icmlkZ2UuZGVzdHJveSgp
OwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAg
ICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1
bkxvb3AoKTsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUu
dGhyZWFkKCkucnVuTG9vcCgpOwogCiAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIG1vZGUganVzdCBm
b3IgdGhpcyBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkLgogICAgIFN0cmluZyBtb2RlID0gbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1i
ZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFk
YWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtl
ckdsb2JhbFNjb3BlLCAmY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsK
KyAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMpOwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0
ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25l
KCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCi0gICAgICAgIHJlc3VsdCA9
IHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKKyAgICAgICAgcmVz
dWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKIAogICAg
IGlmICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQp
CiAgICAgICAgIGxvYWRlci0+Y2FuY2VsKCk7CkBAIC0xMTcsMTEgKzExOCw5IEBAIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFk
YWJsZUxvYWRlckNsaWVuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKIAotICAg
ICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcHRpb25zLT5yZWZlcnJlcik7Ci0KICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBzaXRlIHJlcXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4g
dGhpcyB3aWxsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoIHdpbGwg
cmV0dXJuIGEgMCB2YWx1ZS4KICAgICAgICAgLy8gRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAw
IG9yIHRoZSBvdGhlciBjb2RlIHBhdGggc2hvdWxkIGNhbGwgYSBmYWlsdXJlIGNhbGxiYWNrLgot
ICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShkb2N1bWVudCwgKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMtPm9wdGlvbnMs
IFdURk1vdmUob3B0aW9ucy0+b3JpZ2luKSwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5KSk7CisgICAgICAgIG1fbWFpblRocmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucy0+
b3B0aW9ucywgV1RGTW92ZShvcHRpb25zLT5vcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0
eVBvbGljeUNvcHkpLCBXVEZNb3ZlKG9wdGlvbnMtPnJlZmVycmVyKSk7CiAgICAgICAgIEFTU0VS
VChtX21haW5UaHJlYWRMb2FkZXIgfHwgbV9sb2FkaW5nRmluaXNoZWQpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXgg
NDY0MmI0MGMwNzAzOTVmZWQ3OGVkMmI2ODRmNjRlYTM0MDI3MjdkYS4uYjg4MjMyYjllYWMwMTYz
NmQzMmI1Y2RlZWQ0YThkNzMyNWVlMzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyIHsKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYpOwotICAgICAgICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CisgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyR2xv
YmFsU2NvcGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBSZWY8V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV29ya2VyVGhyZWFkYWJsZUxvYWRlcih3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCB0YXNr
TW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucykpOwogICAgICAgICB9CkBAIC04NSw3ICs4
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY2FzZSAyLiB4aHIgZ2V0cyBh
Ym9ydGVkIGFuZCB0aGUgd29ya2VyIGNvbnRleHQgY29udGludWVzIHJ1bm5pbmcuCiAgICAgICAg
IC8vICAgIFRoZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciBoYXMgdGhlIHVuZGVybHlp
bmcgY2xpZW50IGNsZWFyZWQsIHNvIG5vIG1vcmUgY2FsbHMKICAgICAgICAgLy8gICAgZ28gdGhy
b3VnaCBpdC4gIEFsbCB0YXNrcyBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIG9iamVjdCdzIHRocmVh
ZCB0byB0aGUgd29ya2VyIGNvbnRleHQncwotICAgICAgICAvLyAgICB0aHJlYWQgY29udGFpbiB0
aGUgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBvYmplY3QsIHNvIHRoZSAK
KyAgICAgICAgLy8gICAgdGhyZWFkIGNvbnRhaW4gdGhlIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlcj4gb2JqZWN0LCBzbyB0aGUKICAgICAgICAgLy8gICAgVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXIgaW5zdGFuY2UgaXMgdGhlcmUgdW50aWwgYWxsIHRhc2tzIGFyZSBl
eGVjdXRlZC4KICAgICAgICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgcHVibGljOgpAQCAtMTIwLDEwICsxMjAsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgU3RyaW5nIG1fdGFza01vZGU7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29w
ZSosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKIAotICAgICAgICBSZWZQdHI8V29ya2VyR2xv
YmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgICAgIFJlZlB0cjxUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgICAgICBSZWY8
V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgICAgIFJlZjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgICAg
ICBNYWluVGhyZWFkQnJpZGdlJiBtX2JyaWRnZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkZDU3ODc1OTg5Y2QyMDk3
MjhiNTNjNzQ0YTRiMTZmZjMxY2RhNzRmLi40Y2Q3NDIzMDA1OTAxNDRiZTljMzM3YzYyZWE5Mzgy
OTA0ZmM4MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTE4Myw5ICsxODMsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpmYWlsQmVm
b3JlU3RhcnRpbmcoKQogICAgIGVycm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3IpOwogfQog
Ci1zdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCitzdGF0aWMgdm9pZCBhZGRB
ZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6
TWFpblJlc291cmNlKQorICAgIGlmIChyZXNvdXJjZS50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6
Ok1haW5SZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEluIHNvbWUgY2FzZXMgd2Ug
bWF5IHRyeSB0byBsb2FkIHJlc291cmNlcyBpbiBmcmFtZWxlc3MgZG9jdW1lbnRzLiBTdWNoIGxv
YWRzIGFsd2F5cyBmYWlsLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2V0IHRoaXMgZmFy
LgpAQCAtMjA2LDggKzIwNiwyOSBAQCBzdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsUmVxdWVzdEhl
YWRlcnNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogICAgICAgICBv
dXRnb2luZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG91dGdvaW5n
UmVmZXJyZXIpLT50b1N0cmluZygpOwogICAgIH0KIAotICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kg
PSBjYWNoZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpID8gY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpEZWZhdWx0Owot
ICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihyZWZlcnJlclBvbGljeSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcik7Cisg
ICAgLy8gRklYTUU6IFJlZmFjdG9yIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVh
ZGVyIHRvIGFsaWduIHdpdGggbmV3IHRlcm1pbm9sb2d5IHVzZWQgaW4gaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3dlYmFwcHNlYy1yZWZlcnJlci1wb2xpY3kuCisgICAgc3dpdGNoIChyZXNvdXJjZS5v
cHRpb25zKCkucmVmZXJyZXJQb2xpY3kpIHsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOiB7CisgICAgICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVy
UG9saWN5ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKSA/IGNhY2hlZFJlc291cmNl
TG9hZGVyLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgOiBSZWZlcnJlclBvbGljeTo6RGVm
YXVsdDsKKyAgICAgICAgb3V0Z29pbmdSZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0
ZVJlZmVycmVySGVhZGVyKHJlZmVycmVyUG9saWN5LCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1Jl
ZmVycmVyKTsKKyAgICAgICAgYnJlYWs7IH0KKyAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJy
ZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlOgorICAgICAgICBvdXRnb2luZ1JlZmVy
cmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xp
Y3k6OkRlZmF1bHQsIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI6
CisgICAgICAgIG91dGdvaW5nUmVmZXJyZXIgPSBTdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW46CisgICAgICAgIG91
dGdvaW5nUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihS
ZWZlcnJlclBvbGljeTo6T3JpZ2luLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpP
cmlnaW5XaGVuQ3Jvc3NPcmlnaW46CisgICAgICAgIGlmIChyZXNvdXJjZS5pc0Nyb3NzT3JpZ2lu
KCkpCisgICAgICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbiwgcmVxdWVzdC51cmwoKSwg
b3V0Z29pbmdSZWZlcnJlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25z
OjpSZWZlcnJlclBvbGljeTo6VW5zYWZlVXJsOgorICAgICAgICBicmVhazsKKyAgICB9OworCiAg
ICAgaWYgKG91dGdvaW5nUmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmNsZWFy
SFRUUFJlZmVycmVyKCk7CiAgICAgZWxzZQpAQCAtMjE5LDcgKzI0MCw3IEBAIHN0YXRpYyB2b2lk
IGFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVyc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZEFkZGl0aW9uYWxSZXF1ZXN0
SGVhZGVycyhDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7Ci0g
ICAgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzVG9SZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0
LCBjYWNoZWRSZXNvdXJjZUxvYWRlciwgdHlwZSgpKTsKKyAgICBhZGRBZGRpdGlvbmFsUmVxdWVz
dEhlYWRlcnNUb1JlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIGNhY2hlZFJlc291cmNlTG9hZGVy
LCAqdGhpcyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VM
b2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCkBAIC0yODcsNiArMzA4LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fb3JpZ2luID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsK
KworICAgICAgICBpZiAoIW1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkg
JiYgbV9vcmlnaW4gJiYgIW1fb3JpZ2luLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LnVy
bCgpKSkKKyAgICAgICAgICAgIHNldENyb3NzT3JpZ2luKCk7CisKICAgICAgICAgYWRkQWRkaXRp
b25hbFJlcXVlc3RIZWFkZXJzKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICB9CiAKQEAgLTgw
OSw3ICs4MzQsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjp2YXJ5SGVhZGVyVmFsdWVzTWF0Y2go
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0V2l0aEZ1bGxIZWFkZXJzKHJlcXVlc3Qp
OwotICAgIGFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVyc1RvUmVxdWVzdChyZXF1ZXN0V2l0aEZ1
bGxIZWFkZXJzLCBjYWNoZWRSZXNvdXJjZUxvYWRlciwgdHlwZSgpKTsKKyAgICBhZGRBZGRpdGlv
bmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3QocmVxdWVzdFdpdGhGdWxsSGVhZGVycywgY2FjaGVk
UmVzb3VyY2VMb2FkZXIsICp0aGlzKTsKIAogICAgIHJldHVybiB2ZXJpZnlWYXJ5aW5nUmVxdWVz
dEhlYWRlcnMobV92YXJ5aW5nSGVhZGVyVmFsdWVzLCByZXF1ZXN0V2l0aEZ1bGxIZWFkZXJzLCBt
X3Nlc3Npb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IDI1NGRkMmJhMmQ0YjdiODZmMzUzOTc1NGI4MTMwMDA5ZDBhOTM4YWEuLjdh
ZDZhMTMyNmRmZTE2NzQ2ZmNiNzcyZTFiODViYjljZTQwYjEwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMzAsNiArMjMwLDcgQEAgcHVi
bGljOgogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCk7IH0KIAogICAgIGJvb2wg
YWxsb3dzQ2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5KCkg
PT0gQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOyB9CisgICAgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKaW5kZXggNjU1Mjg4MzdmZGJiMjU3ZGRiYTgzZjU4MGZlOTRkMGEzNjk0OWYyOC4uODc5ZjUw
YjI2Yjc5NWNlNjQwMmRmNjRkNzA0NDkwZDhkZGJlYzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKQEAgLTExMiw3ICsxMTIsOCBAQCB2b2lkIEV2ZW50U291cmNlOjpjb25uZWN0
KCkKICAgICBvcHRpb25zLnNldERhdGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsK
ICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNvbm5lY3RTcmNEaXJlY3Rp
dmU7CiAKLSAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHRoaXMsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOworICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fbG9hZGVyID0gVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zKTsKIAogICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1c2UgbV9s
b2FkZXIgZm9yIHRoaXMsIG51bGwgaXQgb3V0IHdoZW4gaXQncyBubyBsb25nZXIgaW4gZmxpZ2h0
LCBhbmQgZWxpbWluYXRlIHRoZSBtX3JlcXVlc3RJbkZsaWdodCBtZW1iZXI/CiAgICAgaWYgKG1f
bG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CmluZGV4IDNiZmQ2MGRiYzZhMzI0NTkyMDIzYTg3YzI2ODJkYjI4OGIzM2QyNjAuLjNkMGVmM2Fh
YWZkYTFkOWExNmZmMWU5MDMxZDM4Nzk0MDI3MzU2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTU2LDYgKzU2LDggQEAgV29ya2VyU2Ny
aXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9hZGVyKCkKIAogdm9pZCBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQpCiB7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworCiAgICAgbV91
cmwgPSB1cmw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
KGNyZWF0ZVJlc291cmNlUmVxdWVzdCgpKTsKQEAgLTczLDEyICs3NSwxNCBAQCB2b2lkIFdvcmtl
clNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aQogICAgIG9wdGlvbnMuc2V0U2VuZExvYWRDYWxsYmFja3MoU2VuZENhbGxi
YWNrcyk7CiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IGNv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OwogCi0gICAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIFdURk1vdmUoKnJlcXVlc3QpLCAqdGhpcywgb3B0
aW9ucyk7CisgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
LCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCiB2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUg
bW9kZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9s
aWN5RW5mb3JjZW1lbnQsIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewogICAg
IEFTU0VSVChjbGllbnQpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKwog
ICAgIG1fY2xpZW50ID0gY2xpZW50OwogICAgIG1fdXJsID0gdXJsOwogCkBAIC05OCw3ICsxMDIs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogCiAgICAgLy8gRHVyaW5nIGNyZWF0ZSwgY2Fs
bGJhY2tzIG1heSBoYXBwZW4gd2hpY2ggcmVtb3ZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlz
IG9iamVjdC4KICAgICBSZWY8V29ya2VyU2NyaXB0TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKLSAgICBtX3RocmVhZGFibGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgdGhpcywgV1RGTW92ZSgqcmVxdWVzdCksIG9wdGlvbnMpOwor
ICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgKnRoaXMsIFdURk1vdmUoKnJlcXVlc3QpLCBvcHRpb25zKTsKIH0K
IAogY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGUyNWIwODBjZDIyZTZiNjk3MDA3
MDNiNmQxODE4YWVhYzVhZWZmNjYuLjFkMzlmYzUxMDJmMjNjZTY5ZWQ0MjQxZjM2ZjY5YWQ1MTNi
ODhlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzE0LDcgKzcx
NCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIC8vIFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSBjYW4gcmV0dXJuIG51bGwg
aGVyZSwgZm9yIGV4YW1wbGUgaWYgd2UncmUgbm8gbG9uZ2VyIGF0dGFjaGVkIHRvIGEgcGFnZSBv
ciBpZiBhIGNvbnRlbnQgYmxvY2tlciBibG9ja3MgdGhlIGxvYWQuCiAgICAgICAgIC8vIFRoaXMg
aXMgdHJ1ZSB3aGlsZSBydW5uaW5nIG9udW5sb2FkIGhhbmRsZXJzLgogICAgICAgICAvLyBGSVhN
RTogTWF5YmUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHNlbmQgWE1MSHR0cFJlcXVlc3RzIGZyb20g
b251bmxvYWQsIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwND4u
Ci0gICAgICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CisgICAgICAg
IG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKIAogICAgICAgICAvLyBO
ZWl0aGVyIHRoaXMgb2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHNob3VsZCBiZSBk
ZWxldGVkIHdoaWxlCiAgICAgICAgIC8vIGEgcmVxdWVzdCBpcyBpbiBwcm9ncmVzcyBiZWNhdXNl
IHdlIG5lZWQgdG8ga2VlcCB0aGUgbGlzdGVuZXJzIGFsaXZlLApAQCAtNzI3LDcgKzcyNyw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxMb2FkWEhSU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAg
ICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOworICAg
ICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggZDI1NzAwMTMxZjNiZTUxODA2OTQ1MTEzNDJlMjIwMDBmN2JlN2ZjZS4uMWRm
ZjA2ZDQ0ODk0MDg0NTRlZTZkZThkMzc5MTIzNzRiNTg3ZGJjYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDgtMDEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtGZXRjaCBBUEldIEFkZCBzdXBwb3J0IHRv
IFJlZmVycmVyUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjA0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL3JlZmVycmVyLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItd29ya2VyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJy
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9i
YXNpYy9yZWZlcnJlci5qczogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29y
cy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJl
ci5qczoKKyAgICAgICAgKGNvcnNQcmVmbGlnaHRSZWZlcnJlcik6IGZpeCBpbmZyYXN0cnVjdHVy
ZSBidWcgaW4gdGVzdCBhbmQgZml4IGV4cGVjdGVkIHJlZmVycmVyIHBvbGljeSBpbiBkZWZhdWx0
IGNhc2UuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMt
cHJlZmxpZ2h0LXdvcmtlci1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDctMzAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgc3RyaWN0IHR5cGUgY2hlY2tp
bmcgZm9yIFdpbmRvdyBkaWN0aW9uYXJ5IG1lbWJlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM2
ODkxYTNlMTBkYzcyNDNlNGI1YWU3NDk1MDI4ZTliN2I3N2IxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFz
aWMvcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIG9yaWdpbi13
aGVuLWNyb3NzLW9yaWdpbiBwb2xpY3kgb24gYSBzYW1lLW9yaWdpbiBVUkwgCitQQVNTIG9yaWdp
bi13aGVuLWNyb3NzLW9yaWdpbiBwb2xpY3kgb24gYSBjcm9zcy1vcmlnaW4gVVJMIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItd29y
a2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM2ODkxYTNlMTBkYzcyNDNlNGI1YWU3NDk1
MDI4ZTliN2I3N2IxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItd29ya2VyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4g
cG9saWN5IG9uIGEgc2FtZS1vcmlnaW4gVVJMIAorUEFTUyBvcmlnaW4td2hlbi1jcm9zcy1vcmln
aW4gcG9saWN5IG9uIGEgY3Jvc3Mtb3JpZ2luIFVSTCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJy
ZXItd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci13b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjM5
N2RlNDM3ZGExNTM3YTY0ZmM2OTEzZTIzM2MwZmNjY2NiNWQwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFz
aWMvcmVmZXJyZXItd29ya2VyLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRs
ZT5GZXRjaCBpbiB3b3JrZXI6IHNhbWUtb3JpZ2luIG1vZGU8L3RpdGxlPgorICAgIDxtZXRhIG5h
bWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNo
Ij4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jYmFzaWMtZmV0Y2giPgorICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IkNhbm9u
IFJlc2VhcmNoIEZyYW5jZSIgaHJlZj0iaHR0cHM6Ly93d3cuY3JmLmNhbm9uLmZyIj4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICA8
L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQ+CisgICAgICBmZXRjaF90ZXN0c19mcm9tX3dv
cmtlcihuZXcgV29ya2VyKCJyZWZlcnJlci5qcyIpKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGMzN2JmNzNmZTg0M2JiYTcxZGFhM2IzMTk5NDMwMjc3YjIwMGNlNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorICAgIDx0aXRsZT5GZXRjaDogc2FtZS1vcmlnaW4gbW9kZTwvdGl0bGU+CisgICAgPG1ldGEg
bmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0
Y2giPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2guc3BlYy53aGF0
d2cub3JnLyNiYXNpYy1mZXRjaCI+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fu
b24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3dy5jcmYuY2Fub24uZnIiPgorICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlscy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9nZXQtaG9zdC1pbmZv
LnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlZmVycmVyLmpzIj48L3Njcmlw
dD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9y
ZWZlcnJlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjlkM2VhNzlhY2YwYWQ0ZmFlMDI3YjBhNjhhODMzMzli
YzE3NjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuanMKQEAgLTAsMCArMSwyNSBA
QAoraWYgKHRoaXMuZG9jdW1lbnQgPT09IHVuZGVmaW5lZCkgeworICBpbXBvcnRTY3JpcHRzKCIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIik7CisgIGltcG9ydFNjcmlwdHMoIi4uL3Jlc291cmNl
cy91dGlscy5qcyIpOworICBpbXBvcnRTY3JpcHRzKCIuLi9yZXNvdXJjZXMvZ2V0LWhvc3QtaW5m
by5zdWIuanMiKQorfQorCitmdW5jdGlvbiBydW5UZXN0KHVybCwgaW5pdCwgZXhwZWN0ZWRSZWZl
cnJlciwgdGl0bGUpIHsKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAg
ICByZXR1cm4gZmV0Y2godXJsICwgaW5pdCkudGhlbihmdW5jdGlvbihyZXNwKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3Auc3RhdHVzLCAyMDAsICJIVFRQIHN0YXR1cyBpcyAyMDAi
KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcC5oZWFkZXJzLmdldCgieC1yZXF1ZXN0
LXJlZmVyZXIiKSwgZXhwZWN0ZWRSZWZlcnJlciwgIlJlcXVlc3QncyByZWZlcnJlciBpcyBjb3Jy
ZWN0Iik7CisgICAgICAgIH0pOworICB9LCB0aXRsZSk7Cit9CisKK3ZhciBmZXRjaGVkVXJsID0g
UkVTT1VSQ0VTX0RJUiArICJpbnNwZWN0LWhlYWRlcnMucHk/aGVhZGVycz1yZWZlcmVyIjsKK3Zh
ciBjb3JzRmV0Y2hlZFVybCA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gICsg
ZGlybmFtZShsb2NhdGlvbi5wYXRobmFtZSkgKyBSRVNPVVJDRVNfRElSICsgImluc3BlY3QtaGVh
ZGVycy5weT9oZWFkZXJzPXJlZmVyZXImY29ycyI7Cit2YXIgcmVkaXJlY3RVcmwgPSBSRVNPVVJD
RVNfRElSICsgInJlZGlyZWN0LnB5P2xvY2F0aW9uPSIgOwordmFyIGNvcnNSZWRpcmVjdFVybCA9
IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBkaXJuYW1lKGxvY2F0aW9uLnBh
dGhuYW1lKSArIFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/bG9jYXRpb249IjsKKworcnVu
VGVzdChmZXRjaGVkVXJsLCB7IHJlZmVycmVyUG9saWN5OiAib3JpZ2luLXdoZW4tY3Jvc3Mtb3Jp
Z2luIn0sIGxvY2F0aW9uLnRvU3RyaW5nKCksICJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4gcG9s
aWN5IG9uIGEgc2FtZS1vcmlnaW4gVVJMIik7CitydW5UZXN0KGNvcnNGZXRjaGVkVXJsLCB7IHJl
ZmVycmVyUG9saWN5OiAib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIn0sIGdldF9ob3N0X2luZm8o
KS5IVFRQX09SSUdJTiArICIvIiwgIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiBwb2xpY3kgb24g
YSBjcm9zcy1vcmlnaW4gVVJMIik7CisKK2RvbmUoKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWZlcnJlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZmVycmVy
LWV4cGVjdGVkLnR4dAppbmRleCA5ZDY5YWM5M2U5NDBlNGFjNGVmYzRjNTljMDUxMTQ4ZmMwYWU3
YTU1Li5kZTEwZWYyOTY0YjI5NDJhNGYxZGQ4NzY1MDYwNjgyMzU3M2NkMmFjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9j
b3JzL2NvcnMtcHJlZmxpZ2h0LXJlZmVycmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJl
ZmxpZ2h0LXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAotRkFJTCBSZWZl
cnJlciBwb2xpY3k6IG5vLXJlZmVycmVyIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgUmVmZXJy
ZXIgcG9saWN5OiAiIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFJlZmVycmVyIHBvbGljeTog
b3JpZ2luIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiBvcmlnaW4t
d2hlbi1jcm9zcy1vcmlnaW4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBSZWZlcnJlciBwb2xp
Y3k6IHVuc2FmZS11cmwgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgorUEFTUyBSZWZlcnJlciBwb2xpY3k6
IG5vLXJlZmVycmVyIAorUEFTUyBSZWZlcnJlciBwb2xpY3k6ICIiIAorUEFTUyBSZWZlcnJlciBw
b2xpY3k6IG9yaWdpbiAKK1BBU1MgUmVmZXJyZXIgcG9saWN5OiBvcmlnaW4td2hlbi1jcm9zcy1v
cmlnaW4gCitQQVNTIFJlZmVycmVyIHBvbGljeTogdW5zYWZlLXVybCAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29y
cy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDlkNjlhYzkzZTk0MGU0
YWM0ZWZjNGM1OWMwNTExNDhmYzBhZTdhNTUuLmRlMTBlZjI5NjRiMjk0MmE0ZjFkZDg3NjUwNjA2
ODIzNTczY2QyYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXItd29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZmVycmVyLXdvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiBuby1yZWZl
cnJlciBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFJlZmVycmVyIHBvbGljeTogIiIgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBUeXBlIGVycm9yIgotRkFJTCBSZWZlcnJlciBwb2xpY3k6IG9yaWdpbiBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IiCi1GQUlMIFJlZmVycmVyIHBvbGljeTogb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVF
cnJvcjogVHlwZSBlcnJvciIKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiB1bnNhZmUtdXJsIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJv
cjogVHlwZSBlcnJvciIKK1BBU1MgUmVmZXJyZXIgcG9saWN5OiBuby1yZWZlcnJlciAKK1BBU1Mg
UmVmZXJyZXIgcG9saWN5OiAiIiAKK1BBU1MgUmVmZXJyZXIgcG9saWN5OiBvcmlnaW4gCitQQVNT
IFJlZmVycmVyIHBvbGljeTogb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIAorUEFTUyBSZWZlcnJl
ciBwb2xpY3k6IHVuc2FmZS11cmwgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVm
ZXJyZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXJlZmVycmVyLmpzCmluZGV4IDQwZTRhN2Y3OTAx
MmE5M2ZjYjE1NDMxZmMyOTg0OWExNmUxZDI4YWEuLjNiNmVmMGM4YjI3ZWEwYmIzYjJlYjZiZTA2
MWVmN2FhNzI4MmIzMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci5qcwpAQCAtMSw2ICsxLDcgQEAKIGlmICh0
aGlzLmRvY3VtZW50ID09PSB1bmRlZmluZWQpIHsKICAgaW1wb3J0U2NyaXB0cygiL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyIpOwogICBpbXBvcnRTY3JpcHRzKCIvY29tbW9uL3V0aWxzLmpzIik7
CisgIGltcG9ydFNjcmlwdHMoIi4uL3Jlc291cmNlcy9nZXQtaG9zdC1pbmZvLnN1Yi5qcyIpOwog
ICBpbXBvcnRTY3JpcHRzKCIuLi9yZXNvdXJjZXMvdXRpbHMuanMiKTsKIH0KIApAQCAtMjEsMTcg
KzIyLDE4IEBAIGZ1bmN0aW9uIGNvcnNQcmVmbGlnaHRSZWZlcnJlcihkZXNjLCBjb3JzVXJsLCBy
ZWZlcnJlclBvbGljeSwgZXhwZWN0ZWRSZWZlcnJlcikKICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXNwLnN0YXR1cywgMjAwLCAiUmVzcG9uc2UncyBzdGF0dXMgaXMgMjAwIik7CiAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzcC5oZWFkZXJzLmdldCgieC1kaWQtcHJlZmxpZ2h0IiksICIxIiwgIlBy
ZWZsaWdodCByZXF1ZXN0IGhhcyBiZWVuIG1hZGUiKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXNwLmhlYWRlcnMuZ2V0KCJ4LXByZWZsaWdodC1yZWZlcnJlciIpLCBleHBlY3RlZFJlZmVycmVy
LCAiUHJlZmxpZ2h0J3MgcmVmZXJyZXIgaXMgY29ycmVjdCIpOwotICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlc3AuaGVhZGVycy5nZXQoIngtcmVmZXJyZXIiKSwgZXhwZWN0ZWRSZWZlcnJlciwgIlJl
cXVlc3QncyByZWZmZXJlciBpcyBjb3JyZWN0Iik7CisgICAgICAgIGFzc2VydF9lcXVhbHMocmVz
cC5oZWFkZXJzLmdldCgieC1yZWZlcnJlciIpLCBleHBlY3RlZFJlZmVycmVyLCAiUmVxdWVzdCdz
IHJlZmVycmVyIGlzIGNvcnJlY3QiKTsKICAgICAgIH0pOwogICAgIH0pOwogICB9LCBkZXNjKTsK
IH0KIAotdmFyIGNvcnNVcmwgPSAiaHR0cDovL3t7aG9zdH19Ont7cG9ydHNbaHR0cF1bMV19fSIg
KyBkaXJuYW1lKGxvY2F0aW9uLnBhdGhuYW1lKSArIFJFU09VUkNFU19ESVIgKyAicHJlZmxpZ2h0
LnB5IjsKLXZhciBvcmlnaW4gPSAiaHR0cDovL3t7aG9zdH19Ont7cG9ydHNbaHR0cF1bMF19fSI7
Cit2YXIgY29yc1VybCA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gICsgZGly
bmFtZShsb2NhdGlvbi5wYXRobmFtZSkgKyBSRVNPVVJDRVNfRElSICsgInByZWZsaWdodC5weSI7
Cit2YXIgb3JpZ2luID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfT1JJR0lOICsgIi8iOwogCiBjb3Jz
UHJlZmxpZ2h0UmVmZXJyZXIoIlJlZmVycmVyIHBvbGljeTogbm8tcmVmZXJyZXIiLCBjb3JzVXJs
LCAibm8tcmVmZXJyZXIiLCAiIik7Ci1jb3JzUHJlZmxpZ2h0UmVmZXJyZXIoIlJlZmVycmVyIHBv
bGljeTogXCJcIiIsIGNvcnNVcmwsICIiLCAiIik7Citjb3JzUHJlZmxpZ2h0UmVmZXJyZXIoIlJl
ZmVycmVyIHBvbGljeTogXCJcIiIsIGNvcnNVcmwsICIiLCBsb2NhdGlvbi50b1N0cmluZygpKQor
CiBjb3JzUHJlZmxpZ2h0UmVmZXJyZXIoIlJlZmVycmVyIHBvbGljeTogb3JpZ2luIiwgY29yc1Vy
bCwgIm9yaWdpbiIsIG9yaWdpbik7CiBjb3JzUHJlZmxpZ2h0UmVmZXJyZXIoIlJlZmVycmVyIHBv
bGljeTogb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIiwgY29yc1VybCwgIm9yaWdpbi13aGVuLWNy
b3NzLW9yaWdpbiIsIG9yaWdpbik7CiBjb3JzUHJlZmxpZ2h0UmVmZXJyZXIoIlJlZmVycmVyIHBv
bGljeTogdW5zYWZlLXVybCIsIGNvcnNVcmwsICJ1bnNhZmUtdXJsIiwgbG9jYXRpb24udG9TdHJp
bmcoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9j
b3JzL2NvcnMtcHJlZmxpZ2h0LXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNzkyOGU0OGYzMTVi
Nzc3NTMxNmVlNTVhMWFlZTEyNjUwNzE1YmJjNC4uZmEzOGU5OGNlOTM0MzhjMTkyNzZkOWNkNDA3
ZGRmZjdiZmEwNjkwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC13b3JrZXItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtNywx
MCArNywxMCBAQCBQQVNTIENPUlMgW1BBVENIXSwgc2VydmVyIGFsbG93cwogUEFTUyBDT1JTIFtQ
QVRDSF0sIHNlcnZlciByZWZ1c2VzIAogUEFTUyBDT1JTIFtORVddLCBzZXJ2ZXIgYWxsb3dzIAog
UEFTUyBDT1JTIFtORVddLCBzZXJ2ZXIgcmVmdXNlcyAKLUZBSUwgQ09SUyBbR0VUXSBbeC10ZXN0
LWhlYWRlcjogYWxsb3dlZF0sIHNlcnZlciBhbGxvd3MgYXNzZXJ0X2VxdWFsczogQWNjZXNzLUNv
bnRyb2wtQWxsb3ctSGVhZGVycyB2YWx1ZSBleHBlY3RlZCAieC10ZXN0LWhlYWRlcjEiIGJ1dCBn
b3QgInJlZmVyZXIseC10ZXN0LWhlYWRlcjEiCitQQVNTIENPUlMgW0dFVF0gW3gtdGVzdC1oZWFk
ZXI6IGFsbG93ZWRdLCBzZXJ2ZXIgYWxsb3dzIAogUEFTUyBDT1JTIFtHRVRdIFt4LXRlc3QtaGVh
ZGVyOiByZWZ1c2VkXSwgc2VydmVyIHJlZnVzZXMgCi1GQUlMIENPUlMgW0dFVF0gW3NldmVyYWwg
aGVhZGVyc10sIHNlcnZlciBhbGxvd3MgYXNzZXJ0X2VxdWFsczogQWNjZXNzLUNvbnRyb2wtQWxs
b3ctSGVhZGVycyB2YWx1ZSBleHBlY3RlZCAiY29udGVudC10eXBlLHgtdGVzdC1oZWFkZXItYSx4
LXRlc3QtaGVhZGVyLWIseC10ZXN0LWhlYWRlci1jLHgtdGVzdC1oZWFkZXItZCx4LXRlc3QtaGVh
ZGVyMSx4LXRlc3QtaGVhZGVyMix4LXRlc3QtaGVhZGVyMyIgYnV0IGdvdCAiY29udGVudC10eXBl
LHJlZmVyZXIseC10ZXN0LWhlYWRlci1hLHgtdGVzdC1oZWFkZXItYix4LXRlc3QtaGVhZGVyLWMs
eC10ZXN0LWhlYWRlci1kLHgtdGVzdC1oZWFkZXIxLHgtdGVzdC1oZWFkZXIyLHgtdGVzdC1oZWFk
ZXIzIgorUEFTUyBDT1JTIFtHRVRdIFtzZXZlcmFsIGhlYWRlcnNdLCBzZXJ2ZXIgYWxsb3dzIAog
UEFTUyBDT1JTIFtHRVRdIFtzZXZlcmFsIGhlYWRlcnNdLCBzZXJ2ZXIgcmVmdXNlcyAKLUZBSUwg
Q09SUyBbUFVUXSBbc2V2ZXJhbCBoZWFkZXJzXSwgc2VydmVyIGFsbG93cyBhc3NlcnRfZXF1YWxz
OiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIHZhbHVlIGV4cGVjdGVkICJjb250ZW50LXR5
cGUseC10ZXN0LWhlYWRlci1hLHgtdGVzdC1oZWFkZXItYix4LXRlc3QtaGVhZGVyLWMseC10ZXN0
LWhlYWRlci1kLHgtdGVzdC1oZWFkZXIxLHgtdGVzdC1oZWFkZXIyLHgtdGVzdC1oZWFkZXIzIiBi
dXQgZ290ICJjb250ZW50LXR5cGUscmVmZXJlcix4LXRlc3QtaGVhZGVyLWEseC10ZXN0LWhlYWRl
ci1iLHgtdGVzdC1oZWFkZXItYyx4LXRlc3QtaGVhZGVyLWQseC10ZXN0LWhlYWRlcjEseC10ZXN0
LWhlYWRlcjIseC10ZXN0LWhlYWRlcjMiCitQQVNTIENPUlMgW1BVVF0gW3NldmVyYWwgaGVhZGVy
c10sIHNlcnZlciBhbGxvd3MgCiBQQVNTIENPUlMgW1BVVF0gW3NldmVyYWwgaGVhZGVyc10sIHNl
cnZlciByZWZ1c2VzIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285078</attachid>
            <date>2016-08-01 23:51:45 -0700</date>
            <delta_ts>2016-08-02 00:27:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160404-20160802085022.patch</filename>
            <type>text/plain</type>
            <size>52338</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIwY2FkYjQ2NDVjNmMz
NGI5ZGRiZGE2MTk1NDZmNzI2Yzc3MWFmMC4uOTE5MTBlMjZlZDllODlmZWQzMTE1OTMyOWYyNDAy
NmYzZTNmZTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc2IEBACiAyMDE2LTA4LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCB0byBSZWZlcnJlclBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItd29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLmh0
bWwKKworICAgICAgICBSZWZhY3RvcmVkIFRocmVhZGFibGVMb2FkZXIgQVBJIHRvIHRha2UgbW9y
ZSByZWZlcmVuY2VzLgorCisgICAgICAgIFVwZGF0ZWQgbG9hZGluZyBjb2RlIGluIENhY2hlZFJl
c291cmNlIHRvIHRha2UgaW50byBhY2NvdW50IHJlZmVycmVyIHBvbGljeSwgdGhhdCBjYW4gYmUg
c2V0IGJ5IGZldGNoIEFQSS4KKyAgICAgICAgVG8gZW5hYmxlIGNvcnJlY3QgaGFuZGxpbmcgb2Yg
T3JpZ2luV2hlbkNyb3NzT3JpZ2luIHBvbGljeSwgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBjcm9z
cy1vcmlnaW4gc3RhdHVzIG9mIGEgcmVxdWVzdCBpcworICAgICAgICBtb3ZlZCBmcm9tIFJlc291
cmNlTG9hZGVyIHRvIENhY2hlZFJlc291cmNlLgorCisgICAgICAgIFJlZmVycmVyIGlzIHBhc3Nl
ZCB0byB0aGUgbG9hZGluZyBjb2RlIHRocm91Z2ggSFRUUCBoZWFkZXJzLgorICAgICAgICBUaGlz
IHdhcyB0cmlnZ2VyaW5nIHByZWZsaWdodGluZyBmb3IgV29ya2VycyByZXF1ZXN0IGFzIFdvcmtl
clRocmVhZGFibGVMb2FkZXIgd2FzIHNldHRpbmcgdGhlIHJlZmVycmVyLgorICAgICAgICBJdCBp
cyBub3cgZG9uZSBpbiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0IHNvIHRo
YXQgcHJlZmxpZ2h0aW5nIGlzIGRvbmUgYmVmb3JlIHNldHRpbmcgdGhlIHJlZmVycmVyLgorICAg
ICAgICBOb3RlIHRoYXQgdGhpcyByZWZlcnJlciBzZXR0aW5nIGlzIG9ubHkgYSB3YXkgdG8gcGFz
cyBhIHNwZWNpZmljIHJlZmVycmVyIHZhbHVlIHRvIHRoZSBsb2FkaW5nIGNvZGUuCisgICAgICAg
IENhY2hlZFJlc291cmNlIGNvZGUgd2lsbCBjb21wdXRlIHRoZSBhY3R1YWwgcmVmZXJlciB2YWx1
ZSBiYXNlZCBvbiB0aGUgcmVmZXJyZXIgcG9saWN5LgorICAgICAgICBJdCBtaWdodCBiZSBnb29k
IGluIHRoZSBmdXR1cmUgdG8gaGF2ZSBhIGRpZmZlcmVudCB3YXkgb2YgY29udmV5aW5nIHRoaXMg
aW5mb3JtYXRpb24gdG8gQ2FjaGVkUmVzb3VyY2UsIG1heWJlCisgICAgICAgIHRocm91Z2ggQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RhcnQpOiBSZWZhY3Rvcmlu
ZyBvZiBUaHJlYWRhYmxlTG9hZGVyIEFQSS4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmludGVybmFsUmVx
dWVzdCk6IFNldHRpbmcgcmVmZXJyZXIgaWYgaXQgaGFzIGEgc3BlY2lmaWMgdmFsdWUuCisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI6OnN0YXJ0KTogUmFjdG9yaW5nIG9mIFRocmVhZGFibGVMb2FkZXIgQVBJ
LgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdo
dCk6IFNldCByZWZlcnJlciBpbiB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QgaWYgYW55LgorICAgICAg
ICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6IERp
dHRvLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KTogUmVmYWN0b3Jpbmcgb2YgVGhyZWFkYWJsZUxvYWRlciBBUEkuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OnJlZmVycmVyKTogU3RvcmluZyByZWZlcnJlciBpbiBjYXNlIG9uZSBpcyBkZWZpbmVkLgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6IFJlbW92aW5nIG9mIGNyb3NzIG9yaWdpbiBjb21w
dXRhdGlvbiBzaW5jZSBpdCBpcyBkb25lIGVhcmxpZXIgaW4gQ2FjaGVkUmVzb3VyY2UuCisgICAg
ICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogUmVmYWN0b3Jpbmcgb2YgVGhyZWFkYWJsZUxvYWRlciBB
UEkuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcik6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBS
ZW1vdmluZyBzZXR0aW5nIG9mIHJlZmVycmVyIGluIGhlYWRlciBhbmQgcGFzc2luZworICAgICAg
ICBpdCBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOiBEaXR0by4KKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogUmVmYWN0b3Jpbmcgb2YgVGhyZWFkYWJs
ZUxvYWRlciBBUEkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVyc1RvUmVxdWVzdCk6
IENvbXB1dGF0aW9uIG9mIHJlZmVycmVyIGJhc2VkIG9uIHJlZmVycmVyIHBvbGljeS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKTogQ29tcHV0
YXRpb24gb2YgY3Jvc3Mgb3JpZ2luIHN0YXR1cy4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjp2YXJ5SGVhZGVyVmFsdWVzTWF0Y2gpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Om9wdGlv
bnMpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmNvbm5lY3QpOiBSZWZhY3RvcmluZyBvZiBUaHJlYWRhYmxlTG9hZGVyIEFQ
SS4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6
IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6IERpdHRvLgorCisyMDE2LTA4LTAx
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBbRmV0Y2ggQVBJ
XSBQYXNzIGRpcmVjdGx5IEZldGNoUmVxdWVzdCBmZXRjaCBvcHRpb25zIHRvIFRocmVhZGFibGVM
b2FkZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDQwNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmlu
ZGV4IDc4Y2FlN2E0MDViY2Q4YTRkOWQwZjE5YzFkOWFlOTMwNDc4NTg5OTYuLjk5MDFkMjc5NzYy
YTJjOWQ0N2ZlOGM5OWY1ODk3YTdkNThlNWQ4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRmV0Y2hMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJsb2ImIGJsb2IpCiAg
ICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOwogICAgIG9w
dGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlOwogCi0gICAgbV9sb2FkZXIgPSBUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUoJmNvbnRleHQsIHRoaXMsIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMpOworICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGNvbnRleHQsICp0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICBtX2lzU3RhcnRlZCA9IG1fbG9h
ZGVyOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxCiAgICAg
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7CiAgICAgb3B0aW9ucy5k
YXRhQnVmZmVyaW5nUG9saWN5ID0gRG9Ob3RCdWZmZXJEYXRhOwogCi0gICAgbV9sb2FkZXIgPSBU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoJmNvbnRleHQsIHRoaXMsIHJlcXVlc3QuaW50ZXJuYWxS
ZXF1ZXN0KCksIG9wdGlvbnMpOworICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKGNvbnRleHQsICp0aGlzLCByZXF1ZXN0LmludGVybmFsUmVxdWVzdCgpLCBvcHRpb25zKTsK
ICAgICBtX2lzU3RhcnRlZCA9IG1fbG9hZGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggMWU0YTkzNjg4NGY4OTQzZmJjNzk2NTA3
NmVmYmZjYzMzYjY2YmNlZi4uNzExYTJkNWY1NDk2OTkxNzk4MmM0NzQzNGIxZDllZTc1NWNjYWU1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApA
QCAtMjk0LDYgKzI5NCwxMSBAQCBSZXNvdXJjZVJlcXVlc3QgRmV0Y2hSZXF1ZXN0OjppbnRlcm5h
bFJlcXVlc3QoKSBjb25zdAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbV9pbnRlcm5h
bFJlcXVlc3QucmVxdWVzdDsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMobV9oZWFk
ZXJzLT5pbnRlcm5hbEhlYWRlcnMoKSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShib2R5KCku
Ym9keUZvckludGVybmFsUmVxdWVzdCgpKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vLXJl
ZmVycmVyIGFuZCBjbGllbnQuIEVuc3VyZSB0aGlzIGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24g
aXMgb2suCisgICAgaWYgKG1faW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyICE9ICJuby1yZWZlcnJl
ciIgJiYgbV9pbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgIT0gImNsaWVudCIpCisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKG1faW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyKTsKKwogICAg
IHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmNwcAppbmRleCAzMjY0MWRlYzJjZmNiYjZmZGMyNGFhMTcwYjA1NjBjZDY5OTk1ZTdh
Li40MzkxMjJiMjk1YTBmZTdjMWUzOTEwOTdjNjUzMDk5NGZmYzVjMDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTczLDYgKzczLDggQEAgRmls
ZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJMb2FkZXIoKQogCiB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IEJsb2ImIGJsb2IpCiB7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworCiAg
ICAgLy8gVGhlIGJsb2IgaXMgcmVhZCBieSByb3V0aW5nIHRocm91Z2ggdGhlIHJlcXVlc3QgaGFu
ZGxpbmcgbGF5ZXIgZ2l2ZW4gYSB0ZW1wb3JhcnkgcHVibGljIHVybC4KICAgICBtX3VybEZvclJl
YWRpbmcgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKG1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpIHsK
QEAgLTkzLDkgKzk1LDkgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAgICBvcHRpb25zLmNv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQ6OkRvTm90RW5mb3JjZTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9s
b2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
dGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CisgICAgICAgIG1fbG9hZGVyID0gVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqdGhpcywgV1RG
TW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdU
Rk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RG
TW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCiB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDlmNmYxZjMzNjE2NTI0YjMwMjg1NDc2YTNiMTNh
ZTVhMGJlODY1NDcuLjM0NDcyMzk2NTgyZjJkNDI2NGJmNjAyM2E5OTJlOGYwZTFjMDY4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMDgsNiArMTA4LDkgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKICAgICAgICAgcHJlZmxp
Z2h0UmVxdWVzdC5zZXRJbml0aWF0b3IobV9sb2FkZXIub3B0aW9ucygpLmluaXRpYXRvcik7CiAK
KyAgICBpZiAoIW1fbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkpCisgICAgICAgIHByZWZsaWdo
dFJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX2xvYWRl
ci5yZWZlcnJlcigpKTsKKwogICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgbV9yZXNvdXJj
ZSA9IG1fbG9hZGVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3
UmVzb3VyY2UocHJlZmxpZ2h0UmVxdWVzdCk7CiAgICAgaWYgKG1fcmVzb3VyY2UpCkBAIC0xMjMs
NiArMTI2LDEwIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKworICAgIGlmICghbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkpCisgICAg
ICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRlci5yZWZlcnJlcigpKTsK
KwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5s
b2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKICAgICAvLyBG
SVhNRTogSW52ZXN0aWdhdGUgd2h5IGNoZWNraW5nIGZvciByZXNwb25zZSBodHRwU3RhdHVzQ29k
ZSBoZXJlLiBJbiBwYXJ0aWN1bGFyLCBjYW4gd2UgaGF2ZSBhIG5vdC1udWxsIGVycm9yIGFuZCBh
IDJYWCByZXNwb25zZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmE1Mzc0NTJhYTNlODg5MDZjOWQ4NWM2NmU1MTMzNjRi
ZjU3MjFkZi4uZjNiZTBhMmMyM2JkZWRkNTBhMzJlYWQ4ZWY5ZTk1MjJmYzM1NDYwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5
PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKICAgICAvLyBUaGUgbG9hZGVyIHdpbGwgYmUg
ZGVsZXRlZCBhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gZXhpdHMuCi0gICAgUmVmUHRyPERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkU3luY2hyb25vdXNseSwgV1RGTW92ZShy
ZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0
eVBvbGljeSkpKTsKKyAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBh
ZG9wdFJlZigqbmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBM
b2FkU3luY2hyb25vdXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmln
aW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksIFN0cmluZygpKSk7CiAgICAgQVNT
RVJUKGxvYWRlci0+aGFzT25lUmVmKCkpOwogfQogCkBAIC02OCw5ICs2OCw5IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50
JiBkb2N1bWVudCwgUmVzCiAgICAgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb2N1bWVudCwg
V1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKIH0K
IAotUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBj
bGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkK
K1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0
cmluZyYmIHJlZmVycmVyKQogewotICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+
IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQs
IGNsaWVudCwgTG9hZEFzeW5jaHJvbm91c2x5LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBX
VEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSkpOworICAgIFJl
ZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZEFzeW5jaHJvbm91c2x5
LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29u
dGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlcikpKTsKICAgICBpZiAoIWxvYWRl
ci0+aXNMb2FkaW5nKCkpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIGxv
YWRlcjsKQEAgLTc4LDE0ICs3OCwxNSBAQCBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
PiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdQogCiBSZWZQ
dHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRl
KGRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIG51bGxwdHIsIG51
bGxwdHIsIFN0cmluZygpKTsKIH0KIAotRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIEJsb2NraW5nQmVoYXZpb3IgYmxvY2tpbmdCZWhhdmlvciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMs
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+JiYgY29udGVudFNlY3VyaXR5UG9saWN5KQorRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIEJsb2NraW5nQmVoYXZpb3IgYmxvY2tpbmdC
ZWhhdmlvciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBTdHJpbmcmJiByZWZlcnJlcikKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX2Rv
Y3VtZW50KGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX29yaWdp
bihXVEZNb3ZlKG9yaWdpbikpCisgICAgLCBtX3JlZmVycmVyKFdURk1vdmUocmVmZXJyZXIpKQog
ICAgICwgbV9zYW1lT3JpZ2luUmVxdWVzdChzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QocmVx
dWVzdC51cmwoKSkpCiAgICAgLCBtX3NpbXBsZVJlcXVlc3QodHJ1ZSkKICAgICAsIG1fYXN5bmMo
YmxvY2tpbmdCZWhhdmlvciA9PSBMb2FkQXN5bmNocm9ub3VzbHkpCkBAIC0zNjEsNiArMzYyLDkg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVxdWVz
dCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3NhbWVPcmln
aW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSk7CiAKKyAgICBpZiAoIW1f
cmVmZXJyZXIuaXNOdWxsKCkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1fcmVm
ZXJyZXIpOworCiAgICAgaWYgKG1fYXN5bmMpIHsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMgb3B0aW9ucyA9IG1fb3B0aW9uczsKICAgICAgICAgb3B0aW9ucy5jbGllbnRDcmVkZW50
aWFsUG9saWN5ID0gbV9zYW1lT3JpZ2luUmVxdWVzdCA/IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIDogQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fu
bm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggMDlhZjRjOTUyOTk1ZTIzYmJjOTM3ZTI4
NjRhYTc5ODZkNTk4OGJlZC4uN2QzMjk1N2MwZTFiZWM0MjYzNWQ2ZjU3OTgzY2M2OGYwOTNhNDQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw4ICsyOSw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKLSNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNDgsNyArNDgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoRG9jdW1lbnQmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVudCYsIFJlc291
cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmKTsKIAotICAgICAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50JiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7
CisgICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUo
RG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmLCBTdHJpbmcmJiByZWZlcnJl
cik7CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVh
dGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CiAKICAgICAgICAgdmlydHVhbCB+RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIExvYWRBc3luY2hyb25vdXNseQogICAgICAgICB9OwogCi0gICAg
ICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYpOworICAgICAgICBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgQmxvY2tpbmdCZWhh
dmlvciwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiYmLCBTdHJpbmcmJik7CiAKICAgICAgICAgdm9pZCBjbGVhclJlc291cmNlKCk7CiAK
QEAgLTEwMyw2ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRG9jdW1l
bnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogICAgICAgICBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWZl
cnJlcjsgfQogICAgICAgICBib29sIGlzTG9hZGluZygpIHsgcmV0dXJuIG1fcmVzb3VyY2UgfHwg
bV9wcmVmbGlnaHRDaGVja2VyOyB9CiAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CkBAIC0xMTAsNiArMTExLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICAgICAgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMgbV9vcHRpb25zOwogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fb3JpZ2luOworICAgICAgICBTdHJpbmcgbV9yZWZlcnJlcjsKICAgICAgICAgYm9vbCBt
X3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1fc2ltcGxlUmVxdWVzdDsKICAgICAg
ICAgYm9vbCBtX2FzeW5jOwpAQCAtMTE4LDUgKzEyMCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggOWZhZWNiYTQzNDkwMTU4MTlkNmI4YmU3NTM3ODM2OTNhNjlhYTE1Yy4uMWMx
NjExYzY2ZTg1ZjU5YzYzNTcyYWMxMDQxZGQ3YmY3MzIyYjBmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTIsOSArMTUyLDYgQEAgYm9vbCBT
dWJyZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgLy8gU3VicmVzb3VyY2VMb2FkZXIgY291bGQgdXNlIHRoZSBkb2N1bWVudCBvcmlnaW4gYXMg
YSBkZWZhdWx0IGFuZCBzZXQgUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQgcmVxdWVzdHMg
YWNjb3JkaW5nbHkuCiAgICAgLy8gVGhpcyB3b3VsZCBzaW1wbGlmeSByZXNvdXJjZSBsb2FkZXIg
dXNlcnMgYXMgdGhleSB3b3VsZCBvbmx5IG5lZWQgdG8gc2V0IGZldGNoIG1vZGUgdG8gQ29ycy4K
ICAgICBtX29yaWdpbiA9IG1fcmVzb3VyY2UtPm9yaWdpbigpOwotICAgIC8vIGh0dHBzOi8vZmV0
Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNoLCBzdGVwIDExLCBkYXRhIFVSTCBoZXJlIGlz
IGNvbnNpZGVyZWQgbm90IGNyb3NzIG9yaWdpbi4KLSAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJv
dG9jb2xJc0RhdGEoKSAmJiBtX29yaWdpbiAmJiAhbV9vcmlnaW4tPmNhblJlcXVlc3QocmVxdWVz
dC51cmwoKSkpCi0gICAgICAgIG1fcmVzb3VyY2UtPnNldENyb3NzT3JpZ2luKCk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBiOWYyNDE0NGRlMTE4NWYwNzU3ZjNjMzU4ZTRiNTgwNGE3Y2YzNjVlLi5lYjAxNmIy
MDI2OTNlZGM4MmY0MDgwNWYxYzRhMDE4NmY3NDdiMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OCwyNiArNTgsMjEgQEAgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnM6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgYmEKIHsKIH0KIAotUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+
IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIEFTU0VS
VChjbGllbnQpOwotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oKmNvbnRleHQpKQorICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkpCiAgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwogCi0gICAgcmV0dXJuIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PigqY29udGV4
dCksICpjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOworICAgIHJldHVybiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCks
IGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQordm9p
ZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPigqY29udGV4dCkpCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVz
dCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKLSAgICBjb250ZXh0
LT5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgICAgIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CisgICAgY29udGV4
dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGFmZjcw
ODU4MjU3ZTI2NjQ2MzBiN2RjNmM0ZTRkZmNmYzcwZGMyMzYuLmQ4Y2E2MGVmZGI4YTFhNWFkNmRi
NDc1ZjcwYmE3NzA3NDc2ZGMyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuaApAQCAtNzQsOCArNzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
VGhyZWFkYWJsZUxvYWRlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFi
bGVMb2FkZXIpOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYp
OwotICAgICAgICBzdGF0aWMgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZXNv
dXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jiwg
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKICAgICAgICAgdm9pZCByZWYoKSB7IHJl
ZlRocmVhZGFibGVMb2FkZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAppbmRleCAwMGM5OGMwOGZjZTM4NjYzZDdm
NTQ1NjliZDM1NWUzMDAyM2ZkMjQyLi45Yzc0MWU2ODM0NTE4M2I3MDhjMTZiZmQxYjYyMTFmYTQ2
MTU1YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXIuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gY3JlYXRlKFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUmVmPFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyPiBjcmVhdGUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIoY2xpZW50KSk7CiAgICAgfQpAQCAtOTUsMTQgKzk1LDEwIEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCi0gICAgICAgIDogbV9jbGllbnQo
Y2xpZW50KQotICAgICAgICAsIG1fZG9uZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxp
Y2l0IFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJDbGllbnQm
IGNsaWVudCkgOiBtX2NsaWVudCgmY2xpZW50KSB7IH0KIAogICAgIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIGJvb2wgbV9kb25lOworICAgIGJvb2wgbV9kb25lIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiMGRkNTBjOGE3NjY1NGIw
ZDQyNjdlZDI0ZTNhYzBjMTkzZTlhYzFjLi5jNTU0ZmVkNjc4ZDM5YmMyNWIyOGNjNWNiMzdhYTll
M2FmOWQyMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTQ5LDEwICs1MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUiOwogCi1Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29w
ZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2Rl
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucykKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogICAgIDog
bV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICAsIG1fd29ya2VyQ2xp
ZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKGNsaWVudCkp
Ci0gICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UoKm1fd29ya2VyQ2xpZW50V3Jh
cHBlciwgd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRh
c2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCB3b3JrZXJHbG9iYWxTY29wZS0+dXJs
KCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCksIHdvcmtlckdsb2JhbFNjb3BlLT5zZWN1cml0
eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpKQor
ICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBl
ci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwg
dGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHdvcmtlckdsb2JhbFNjb3BlLnVy
bCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpLCB3b3JrZXJHbG9iYWxTY29wZS5zZWN1cml0
eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkpCiB7
CiB9CiAKQEAgLTYxLDE4ICs2MiwxOCBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp+V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcigpCiAgICAgbV9icmlkZ2UuZGVzdHJveSgpOwogfQogCi12b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyR2xv
YmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXb3JrZXJSdW5Mb29w
JiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1bkxvb3AoKTsKKyAgICBX
b3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9v
cCgpOwogCiAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIG1vZGUganVzdCBmb3IgdGhpcyBzeW5jaHJv
bm91cyByZXNvdXJjZSBsb2FkLgogICAgIFN0cmluZyBtb2RlID0gbG9hZFJlc291cmNlU3luY2hy
b25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5jcmVh
dGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9h
ZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCAm
Y2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKKyAgICBSZWZQdHI8V29y
a2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9w
dGlvbnMpOwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVl
TWVzc2FnZVJlY2VpdmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9
IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5N
b2RlKHdvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5y
dW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKIAogICAgIGlmICghbG9hZGVyLT5k
b25lKCkgJiYgcmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAgIGxvYWRl
ci0+Y2FuY2VsKCk7CkBAIC0xMTcsMTEgKzExOCw5IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVu
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKIAotICAgICAgICByZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihvcHRpb25zLT5yZWZlcnJlcik7Ci0KICAgICAgICAgLy8gRklYTUU6IElm
IHRoZSBzaXRlIHJlcXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4gdGhpcyB3aWxsIHJldHVy
biBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoIHdpbGwgcmV0dXJuIGEgMCB2YWx1
ZS4KICAgICAgICAgLy8gRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAwIG9yIHRoZSBvdGhlciBj
b2RlIHBhdGggc2hvdWxkIGNhbGwgYSBmYWlsdXJlIGNhbGxiYWNrLgotICAgICAgICBtX21haW5U
aHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCwg
KnRoaXMsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMtPm9wdGlvbnMsIFdURk1vdmUob3B0aW9u
cy0+b3JpZ2luKSwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSk7CisgICAgICAg
IG1fbWFpblRocmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRv
Y3VtZW50LCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucy0+b3B0aW9ucywgV1RGTW92
ZShvcHRpb25zLT5vcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBX
VEZNb3ZlKG9wdGlvbnMtPnJlZmVycmVyKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRM
b2FkZXIgfHwgbV9sb2FkaW5nRmluaXNoZWQpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNDY0MmI0MGMwNzAzOTVm
ZWQ3OGVkMmI2ODRmNjRlYTM0MDI3MjdkYS4uYjg4MjMyYjllYWMwMTYzNmQzMmI1Y2RlZWQ0YThk
NzMyNWVlMzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFk
YWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYp
OwotICAgICAgICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3Jr
ZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCisgICAgICAgIHN0YXRp
YyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmLCBSZXNv
dXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBSZWY8V29ya2VyVGhyZWFkYWJsZUxvYWRl
cj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcih3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCB0YXNrTW9kZSwgV1RGTW92ZShy
ZXF1ZXN0KSwgb3B0aW9ucykpOwogICAgICAgICB9CkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY2FzZSAyLiB4aHIgZ2V0cyBhYm9ydGVkIGFuZCB0aGUg
d29ya2VyIGNvbnRleHQgY29udGludWVzIHJ1bm5pbmcuCiAgICAgICAgIC8vICAgIFRoZSBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciBoYXMgdGhlIHVuZGVybHlpbmcgY2xpZW50IGNsZWFy
ZWQsIHNvIG5vIG1vcmUgY2FsbHMKICAgICAgICAgLy8gICAgZ28gdGhyb3VnaCBpdC4gIEFsbCB0
YXNrcyBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIG9iamVjdCdzIHRocmVhZCB0byB0aGUgd29ya2Vy
IGNvbnRleHQncwotICAgICAgICAvLyAgICB0aHJlYWQgY29udGFpbiB0aGUgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBvYmplY3QsIHNvIHRoZSAKKyAgICAgICAgLy8gICAg
dGhyZWFkIGNvbnRhaW4gdGhlIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4g
b2JqZWN0LCBzbyB0aGUKICAgICAgICAgLy8gICAgVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXIgaW5zdGFuY2UgaXMgdGhlcmUgdW50aWwgYWxsIHRhc2tzIGFyZSBleGVjdXRlZC4KICAgICAg
ICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
IHsKICAgICAgICAgcHVibGljOgpAQCAtMTIwLDEwICsxMjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgU3RyaW5nIG1fdGFza01vZGU7CiAgICAgICAgIH07CiAKLSAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmKTsKIAotICAgICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29y
a2VyR2xvYmFsU2NvcGU7Ci0gICAgICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgICAgICBSZWY8V29ya2VyR2xvYmFsU2Nv
cGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgICAgICBNYWluVGhyZWFkQnJp
ZGdlJiBtX2JyaWRnZTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA3ZGI3ZWQyNTY5MmJlZmFkZTA2ZWVhZjI0ZGE1ODZm
YWQ5YWUyMDczLi5jZDk3MWM4MTNmMzY5YTZjODI4MjJmNWRkZTZjOGY3MDRjYmRmZjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTE4
Myw5ICsxODMsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpmYWlsQmVmb3JlU3RhcnRpbmcoKQog
ICAgIGVycm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3IpOwogfQogCi1zdGF0aWMgdm9pZCBh
ZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCitzdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsUmVxdWVz
dEhlYWRlcnNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQor
ICAgIGlmIChyZXNvdXJjZS50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgbWF5IHRyeSB0byBsb2Fk
IHJlc291cmNlcyBpbiBmcmFtZWxlc3MgZG9jdW1lbnRzLiBTdWNoIGxvYWRzIGFsd2F5cyBmYWls
LgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2V0IHRoaXMgZmFyLgpAQCAtMjA2LDggKzIw
NiwyOSBAQCBzdGF0aWMgdm9pZCBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogICAgICAgICBvdXRnb2luZ09yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG91dGdvaW5nUmVmZXJyZXIpLT50b1N0
cmluZygpOwogICAgIH0KIAotICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBjYWNoZWRSZXNvdXJj
ZUxvYWRlci5kb2N1bWVudCgpID8gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKS0+cmVm
ZXJyZXJQb2xpY3koKSA6IFJlZmVycmVyUG9saWN5OjpEZWZhdWx0OwotICAgIG91dGdvaW5nUmVm
ZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihyZWZlcnJlclBv
bGljeSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcik7CisgICAgLy8gRklYTUU6IFJl
ZmFjdG9yIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyIHRvIGFsaWduIHdp
dGggbmV3IHRlcm1pbm9sb2d5IHVzZWQgaW4gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNl
Yy1yZWZlcnJlci1wb2xpY3kuCisgICAgc3dpdGNoIChyZXNvdXJjZS5vcHRpb25zKCkucmVmZXJy
ZXJQb2xpY3kpIHsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nOiB7CisgICAgICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5ID0gY2FjaGVk
UmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKSA/IGNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50
KCktPnJlZmVycmVyUG9saWN5KCkgOiBSZWZlcnJlclBvbGljeTo6RGVmYXVsdDsKKyAgICAgICAg
b3V0Z29pbmdSZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVy
KHJlZmVycmVyUG9saWN5LCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAg
ICAgYnJlYWs7IH0KKyAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVm
ZXJyZXJXaGVuRG93bmdyYWRlOgorICAgICAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQ
b2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQsIHJl
cXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI6CisgICAgICAgIG91dGdv
aW5nUmVmZXJyZXIgPSBTdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGZXRjaE9w
dGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW46CisgICAgICAgIG91dGdvaW5nUmVmZXJyZXIg
PSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeTo6
T3JpZ2luLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5XaGVuQ3Jvc3NP
cmlnaW46CisgICAgICAgIGlmIChyZXNvdXJjZS5pc0Nyb3NzT3JpZ2luKCkpCisgICAgICAgICAg
ICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIoUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbiwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJl
cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGlj
eTo6VW5zYWZlVXJsOgorICAgICAgICBicmVhazsKKyAgICB9OworCiAgICAgaWYgKG91dGdvaW5n
UmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7
CiAgICAgZWxzZQpAQCAtMjE5LDcgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIGFkZEFkZGl0aW9uYWxS
ZXF1ZXN0SGVhZGVyc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0CiAK
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVycyhDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7Ci0gICAgYWRkQWRkaXRpb25h
bFJlcXVlc3RIZWFkZXJzVG9SZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBjYWNoZWRSZXNvdXJj
ZUxvYWRlciwgdHlwZSgpKTsKKyAgICBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnNUb1JlcXVl
c3QobV9yZXNvdXJjZVJlcXVlc3QsIGNhY2hlZFJlc291cmNlTG9hZGVyLCAqdGhpcyk7CiB9CiAK
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJl
c291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCkBAIC0y
ODcsNiArMzA4LDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VM
b2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fb3JpZ2luID0gY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsKKworICAgICAgICBpZiAo
IW1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkgJiYgbV9vcmlnaW4gJiYg
IW1fb3JpZ2luLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKSkKKyAgICAgICAg
ICAgIHNldENyb3NzT3JpZ2luKCk7CisKICAgICAgICAgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFk
ZXJzKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICB9CiAKQEAgLTgwOSw3ICs4MzQsNyBAQCBi
b29sIENhY2hlZFJlc291cmNlOjp2YXJ5SGVhZGVyVmFsdWVzTWF0Y2goY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0V2l0aEZ1bGxIZWFkZXJzKHJlcXVlc3QpOwotICAgIGFkZEFkZGl0
aW9uYWxSZXF1ZXN0SGVhZGVyc1RvUmVxdWVzdChyZXF1ZXN0V2l0aEZ1bGxIZWFkZXJzLCBjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgdHlwZSgpKTsKKyAgICBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRl
cnNUb1JlcXVlc3QocmVxdWVzdFdpdGhGdWxsSGVhZGVycywgY2FjaGVkUmVzb3VyY2VMb2FkZXIs
ICp0aGlzKTsKIAogICAgIHJldHVybiB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobV92YXJ5
aW5nSGVhZGVyVmFsdWVzLCByZXF1ZXN0V2l0aEZ1bGxIZWFkZXJzLCBtX3Nlc3Npb25JRCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDY5
YThmZjVkOTUzYmI0NGM1ODdmODAzY2E3NzZiMzgwYTEwZGQyNDUuLmE1ODE5N2Q5YzZjMDA3ZjM0
OTc5MTg5YThhM2UxNmMzN2VmNmEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMzAsNiArMjMwLDcgQEAgcHVibGljOgogICAgIERhdGFC
dWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0
aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5OyB9CiAKICAgICBib29sIGFsbG93c0NhY2hpbmcoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnMuY2FjaGluZ1BvbGljeSA9PSBDYWNoaW5nUG9saWN5OjpB
bGxvd0NhY2hpbmc7IH0KKyAgICBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA4MTdlNTk0MGE1
NWUzZTE4OGNlYmIyOTQ3ZGY4ZTkwZmQ5NGI5MTY3Li5kMTM4MjA1YzI3MjA5NjA2YjVmZmM3MDY4
YmE4NTJlZTUzYWM2MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtMTEx
LDcgKzExMSw4IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNvbm5lY3QoKQogICAgIG9wdGlvbnMuZGF0
YUJ1ZmZlcmluZ1BvbGljeSA9IERvTm90QnVmZmVyRGF0YTsKICAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudDo6RW5mb3JjZUNvbm5lY3RTcmNEaXJlY3RpdmU7CiAKLSAgICBtX2xvYWRlciA9
IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMs
IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsK
IAogICAgIC8vIEZJWE1FOiBDYW4gd2UganVzdCB1c2UgbV9sb2FkZXIgZm9yIHRoaXMsIG51bGwg
aXQgb3V0IHdoZW4gaXQncyBubyBsb25nZXIgaW4gZmxpZ2h0LCBhbmQgZWxpbWluYXRlIHRoZSBt
X3JlcXVlc3RJbkZsaWdodCBtZW1iZXI/CiAgICAgaWYgKG1fbG9hZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDY3ZjljY2ExNWJlMjZh
YzA1MWZjZDQxZWQ1OTMxMDc4ODUxMzI4YzMuLjA0YzRmOTQ2NmRhNTc1YTZkZDQ1NTkzZTJlODNm
Yjc5MmQ5YzhjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKQEAgLTU2LDYgKzU2LDggQEAgV29ya2VyU2NyaXB0TG9hZGVyOjp+V29ya2VyU2Ny
aXB0TG9hZGVyKCkKIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVS
TCYgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQpCiB7CisgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworCiAgICAgbV91cmwgPSB1cmw7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0KGNyZWF0ZVJlc291cmNlUmVxdWVz
dCgpKTsKQEAgLTczLDEyICs3NSwxNCBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aQogICAgIG9w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tzOwogICAgIG9wdGlvbnMuY29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudDsKIAotICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOworICAgIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgV1RGTW92ZSgqcmVxdWVzdCksICp0
aGlzLCBvcHRpb25zKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisKICAgICBtX2NsaWVudCA9IGNsaWVudDsK
ICAgICBtX3VybCA9IHVybDsKIApAQCAtOTgsNyArMTAyLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXQKIAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNo
IHJlbW92ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmPFdvcmtl
clNjcmlwdExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgbV90aHJlYWRhYmxlTG9h
ZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRo
aXMsIFdURk1vdmUoKnJlcXVlc3QpLCBvcHRpb25zKTsKKyAgICBtX3RocmVhZGFibGVMb2FkZXIg
PSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICp0aGlz
LCBXVEZNb3ZlKCpyZXF1ZXN0KSwgb3B0aW9ucyk7CiB9CiAKIGNvbnN0IFVSTCYgV29ya2VyU2Ny
aXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCA3ZGZlYjZmZTRiMGE5Y2YyZWQzYjMxN2M5NmM0YjFmMDNiYWIyMjIwLi4y
ZWQ3ZGRhYmVmM2Q1NTQwNWNlMzNkNjkwOGU3NzI1YmFlZDJjNzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAvLyBUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUgY2FuIHJldHVybiBudWxsIGhlcmUsIGZvciBleGFtcGxlIGlmIHdl
J3JlIG5vIGxvbmdlciBhdHRhY2hlZCB0byBhIHBhZ2Ugb3IgaWYgYSBjb250ZW50IGJsb2NrZXIg
YmxvY2tzIHRoZSBsb2FkLgogICAgICAgICAvLyBUaGlzIGlzIHRydWUgd2hpbGUgcnVubmluZyBv
bnVubG9hZCBoYW5kbGVycy4KICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIG5lZWQgdG8gYmUg
YWJsZSB0byBzZW5kIFhNTEh0dHBSZXF1ZXN0cyBmcm9tIG9udW5sb2FkLCA8aHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDQ+LgotICAgICAgICBtX2xvYWRlciA9IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOworICAgICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShy
ZXF1ZXN0KSwgb3B0aW9ucyk7CiAKICAgICAgICAgLy8gTmVpdGhlciB0aGlzIG9iamVjdCBub3Ig
dGhlIEphdmFTY3JpcHQgd3JhcHBlciBzaG91bGQgYmUgZGVsZXRlZCB3aGlsZQogICAgICAgICAv
LyBhIHJlcXVlc3QgaXMgaW4gcHJvZ3Jlc3MgYmVjYXVzZSB3ZSBuZWVkIHRvIGtlZXAgdGhlIGxp
c3RlbmVycyBhbGl2ZSwKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpj
cmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3Vz
bHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1v
dmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGUwNjhhNDc2ODIy
NDc5ZTA4MzBlNGUzYzBlMGMwMjMwZTdmYzFkZTIuLjJhNTUzOWI3MzQ4OTFiYTFhZDQwMzM5MDk3
MDc1NjIxZmNkMTQ5NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDI0IEBACiAyMDE2LTA4LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbRmV0Y2ggQVBJXSBBZGQgc3VwcG9ydCB0byBSZWZlcnJlclBvbGljeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDA0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLXdvcmtl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvYmFzaWMvcmVmZXJyZXItd29ya2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci5qczogQWRk
ZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZl
cnJlci13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci5qczoKKyAgICAgICAgKGNvcnNQ
cmVmbGlnaHRSZWZlcnJlcik6IGZpeCBpbmZyYXN0cnVjdHVyZSBidWcgaW4gdGVzdCBhbmQgZml4
IGV4cGVjdGVkIHJlZmVycmVyIHBvbGljeSBpbiBkZWZhdWx0IGNhc2UuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXdvcmtlci1leHBl
Y3RlZC50eHQ6CisKKzIwMTYtMDgtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCiAgICAgICAgIE1ha2Ugd3B0IHNlcnZlciBnZW5lcmF0ZSBpdHMgY2VydGlmaWNhdGVzIGlu
IGxheW91dCB0ZXN0IHJlc3VsdHMgZm9sZGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MjIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMzY4OTFh
M2UxMGRjNzI0M2U0YjVhZTc0OTUwMjhlOWI3Yjc3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9y
ZWZlcnJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mgb3JpZ2luLXdoZW4t
Y3Jvc3Mtb3JpZ2luIHBvbGljeSBvbiBhIHNhbWUtb3JpZ2luIFVSTCAKK1BBU1Mgb3JpZ2luLXdo
ZW4tY3Jvc3Mtb3JpZ2luIHBvbGljeSBvbiBhIGNyb3NzLW9yaWdpbiBVUkwgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL3JlZmVycmVyLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci13b3JrZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMzY4OTFhM2UxMGRjNzI0M2U0YjVhZTc0OTUwMjhl
OWI3Yjc3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiBwb2xp
Y3kgb24gYSBzYW1lLW9yaWdpbiBVUkwgCitQQVNTIG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiBw
b2xpY3kgb24gYSBjcm9zcy1vcmlnaW4gVVJMIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci13
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL3JlZmVycmVyLXdvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMzk3ZGU0
MzdkYTE1MzdhNjRmYzY5MTNlMjMzYzBmY2NjY2I1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9y
ZWZlcnJlci13b3JrZXIuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPkZl
dGNoIGluIHdvcmtlcjogc2FtZS1vcmlnaW4gbW9kZTwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2giPgor
ICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3Jn
LyNiYXNpYy1mZXRjaCI+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVz
ZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVh
ZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICAgIGZldGNoX3Rlc3RzX2Zyb21fd29ya2Vy
KG5ldyBXb3JrZXIoInJlZmVycmVyLmpzIikpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YzM3YmY3M2ZlODQzYmJhNzFkYWEzYjMxOTk0MzAyNzdiMjAwY2U3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IWRvY3R5
cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPHRpdGxlPkZldGNoOiBzYW1lLW9yaWdpbiBtb2RlPC90aXRsZT4KKyAgICA8bWV0YSBuYW1l
PSJoZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaCI+
CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI2Jhc2ljLWZldGNoIj4KKyAgICA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJDYW5vbiBS
ZXNlYXJjaCBGcmFuY2UiIGhyZWY9Imh0dHBzOi8vd3d3LmNyZi5jYW5vbi5mciI+CisgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgPC9o
ZWFkPgorICA8Ym9keT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2dldC1ob3N0LWluZm8uc3Vi
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVmZXJyZXIuanMiPjwvc2NyaXB0Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlZmVy
cmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2OWQzZWE3OWFjZjBhZDRmYWUwMjdiMGE2OGE4MzMzOWJjMTc2
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci5qcwpAQCAtMCwwICsxLDI1IEBACitp
ZiAodGhpcy5kb2N1bWVudCA9PT0gdW5kZWZpbmVkKSB7CisgIGltcG9ydFNjcmlwdHMoIi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiKTsKKyAgaW1wb3J0U2NyaXB0cygiLi4vcmVzb3VyY2VzL3V0
aWxzLmpzIik7CisgIGltcG9ydFNjcmlwdHMoIi4uL3Jlc291cmNlcy9nZXQtaG9zdC1pbmZvLnN1
Yi5qcyIpCit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodXJsLCBpbml0LCBleHBlY3RlZFJlZmVycmVy
LCB0aXRsZSkgeworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHJl
dHVybiBmZXRjaCh1cmwgLCBpbml0KS50aGVuKGZ1bmN0aW9uKHJlc3ApIHsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocmVzcC5zdGF0dXMsIDIwMCwgIkhUVFAgc3RhdHVzIGlzIDIwMCIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVlc3QtcmVm
ZXJlciIpLCBleHBlY3RlZFJlZmVycmVyLCAiUmVxdWVzdCdzIHJlZmVycmVyIGlzIGNvcnJlY3Qi
KTsKKyAgICAgICAgfSk7CisgIH0sIHRpdGxlKTsKK30KKwordmFyIGZldGNoZWRVcmwgPSBSRVNP
VVJDRVNfRElSICsgImluc3BlY3QtaGVhZGVycy5weT9oZWFkZXJzPXJlZmVyZXIiOwordmFyIGNv
cnNGZXRjaGVkVXJsID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiAgKyBkaXJu
YW1lKGxvY2F0aW9uLnBhdGhuYW1lKSArIFJFU09VUkNFU19ESVIgKyAiaW5zcGVjdC1oZWFkZXJz
LnB5P2hlYWRlcnM9cmVmZXJlciZjb3JzIjsKK3ZhciByZWRpcmVjdFVybCA9IFJFU09VUkNFU19E
SVIgKyAicmVkaXJlY3QucHk/bG9jYXRpb249IiA7Cit2YXIgY29yc1JlZGlyZWN0VXJsID0gZ2V0
X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIGRpcm5hbWUobG9jYXRpb24ucGF0aG5h
bWUpICsgUkVTT1VSQ0VTX0RJUiArICJyZWRpcmVjdC5weT9sb2NhdGlvbj0iOworCitydW5UZXN0
KGZldGNoZWRVcmwsIHsgcmVmZXJyZXJQb2xpY3k6ICJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4i
fSwgbG9jYXRpb24udG9TdHJpbmcoKSwgIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiBwb2xpY3kg
b24gYSBzYW1lLW9yaWdpbiBVUkwiKTsKK3J1blRlc3QoY29yc0ZldGNoZWRVcmwsIHsgcmVmZXJy
ZXJQb2xpY3k6ICJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4ifSwgZ2V0X2hvc3RfaW5mbygpLkhU
VFBfT1JJR0lOICsgIi8iLCAib3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIHBvbGljeSBvbiBhIGNy
b3NzLW9yaWdpbiBVUkwiKTsKKworZG9uZSgpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxp
Z2h0LXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDlkNjlhYzkzZTk0MGU0YWM0ZWZjNGM1OWMwNTExNDhmYzBhZTdhNTUu
LmRlMTBlZjI5NjRiMjk0MmE0ZjFkZDg3NjUwNjA2ODIzNTczY2QyYWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMv
Y29ycy1wcmVmbGlnaHQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGln
aHQtcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCi1GQUlMIFJlZmVycmVy
IHBvbGljeTogbm8tcmVmZXJyZXIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBSZWZlcnJlciBw
b2xpY3k6ICIiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiBvcmln
aW4gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiBUeXBlIGVycm9yIgotRkFJTCBSZWZlcnJlciBwb2xpY3k6IG9yaWdpbi13aGVu
LWNyb3NzLW9yaWdpbiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1
ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCi1GQUlMIFJlZmVycmVyIHBvbGljeTog
dW5zYWZlLXVybCBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCitQQVNTIFJlZmVycmVyIHBvbGljeTogbm8t
cmVmZXJyZXIgCitQQVNTIFJlZmVycmVyIHBvbGljeTogIiIgCitQQVNTIFJlZmVycmVyIHBvbGlj
eTogb3JpZ2luIAorUEFTUyBSZWZlcnJlciBwb2xpY3k6IG9yaWdpbi13aGVuLWNyb3NzLW9yaWdp
biAKK1BBU1MgUmVmZXJyZXIgcG9saWN5OiB1bnNhZmUtdXJsIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2Nv
cnMtcHJlZmxpZ2h0LXJlZmVycmVyLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxp
Z2h0LXJlZmVycmVyLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggOWQ2OWFjOTNlOTQwZTRhYzRl
ZmM0YzU5YzA1MTE0OGZjMGFlN2E1NS4uZGUxMGVmMjk2NGIyOTQyYTRmMWRkODc2NTA2MDY4MjM1
NzNjZDJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci13b3JrZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXItd29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMSw3ICsxLDcgQEAKIAotRkFJTCBSZWZlcnJlciBwb2xpY3k6IG5vLXJlZmVycmVy
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogVHlwZSBlcnJvciIKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiAiIiBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5
cGUgZXJyb3IiCi1GQUlMIFJlZmVycmVyIHBvbGljeTogb3JpZ2luIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJv
ciIKLUZBSUwgUmVmZXJyZXIgcG9saWN5OiBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4gcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBUeXBlIGVycm9yIgotRkFJTCBSZWZlcnJlciBwb2xpY3k6IHVuc2FmZS11cmwgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBU
eXBlIGVycm9yIgorUEFTUyBSZWZlcnJlciBwb2xpY3k6IG5vLXJlZmVycmVyIAorUEFTUyBSZWZl
cnJlciBwb2xpY3k6ICIiIAorUEFTUyBSZWZlcnJlciBwb2xpY3k6IG9yaWdpbiAKK1BBU1MgUmVm
ZXJyZXIgcG9saWN5OiBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4gCitQQVNTIFJlZmVycmVyIHBv
bGljeTogdW5zYWZlLXVybCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJl
ci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXIuanMKaW5kZXggNDBlNGE3Zjc5MDEyYTkz
ZmNiMTU0MzFmYzI5ODQ5YTE2ZTFkMjhhYS4uM2I2ZWYwYzhiMjdlYTBiYjNiMmViNmJlMDYxZWY3
YWE3MjgyYjMxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9j
b3JzL2NvcnMtcHJlZmxpZ2h0LXJlZmVycmVyLmpzCkBAIC0xLDYgKzEsNyBAQAogaWYgKHRoaXMu
ZG9jdW1lbnQgPT09IHVuZGVmaW5lZCkgewogICBpbXBvcnRTY3JpcHRzKCIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIik7CiAgIGltcG9ydFNjcmlwdHMoIi9jb21tb24vdXRpbHMuanMiKTsKKyAg
aW1wb3J0U2NyaXB0cygiLi4vcmVzb3VyY2VzL2dldC1ob3N0LWluZm8uc3ViLmpzIik7CiAgIGlt
cG9ydFNjcmlwdHMoIi4uL3Jlc291cmNlcy91dGlscy5qcyIpOwogfQogCkBAIC0yMSwxNyArMjIs
MTggQEAgZnVuY3Rpb24gY29yc1ByZWZsaWdodFJlZmVycmVyKGRlc2MsIGNvcnNVcmwsIHJlZmVy
cmVyUG9saWN5LCBleHBlY3RlZFJlZmVycmVyKQogICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Au
c3RhdHVzLCAyMDAsICJSZXNwb25zZSdzIHN0YXR1cyBpcyAyMDAiKTsKICAgICAgICAgYXNzZXJ0
X2VxdWFscyhyZXNwLmhlYWRlcnMuZ2V0KCJ4LWRpZC1wcmVmbGlnaHQiKSwgIjEiLCAiUHJlZmxp
Z2h0IHJlcXVlc3QgaGFzIGJlZW4gbWFkZSIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Au
aGVhZGVycy5nZXQoIngtcHJlZmxpZ2h0LXJlZmVycmVyIiksIGV4cGVjdGVkUmVmZXJyZXIsICJQ
cmVmbGlnaHQncyByZWZlcnJlciBpcyBjb3JyZWN0Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzcC5oZWFkZXJzLmdldCgieC1yZWZlcnJlciIpLCBleHBlY3RlZFJlZmVycmVyLCAiUmVxdWVz
dCdzIHJlZmZlcmVyIGlzIGNvcnJlY3QiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLmhl
YWRlcnMuZ2V0KCJ4LXJlZmVycmVyIiksIGV4cGVjdGVkUmVmZXJyZXIsICJSZXF1ZXN0J3MgcmVm
ZXJyZXIgaXMgY29ycmVjdCIpOwogICAgICAgfSk7CiAgICAgfSk7CiAgIH0sIGRlc2MpOwogfQog
Ci12YXIgY29yc1VybCA9ICJodHRwOi8ve3tob3N0fX06e3twb3J0c1todHRwXVsxXX19IiArIGRp
cm5hbWUobG9jYXRpb24ucGF0aG5hbWUpICsgUkVTT1VSQ0VTX0RJUiArICJwcmVmbGlnaHQucHki
OwotdmFyIG9yaWdpbiA9ICJodHRwOi8ve3tob3N0fX06e3twb3J0c1todHRwXVswXX19IjsKK3Zh
ciBjb3JzVXJsID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiAgKyBkaXJuYW1l
KGxvY2F0aW9uLnBhdGhuYW1lKSArIFJFU09VUkNFU19ESVIgKyAicHJlZmxpZ2h0LnB5IjsKK3Zh
ciBvcmlnaW4gPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9PUklHSU4gKyAiLyI7CiAKIGNvcnNQcmVm
bGlnaHRSZWZlcnJlcigiUmVmZXJyZXIgcG9saWN5OiBuby1yZWZlcnJlciIsIGNvcnNVcmwsICJu
by1yZWZlcnJlciIsICIiKTsKLWNvcnNQcmVmbGlnaHRSZWZlcnJlcigiUmVmZXJyZXIgcG9saWN5
OiBcIlwiIiwgY29yc1VybCwgIiIsICIiKTsKK2NvcnNQcmVmbGlnaHRSZWZlcnJlcigiUmVmZXJy
ZXIgcG9saWN5OiBcIlwiIiwgY29yc1VybCwgIiIsIGxvY2F0aW9uLnRvU3RyaW5nKCkpCisKIGNv
cnNQcmVmbGlnaHRSZWZlcnJlcigiUmVmZXJyZXIgcG9saWN5OiBvcmlnaW4iLCBjb3JzVXJsLCAi
b3JpZ2luIiwgb3JpZ2luKTsKIGNvcnNQcmVmbGlnaHRSZWZlcnJlcigiUmVmZXJyZXIgcG9saWN5
OiBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iLCBjb3JzVXJsLCAib3JpZ2luLXdoZW4tY3Jvc3Mt
b3JpZ2luIiwgb3JpZ2luKTsKIGNvcnNQcmVmbGlnaHRSZWZlcnJlcigiUmVmZXJyZXIgcG9saWN5
OiB1bnNhZmUtdXJsIiwgY29yc1VybCwgInVuc2FmZS11cmwiLCBsb2NhdGlvbi50b1N0cmluZygp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMv
Y29ycy1wcmVmbGlnaHQtd29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA3OTI4ZTQ4ZjMxNWI3Nzc1
MzE2ZWU1NWExYWVlMTI2NTA3MTViYmM0Li5mYTM4ZTk4Y2U5MzQzOGMxOTI3NmQ5Y2Q0MDdkZGZm
N2JmYTA2OTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXdvcmtlci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC03LDEwICs3
LDEwIEBAIFBBU1MgQ09SUyBbUEFUQ0hdLCBzZXJ2ZXIgYWxsb3dzCiBQQVNTIENPUlMgW1BBVENI
XSwgc2VydmVyIHJlZnVzZXMgCiBQQVNTIENPUlMgW05FV10sIHNlcnZlciBhbGxvd3MgCiBQQVNT
IENPUlMgW05FV10sIHNlcnZlciByZWZ1c2VzIAotRkFJTCBDT1JTIFtHRVRdIFt4LXRlc3QtaGVh
ZGVyOiBhbGxvd2VkXSwgc2VydmVyIGFsbG93cyBhc3NlcnRfZXF1YWxzOiBBY2Nlc3MtQ29udHJv
bC1BbGxvdy1IZWFkZXJzIHZhbHVlIGV4cGVjdGVkICJ4LXRlc3QtaGVhZGVyMSIgYnV0IGdvdCAi
cmVmZXJlcix4LXRlc3QtaGVhZGVyMSIKK1BBU1MgQ09SUyBbR0VUXSBbeC10ZXN0LWhlYWRlcjog
YWxsb3dlZF0sIHNlcnZlciBhbGxvd3MgCiBQQVNTIENPUlMgW0dFVF0gW3gtdGVzdC1oZWFkZXI6
IHJlZnVzZWRdLCBzZXJ2ZXIgcmVmdXNlcyAKLUZBSUwgQ09SUyBbR0VUXSBbc2V2ZXJhbCBoZWFk
ZXJzXSwgc2VydmVyIGFsbG93cyBhc3NlcnRfZXF1YWxzOiBBY2Nlc3MtQ29udHJvbC1BbGxvdy1I
ZWFkZXJzIHZhbHVlIGV4cGVjdGVkICJjb250ZW50LXR5cGUseC10ZXN0LWhlYWRlci1hLHgtdGVz
dC1oZWFkZXItYix4LXRlc3QtaGVhZGVyLWMseC10ZXN0LWhlYWRlci1kLHgtdGVzdC1oZWFkZXIx
LHgtdGVzdC1oZWFkZXIyLHgtdGVzdC1oZWFkZXIzIiBidXQgZ290ICJjb250ZW50LXR5cGUscmVm
ZXJlcix4LXRlc3QtaGVhZGVyLWEseC10ZXN0LWhlYWRlci1iLHgtdGVzdC1oZWFkZXItYyx4LXRl
c3QtaGVhZGVyLWQseC10ZXN0LWhlYWRlcjEseC10ZXN0LWhlYWRlcjIseC10ZXN0LWhlYWRlcjMi
CitQQVNTIENPUlMgW0dFVF0gW3NldmVyYWwgaGVhZGVyc10sIHNlcnZlciBhbGxvd3MgCiBQQVNT
IENPUlMgW0dFVF0gW3NldmVyYWwgaGVhZGVyc10sIHNlcnZlciByZWZ1c2VzIAotRkFJTCBDT1JT
IFtQVVRdIFtzZXZlcmFsIGhlYWRlcnNdLCBzZXJ2ZXIgYWxsb3dzIGFzc2VydF9lcXVhbHM6IEFj
Y2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMgdmFsdWUgZXhwZWN0ZWQgImNvbnRlbnQtdHlwZSx4
LXRlc3QtaGVhZGVyLWEseC10ZXN0LWhlYWRlci1iLHgtdGVzdC1oZWFkZXItYyx4LXRlc3QtaGVh
ZGVyLWQseC10ZXN0LWhlYWRlcjEseC10ZXN0LWhlYWRlcjIseC10ZXN0LWhlYWRlcjMiIGJ1dCBn
b3QgImNvbnRlbnQtdHlwZSxyZWZlcmVyLHgtdGVzdC1oZWFkZXItYSx4LXRlc3QtaGVhZGVyLWIs
eC10ZXN0LWhlYWRlci1jLHgtdGVzdC1oZWFkZXItZCx4LXRlc3QtaGVhZGVyMSx4LXRlc3QtaGVh
ZGVyMix4LXRlc3QtaGVhZGVyMyIKK1BBU1MgQ09SUyBbUFVUXSBbc2V2ZXJhbCBoZWFkZXJzXSwg
c2VydmVyIGFsbG93cyAKIFBBU1MgQ09SUyBbUFVUXSBbc2V2ZXJhbCBoZWFkZXJzXSwgc2VydmVy
IHJlZnVzZXMgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285080</attachid>
            <date>2016-08-02 00:25:41 -0700</date>
            <delta_ts>2016-08-02 00:26:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160404-20160802092418.patch</filename>
            <type>text/plain</type>
            <size>167359</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NGI0ZGJhZGNiMzJlYzgyM2IzYWE1NmNhZjgwYTcxNjk2YWVkNmUzLi44ODVjNWMwNTVhNDc4ODhm
ZTMwMzZhYWY2N2RiNDAyNTU4N2RmODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNi0wOC0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIFJFR1JFU1NJT04gKHIyMDM5OTApOiBKU0MgRGVidWcgdGVzdCBzdHJlc3MvYXJp
dHktY2hlY2stZnRsLXRocm93LmpzIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsg
TGFtLgorICAgICAgICAKKyAgICAgICAgSW4gcjIwMzk5MCBJIGZpeGVkIGEgYnVnIHdoZXJlIENv
bW1vblNsb3dQYXRocy5oL2FyaXR5Q2hlY2tGb3IoKSB3YXMgYmFzaWNhbGx5IGZhaWxpbmcgYXQK
KyAgICAgICAgY2F0Y2hpbmcgc3RhY2sgb3ZlcmZsb3cgZHVlIHRvIGxhcmdlIHBhcmFtZXRlciBj
b3VudC4gSXQgd291bGQgb25seSBjYXRjaCByZWd1bGFyIG9sZCBzdGFjaworICAgICAgICBvdmVy
ZmxvdywgbGlrZSBpZiB0aGUgZnJhbWUgcG9pbnRlciB3YXMgYWxyZWFkeSBwYXN0IHRoZSBsaW1p
dC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaGFkIGEgc2Vjb25kYXJ5IHByb2JsZW06IHVuZm9y
dHVuYXRlbHkgYWxsIG9mIG91ciB0ZXN0cyBmb3Igd2hhdCBoYXBwZW5zIHdoZW4geW91IG92ZXJm
bG93CisgICAgICAgIHRoZSBzdGFjayBkdWUgdG8gbGFyZ2UgcGFyYW1ldGVyIGNvdW50IHdlcmUg
bm90IGdvaW5nIGRvd24gdGhhdCBwYXRoIGF0IGFsbCwgc28gd2UgaGF2ZW4ndCBoYWQKKyAgICAg
ICAgdGVzdCBjb3ZlcmFnZSBmb3IgdGhpcyBpbiBhZ2VzLiAgVGhlcmUgd2VyZSBidWdzIGluIGFs
bCB0aWVycyBvZiB0aGUgZW5naW5lIHdoZW4gaGFuZGxpbmcgdGhpcworICAgICAgICBjYXNlLgor
CisgICAgICAgIFdlIG5lZWQgdG8gYmUgYWJsZSB0byByb2xsIGJhY2sgdGhlIHRvcENhbGxGcmFt
ZSBvbiBwYXRocyB0aGF0IGFyZSBtZWFudCB0byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAg
ZnJvbSB0aGUgY2FsbGVyLiBPdGhlcndpc2UsIHdlJ2QgY3Jhc2ggaW4gU3RhY2tWaXNpdG9yIGJl
Y2F1c2UgaXQgd291bGQgc2VlIGEgYnVzdGVkIHN0YWNrCisgICAgICAgIGZyYW1lLiBSb2xsaW5n
IGJhY2sgbGlrZSB0aGlzICJqdXN0IHdvcmtzIiBleGNlcHQgd2hlbiB0aGUgY2FsbGVyIGlzIHRo
ZSBWTSBlbnRyeSBmcmFtZS4gSSBoYWQKKyAgICAgICAgc29tZSBjaG9pY2VzIGhlcmUuIEkgY291
bGQgaGF2ZSBmb3JjZWQgYW55b25lIHdobyBpcyByb2xsaW5nIGJhY2sgdG8gYWx3YXlzIHNraXAg
Vk0gZW50cnkKKyAgICAgICAgZnJhbWVzLiBUaGV5IGNhbid0IGRvIGl0IGluIGEgd2F5IHRoYXQg
Y2hhbmdlcyB0aGUgdmFsdWUgb2YgVk06OnRvcFZNRW50cnlGcmFtZSwgd2hpY2ggaXMgd2hhdAor
ICAgICAgICBhIHN0YWNrIGZyYW1lIHJvbGwgYmFjayBub3JtYWxseSBkb2VzLCBzaW5jZSBleGNl
cHRpb24gdW53aW5kaW5nIG5lZWRzIHRvIHNlZSB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICBv
ZiB0b3BWTUVudHJ5RnJhbWUuIFNvLCB3ZSBoYXZlIGEgY2hvaWNlIHRvIGVpdGhlciB0cnkgdG8g
bWFnaWNhbGx5IGF2b2lkIGFsbCBvZiB0aGUgcGF0aHMgdGhhdAorICAgICAgICBsb29rIGF0IHRv
cENhbGxGcmFtZSwgb3IgZ2l2ZSB0b3BDYWxsRnJhbWUgYSBzdGF0ZSB0aGF0IHVuYW1iaWd1b3Vz
bHkgc2lnbmFscyB0aGF0IHdlIGFyZQorICAgICAgICBzaXR0aW5nIHJpZ2h0IG9uIHRvcCBvZiBh
IFZNIGVudHJ5IGZyYW1lIHdpdGhvdXQgaGF2aW5nIHN1Y2NlZWRlZCBhdCBtYWtpbmcgYSBKUyBj
YWxsLiBUaGUgb25seQorICAgICAgICBwbGFjZSB0aGF0IHJlYWxseSBuZWVkcyB0byBrbm93IGlz
IFN0YWNrVmlzaXRvciwgd2hpY2ggd2FudHMgdG8gc3RhcnQgc2Nhbm5pbmcgYXQgdG9wQ2FsbEZy
YW1lLgorICAgICAgICBUbyBzaWduYWwgdGhpcywgSSBjb3VsZCBoYXZlIGVpdGhlciBtYWRlIHRv
cENhbGxGcmFtZSBwb2ludCB0byB0aGUgcmVhbCB0b3AgSlMgY2FsbCBmcmFtZQorICAgICAgICB3
aXRob3V0IGFsc28gcm9sbGluZyBiYWNrIHRvcFZNRW50cnlGcmFtZSwgb3IgSSBjb3VsZCBtYWtl
IHRvcENhbGxGcmFtZSA9PSB0b3BWTUVudHJ5RnJhbWUuIFRoZQorICAgICAgICBsYXR0ZXIgZmVs
dCBzb21laG93IGNsZWFuZXIuIEkgZmlsZWQgYSBidWcgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA0NDEpIGZvcgorICAgICAgICBjb252ZXJ0aW5nIHRvcENhbGxG
cmFtZSB0byBhIHZvaWQqLCB3aGljaCB3b3VsZCBnaXZlIHVzIGEgY2hhbmNlIHRvIGhhcmRlbiB0
aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgZW5naW5lIGFnYWluc3QgdGhpcyBjYXNlLgorICAgICAg
ICAKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlND
OjpTdGFja1Zpc2l0b3I6OlN0YWNrVmlzaXRvcik6CisgICAgICAgIFdlIG1heSBkbyBTaGFkb3dD
aGlja2VuIHByb2Nlc3NpbmcsIHdoaWNoIGludm9rZXMgU3RhY2tWaXNpdG9yLCB3aGVuIHdlIGhh
dmUgdG9wQ2FsbEZyYW1lCisgICAgICAgIHBvaW50aW5nIGF0IHRvcFZNRW50cnlGcmFtZS4gVGhp
cyB0ZWFjaGVzIFN0YWNrVmlzaXRvciBob3cgdG8gaGFuZGxlIHRoaXMgY2FzZS4gSSBiZWxpZXZl
IHRoYXQKKyAgICAgICAgU3RhY2tWaXNpdG9yIGlzIHRoZSBvbmx5IHBsYWNlIHRoYXQgbmVlZHMg
dG8gYmUgdGF1Z2h0IGFib3V0IHRoaXMgYXQgdGhpcyB0aW1lLCBiZWNhdXNlIGl0J3MKKyAgICAg
ICAgb25lIG9mIHRoZSBmZXcgdGhpbmdzIHRoYXQgYWNjZXNzIHRvcENhbGxGcmFtZSBhbG9uZyB0
aGlzIHNwZWNpYWwgcGF0aC4KKyAgICAgICAgCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOiBSb2xsIGJhY2sgdGhlIHRvcCBjYWxsIGZyYW1lLgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBSb2xsIGJh
Y2sgdGhlIHRvcCBjYWxsIGZyYW1lLgorCiAyMDE2LTA4LTAxICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdW0FSTTY0XSBGaXggYnJhbmNoVGVz
dDMyLzY0IHRha2luZyBhbiBpbW1lZGlhdGUgYXMgbWFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU1ZDJkZDRl
Y2I0N2QyYTAyYjA0MDU5Yjk4ZWRkOWQ1NDEzMDU0MDIuLjM5NzMwZDcxNmY5ODRkMTQ5MjViN2Nj
ZTIyYThmMmNlY2U4YmNjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNjggQEAKKzIwMTYtMDgt
MDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtGZXRjaCBB
UEldIEFkZCBzdXBwb3J0IHRvIFJlZmVycmVyUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBB
bGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZlcnJlci13b3JrZXIuaHRtbAorICAgICAgICAg
ICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVm
ZXJyZXIuaHRtbAorCisgICAgICAgIFJlZmFjdG9yZWQgVGhyZWFkYWJsZUxvYWRlciBBUEkgdG8g
dGFrZSBtb3JlIHJlZmVyZW5jZXMuCisKKyAgICAgICAgVXBkYXRlZCBsb2FkaW5nIGNvZGUgaW4g
Q2FjaGVkUmVzb3VyY2UgdG8gdGFrZSBpbnRvIGFjY291bnQgcmVmZXJyZXIgcG9saWN5LCB0aGF0
IGNhbiBiZSBzZXQgYnkgZmV0Y2ggQVBJLgorICAgICAgICBUbyBlbmFibGUgY29ycmVjdCBoYW5k
bGluZyBvZiBPcmlnaW5XaGVuQ3Jvc3NPcmlnaW4gcG9saWN5LCB0aGUgY29tcHV0YXRpb24gb2Yg
dGhlIGNyb3NzLW9yaWdpbiBzdGF0dXMgb2YgYSByZXF1ZXN0IGlzCisgICAgICAgIG1vdmVkIGZy
b20gUmVzb3VyY2VMb2FkZXIgdG8gQ2FjaGVkUmVzb3VyY2UuCisKKyAgICAgICAgUmVmZXJyZXIg
aXMgcGFzc2VkIHRvIHRoZSBsb2FkaW5nIGNvZGUgdGhyb3VnaCBIVFRQIGhlYWRlcnMuCisgICAg
ICAgIFRoaXMgd2FzIHRyaWdnZXJpbmcgcHJlZmxpZ2h0aW5nIGZvciBXb3JrZXJzIHJlcXVlc3Qg
YXMgV29ya2VyVGhyZWFkYWJsZUxvYWRlciB3YXMgc2V0dGluZyB0aGUgcmVmZXJyZXIuCisgICAg
ICAgIEl0IGlzIG5vdyBkb25lIGluIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3Qgc28gdGhhdCBwcmVmbGlnaHRpbmcgaXMgZG9uZSBiZWZvcmUgc2V0dGluZyB0aGUgcmVmZXJy
ZXIuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHJlZmVycmVyIHNldHRpbmcgaXMgb25seSBhIHdh
eSB0byBwYXNzIGEgc3BlY2lmaWMgcmVmZXJyZXIgdmFsdWUgdG8gdGhlIGxvYWRpbmcgY29kZS4K
KyAgICAgICAgQ2FjaGVkUmVzb3VyY2UgY29kZSB3aWxsIGNvbXB1dGUgdGhlIGFjdHVhbCByZWZl
cmVyIHZhbHVlIGJhc2VkIG9uIHRoZSByZWZlcnJlciBwb2xpY3kuCisgICAgICAgIEl0IG1pZ2h0
IGJlIGdvb2QgaW4gdGhlIGZ1dHVyZSB0byBoYXZlIGEgZGlmZmVyZW50IHdheSBvZiBjb252ZXlp
bmcgdGhpcyBpbmZvcm1hdGlvbiB0byBDYWNoZWRSZXNvdXJjZSwgbWF5YmUKKyAgICAgICAgdGhy
b3VnaCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydCk6IFJl
ZmFjdG9yaW5nIG9mIFRocmVhZGFibGVMb2FkZXIgQVBJLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6aW50
ZXJuYWxSZXF1ZXN0KTogU2V0dGluZyByZWZlcnJlciBpZiBpdCBoYXMgYSBzcGVjaWZpYyB2YWx1
ZS4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQpOiBSYWN0b3Jpbmcgb2YgVGhyZWFkYWJsZUxv
YWRlciBBUEkuCisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnN0YXJ0
UHJlZmxpZ2h0KTogU2V0IHJlZmVycmVyIGluIHRoZSBwcmVmbGlnaHQgcmVxdWVzdCBpZiBhbnku
CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxp
Z2h0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOiBSZWZhY3RvcmluZyBvZiBUaHJlYWRhYmxlTG9hZGVyIEFQSS4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cmVmZXJyZXIpOiBTdG9yaW5nIHJlZmVycmVyIGluIGNhc2Ugb25lIGlzIGRl
ZmluZWQuCisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjppbml0KTogUmVtb3Zpbmcgb2YgY3Jvc3Mgb3Jp
Z2luIGNvbXB1dGF0aW9uIHNpbmNlIGl0IGlzIGRvbmUgZWFybGllciBpbiBDYWNoZWRSZXNvdXJj
ZS4KKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOiBSZWZhY3RvcmluZyBvZiBUaHJlYWRhYmxl
TG9hZGVyIEFQSS4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKTogRGl0dG8uCisgICAgICAgICogbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSk6IFJlbW92aW5nIHNldHRpbmcgb2YgcmVmZXJyZXIgaW4gaGVhZGVyIGFuZCBwYXNzaW5n
CisgICAgICAgIGl0IGFzIGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOiBSZWZhY3RvcmluZyBvZiBU
aHJlYWRhYmxlTG9hZGVyIEFQSS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzVG9S
ZXF1ZXN0KTogQ29tcHV0YXRpb24gb2YgcmVmZXJyZXIgYmFzZWQgb24gcmVmZXJyZXIgcG9saWN5
LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZEFkZGl0aW9uYWxSZXF1ZXN0
SGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQp
OiBDb21wdXRhdGlvbiBvZiBjcm9zcyBvcmlnaW4gc3RhdHVzLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnZhcnlIZWFkZXJWYWx1ZXNNYXRjaCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6b3B0aW9ucyk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFNvdXJjZTo6Y29ubmVjdCk6IFJlZmFjdG9yaW5nIG9mIFRocmVhZGFibGVM
b2FkZXIgQVBJLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJv
bm91c2x5KTogRGl0dG8uCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KTogRGl0dG8uCisKKzIw
MTYtMDgtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZmFjdG9yIGRhdGEgcGFzc2VkIGFsb25nIGZvciBhICJHZXRSZWNvcmQiIHJlcXVlc3QuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzNTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8g
YmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICBBZGRpbmcgdGhpcyBuZXcgb2JqZWN0IGxldHMg
dXMgZWFzaWx5IGFkZCBuZXcgZGF0YSBwYXNzZWQgYWxvbmcgZm9yIEdldFJlY29yZAorICAgICAg
ICByZXF1ZXN0cyBnb2luZyBmb3J3YXJkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmdldCk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdElu
ZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRP
blNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Omdl
dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0UmVjb3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg6CisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpnZXRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCR2V0UmVjb3JkRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0UmVj
b3JkRGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCR2V0UmVjb3JkRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJl
Y29yZERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZWNvcmREYXRhOjpk
ZWNvZGUpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJl
Y29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5oOgorCisyMDE2LTA4LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBbRmV0Y2ggQVBJXSBQYXNzIGRpcmVjdGx5IEZldGNoUmVxdWVzdCBmZXRjaCBv
cHRpb25zIHRvIFRocmVhZGFibGVMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDQwNworCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGVkIGEg
UmVzb3VyY2VMb2FkZXJPcHRpb25zIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYSBGZXRjaE9wdGlv
bnMgYXMgaW5wdXQuCisgICAgICAgIFJlbW92ZWQgc2V0dGVycyBhbmQgZ2V0dGVycyBvZiBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgYXMgaXQgaXMgYSBzdHJ1Y3QuCisgICAgICAgIFVwZGF0ZWQgbWVt
YmVyIGZpZWxkcyBhY2NvcmRpbmdseS4KKworICAgICAgICBVcGRhdGVkIGNvZGUgYWNjb3JkaW5n
bHkuCisgICAgICAgIFJlbW92ZWQgZXhwbGljaXQgb3B0aW9uIHNldHRpbmcgaWYgaXQgaXMgdGhl
IHNhbWUgYXMgdGhlIGRlZmF1bHQgdmFsdWUuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydCk6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udCk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
U2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVk
SW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2Ny
aXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQpOgorICAgICAgICAqIGh0bWwvSFRNTExp
bmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vz
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAg
ICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OnZhbGlkYXRlUHJlZmxpZ2h0UmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpz
dGFydFByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVk
aXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxl
bWVudCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERlZmVyc0xv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJp
bmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZ09uZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFu
dXBGb3JFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2hvdWxkU2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6c2V0U2VuZENhbGxiYWNrUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpzaG91bGRTbmlmZkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0
aW9uczo6UmVzb3VyY2VMb2FkZXJPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyT3B0aW9uczo6c2VuZExvYWRDYWxsYmFja3MpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zOjpzZXRTZW5kTG9hZENhbGxiYWNrcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OnNuaWZmQ29udGVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OnNl
dFNuaWZmQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ck9wdGlvbnM6OmRhdGFCdWZmZXJpbmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9uczo6YWxsb3dDcmVkZW50
aWFscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6
OnNldEFsbG93Q3JlZGVudGlhbHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJPcHRpb25zOjpzZWN1cml0eUNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyT3B0aW9uczo6c2V0U2VjdXJpdHlDaGVjayk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OmNlcnRpZmljYXRlSW5mb1Bv
bGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6
OnNldENlcnRpZmljYXRlSW5mb1BvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlck9wdGlvbnM6OmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zOjpzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyT3B0aW9uczo6ZGVmZXJzTG9hZGluZ1BvbGljeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OnNldERlZmVyc0xvYWRpbmdQ
b2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25z
OjpjYWNoaW5nUG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyT3B0aW9uczo6c2V0Q2FjaGluZ1BvbGljeSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKToKKyAgICAgICAg
KiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0xvYWRlcjo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpzZXREYXRhQnVmZmVy
aW5nUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmRhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmFsbG93c0NhY2hpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6
OnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0OjphbGxvd3NDYWNoaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNvbm5l
Y3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6bG9hZFBlbmRpbmdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6bG9hZFBlbmRpbmdTVkdGaWx0ZXJzKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVlc3RJ
bWFnZVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6bG9hZEZvbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9jdW1lbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6
bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisKKzIw
MTYtMDgtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIE1vdmUgdGhlIHJlZGlyZWN0ZWQgWENvbXBvc2l0ZSB3aW5kb3cgdG8gdGhl
IHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjAzODkKKworICAgICAgICBSZXZpZXdlZCBieSDFvWFuIERvYmVyxaFlay4KKworICAg
ICAgICBBZGQgaGVscGVyIG1ldGhvZHMgdG8gUGxhdGZvcm1EaXNwbGF5WDExIHRvIHF1ZXJ5IFgg
ZXh0ZW5zaW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGRpc3BsYXkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmg6CisKIDIwMTYtMDgtMDEgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaCBBUEldIEZl
dGNoIHByb21pc2VzIHNob3VsZCBub3QgcmVqZWN0IG9yIHJlc29sdmUgd2hlbiBBY3RpdmVET01P
YmplY3RzIGFyZSBiZWluZyBzdG9wcGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Q1MGNiODY1YzY4NmZkZDY5
MDg1ZWFlOGM4MzhiMWUzYjJjNTQ0Ni4uNTM5NmMxNDVjODczMDIyNDkzNDZhYzRmY2FiYjU4NDY2
OWE3MDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OSBAQAorMjAxNi0wOC0wMiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgZGF0YSBwYXNz
ZWQgYWxvbmcgZm9yIGEgIkdldFJlY29yZCIgcmVxdWVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM1MgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6Z2V0UmVjb3JkKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0
UmVjb3JkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmg6CisKKzIwMTYtMDgtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE1vdmUgdGhlIHJlZGlyZWN0
ZWQgWENvbXBvc2l0ZSB3aW5kb3cgdG8gdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzODkKKworICAgICAgICBSZXZpZXdl
ZCBieSDFvWFuIERvYmVyxaFlay4KKworICAgICAgICBJbiB0aGUgY3VycmVudCBjb2RlLCB0aGUg
VUkgcHJvY2VzcyBjcmVhdGVzIHRoZSByZWRpcmVjdGVkIHdpbmRvdyB0aGF0IHRoZSB3ZWIgcHJv
Y2VzcyB1c2VzIHRvIHJlbmRlcgorICAgICAgICBhY2NlbGVyYXRlZCBjb250ZW50cy4gVGhlIHJl
ZGlyZWN0ZWQgd2luZG93IGlzIHNlbnQgdG8gdGhlIHdlYiBwcm9jZXNzIGFzIG5hdGl2ZSBzdXJm
YWNlIGhhbmRsZSwgYW5kIHVzaW5nCisgICAgICAgIFhEYW1hZ2UgZXh0ZW5zaW9uIHRoZSBVSSBw
cm9jZXNzIHRha2VzIGEgcGl4bWFwIG9mIHRoZSByZWRpcmVjdGVkIHdpbmRvdyB0byByZW5kZXIg
aW50byB0aGUgd2lkZ2V0IHdoZW4gdGhlcmUKKyAgICAgICAgYXJlIHVwZGF0ZXMuIFRoaXMgcmVx
dWlyZXMgc2V2ZXJhbCBwb2ludHMgb2Ygc3luY2hyb25pemF0aW9uIGJldHdlZW4gVUkgYW5kIHdl
YiBwcm9jZXNzZXMuIFdoZW4gdGhlIHdlYiB2aWV3IGlzCisgICAgICAgIHJlc2l6ZWQsIHRoZSBV
SSBwcm9jZXNzIGZpcnN0IHJlc2l6ZXMgdGhlIHJlZGlyZWN0ZWQgd2luZG93IGFuZCB0aGVuIHNl
bmRzIGEgbmV3IGJhY2tpbmcgc3RvcmUgSUQgdG8gdGhlIHdlYgorICAgICAgICBwcm9jZXNzLiBU
aGUgdGltZSBiZXR3ZWVuIHRoZSByZWRpcmVjdGVkIHdpbmRvdyBpcyByZXNpemVkIGFuZCB0aGUg
d2ViIHByb2Nlc3MgcmVuZGVycyB0aGUgbmV3IGNvbnRlbnRzIHRoZSBVSQorICAgICAgICBwcm9j
ZXNzIGtlZXBzIHJlbmRlcmluZyB0aGUgcHJldmlvdXMgY29udGVudHMgd2l0aCB0aGUgcHJldmlv
dXMgc2l6ZSBpbiB0aGUgbmV3IHdpbmRvdyB3aXRoIHRoZSBuZXcgc2l6ZS4gVGhpcworICAgICAg
ICBtYWtlcyB0aGUgcmVzaXplIHByb2Nlc3Mgc2xvdywgYW5kIGl0IHByb2R1Y2VzIHJlbmRlcmlu
ZyBhcnRpZmFjdHMgcXVpdGUgb2Z0ZW4uIFRoZSByZWRpcmVjdGVkIHdpbmRvdyBpcyBjcmVhdGVk
CisgICAgICAgIHdoZW4gdGhlIHdlYiB2aWV3IGlzIHJlYWxpemVkLCB0byBiZSBhYmxlIHRvIGlu
aGVyaXQgdGhlIFhWaXN1YWwgZnJvbSB0aGUgcGFyZW50IHdpbmRvdywgYW5kIHRoZSBuYXRpdmUg
d2luZG93CisgICAgICAgIGhhbmRsZSBpcyBzZW50IHRvIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIHRp
bWUgdW50aWwgdGhlIHdpbmRvdyBpcyByZWFsaXplZCwgdGhlIHdlYiBwcm9jZXNzIGRvZXNuJ3Qg
aGF2ZSBhIGNvbnRleHQKKyAgICAgICAgdG8gcmVuZGVyIGludG8sIHNvIHRoZSBVSSBwcm9jZXNz
IHNpbXBseSByZW5kZXJzIGFuIGVtcHR5IHBhZ2UuIFdoZW4gdGhlIHdlYiB2aWV3IGlzIHVucmVh
bGl6ZWQsIGZvciBleGFtcGxlIGlmCisgICAgICAgIHRoZSB3ZWIgdmlldyBpcyByZXBhcmVudGVk
LCB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgaXMgZGVzdHJveWVkLCBhbmQgYSBzeW5jIG1lc3NhZ2Ug
aXMgc2VudCB0byB0aGUgd2ViIHByb2Nlc3MgdG8KKyAgICAgICAgZGVzdHJveSB0aGUgY3VycmVu
dCBnbCBjb250ZXh0IGFuZCBzdG9wIGRyYXdpbmcuIFRoaXMgbmVlZHMgdG8gaGFwcGVuIHN5bmNo
cm9ub3VzbHksIGJlY2F1c2UgdGhlIFVJIHByb2Nlc3MKKyAgICAgICAgY2FuJ3QgcmVtb3ZlIHRo
ZSByZWRpcmVjdGVkIHdpbmRvdyB1bnRpbCB0aGUgd2ViIHByb2Nlc3MgaGFzIHN0b3BwZWQgcmVu
ZGVyaW5nIGludG8gaXQuIFRoaXMgbWFrZXMgYWxzbyB0aGUKKyAgICAgICAgcmVwYXJlbnRpbmcg
cHJvY2VzcyBxdWl0ZSB1bnN0YWJsZSBhbmQgcmlza3kuCisgICAgICAgIFRvIGFsbCB0aG9zZSBz
eW5jaHJvbml6YXRpb24gcG9pbnRzIHdlIG5vdyBoYXZlIHRvIGFkZCB0aGUgc3luY2hyb25pemF0
aW9uIHdpdGggdGhlIGNvbXBvc2l0aW5nIHRocmVhZCB3aGVuCisgICAgICAgIHVzaW5nIHRoZSB0
aHJlYWRlZCBjb21wb3NpdG9yLiBUaGUgdGhyZWFkZWQgY29tcG9zaXRvciBtYWRlIHJlc2l6aW5n
LCByZXBhcmVudGluZywgZXRjLiBldmVuIHdvcnNlLiBXZSBjYW4ndAorICAgICAgICBhdm9pZCB0
aGUgc3luY2hyb25pemF0aW9uIHdpdGggdGhlIHRocmVhZGVkIGNvbXBvc2l0b3IsIGJ1dCB3ZSBj
YW4gcmVkdWNlIHRoZSBzeW5jaHJvbml6YXRpb24gcG9pbnRzIGFuZCBpbXByb3ZlCisgICAgICAg
IHRoZSBjdXJyZW50IG9uZXMgYnkgbW92aW5nIHRoZSByZWRpcmVjdGVkIHdpbmRvdyB0byB0aGUg
d2ViIHByb2Nlc3MuIEluIHRoaXMgY2FzZSBpcyB3ZWIgcHJvY2VzcyB3aG8gY3JlYXRlcyB0aGUK
KyAgICAgICAgcmVkaXJlY3RlZCB3aW5kb3csIHNvIHdlIGNhbiBiZSBzdXJlIHRoYXQgaXQgYWx3
YXlzIGhhcyBhIHZhbGlkIG5hdGl2ZSBzdXJmYWNlIGhhbmRsZSB0byByZW5kZXIgaW50by4gVGhp
cyBtZWFucworICAgICAgICB3ZSBubyBsb25nZXIgbmVlZCB0aGUgSVBDIG1lc3NhZ2UgdG8gc2Vu
ZCB0aGUgbmF0aXZlIHN1cmZhY2UgaGFuZGxlIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdl
YiBwcm9jZXNzLCBub3IKKyAgICAgICAgdGhlIHN5bmMgbWVzc2FnZSB0byBkZXN0cm95IGl0IGVp
dGhlci4gVGhpcyBhbHNvIG1lYW5zIHdlIG5vIGxvbmdlciBuZWVkIHRvIHdhaXQgdW50aWwgdGhl
IHZpZXcgaXMgcmVhbGl6ZWQgdG8KKyAgICAgICAgc3RhcnQgcmVuZGVyaW5nIGFjY2VsZXJhdGVk
IGNvbnRlbnRzLCBhbmQgd2UgZG9uJ3QgbmVlZCB0byBzdG9wIHdoZW4gaXQncyB1bnJlYWxpemVk
IGVpdGhlci4gV2UgZG9uJ3QgcmVhbGx5CisgICAgICAgIG5lZWQgdG8gaW5oZXJpdCB0aGUgWFZp
c3VhbCBmcm9tIHRoZSBwYXJlbnQgd2luZG93IGlmIHRoZSByZWRpcmVjdGVkIHdpbmRvdyBhbHdh
eXMgdXNlcyBhbHdheXMgYSBSR0JBIHZpc3VhbAorICAgICAgICB3aGVuIGF2YWlsYWJsZS4gVGhh
dCB3YXkgd2UgYWx3YXlzIHJlbmRlciBpbnRvIGEgdHJhbnNwYXJlbnQgd2luZG93IHRoYXQgaXMg
Y29tcG9zZWQgaW50byB0aGUgd2ViIHZpZXcKKyAgICAgICAgd2lkZ2V0LiBBbmQgd2hlbiB0aGUg
d2ViIHZpZXcgaXMgcmVzaXplZCwgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVzdHJveSB0aGUgR0wg
Y29udGV4dCBlaXRoZXIsIGJlY2F1c2Ugd2UgdXNlIHRoZQorICAgICAgICBzYW1lIHJlZGlyZWN0
ZWQgd2luZG93IGFzIHRoZSBuYXRpdmUgaGFuZGxlLCBidXQgY3JlYXRlIGEgbmV3IHBpeG1hcCB0
aGF0IGlzIHdoYXQgd2Ugc2VuZCB0byB0aGUgVUkgcHJvY2VzcyBhcworICAgICAgICBsYXllciB0
cmVlIGNvbnRleHQgSUQuIFRoZSBsYXllciB0cmVlIGNvbnRleHQgSUQgaXMgYWxyZWFkeSBzZW50
IHRvIHRoZSBVSSBwcm9jZXNzIGJ5IHRoZSBkcmF3aW5nIGFyZWEgYXMgcGFydAorICAgICAgICBv
ZiB0aGUgYmFja2luZyBzdG9yZSB1cGRhdGUgcHJvY2Vzcywgc28gd2UgZG9uJ3QgbmVlZCBhbnkg
bmV3IElQQyBtZXNzYWdlIGZvciB0aGlzLiBXaGVuIHRoZSB3ZWIgdmlldyBpcworICAgICAgICBy
ZXNpemVkLCB0aGUgVUkgcHJvY2VzcyBzZW5kcyBhIGJhY2tpbmcgc3RvcmUgc3RhdGUgdXBkYXRl
IG1lc3NhZ2UgdG8gdGhlIHdlYiBwcm9jZXNzIHRoYXQgdXBkYXRlcyBpdHMgc2l6ZSwKKyAgICAg
ICAgcmVsYXlvdXRzIGFuZCB0aGVuIHJlbmRlcnMgdGhlIG5ldyBjb250ZW50cywgc28gdGhhdCB3
aGVuIHRoZSB1cGRhdGUgYmFja2luZyBzdG9yZSBzdGF0ZSByZXBseSBnZXRzIHRvIHRoZSBVSQor
ICAgICAgICBwcm9jZXNzLCB3ZSBhbHJlYWR5IGhhdmUgYSBuZXcgcGl4bWFwIHdpdGggdGhlIG5l
dyBjb250ZW50cyB1cGRhdGVkLiBUaGlzIG1ha2VzIHJlc2l6aW5nIHNtb290aCBhZ2FpbiwgYW5k
CisgICAgICAgIGF2b2lkcyBmbGlja2VyaW5nIGFuZCByZW5kZXJpbmcgYXJ0aWZhY3RzLiBBbmQg
ZmluYWxseSBhbGwgdGhpcyBhbHNvIHByZXZlbnRzIHNldmVyYWwgcmFjZSBjb25kaXRpb25zIHRo
YXQgd2VyZQorICAgICAgICBjYXVzaW5nIFggZXJyb3JzIGFuZCB3ZWIgcHJvY2VzcyBjcmFzaGVz
LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKTogTWFrZSBpdCBw
b3NzaWJsZSB0byBvcHRpb25hbGx5IHBhc3MgYSBuYXRpdmUgc3VyZmFjZSBoYW5kbGUgZm9yCisg
ICAgICAgIGNvbXBvc2l0aW5nIHRvIHRoZSBUaHJlYWRlZENvbXBvc2l0b3IgY29udHJ1Y3Rvci4K
KyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3Ip
OiBJbml0aWFsaXplIHRoZSBuYXRpdmUgc3VyZmFjZSBoYW5kbGUgYW5kIG1ha2UgdGhlIHNjZW5l
IGFjdGl2ZQorICAgICAgICBhZnRlciB0aGUgdGhyZWFkIGluaXRpYWxpemF0aW9uIGlmIHdlIGFs
cmVhZHkgaGF2ZSBhIHZhbGlkIGhhbmRsZS4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6IFBhc3Mg
dGhlIGxheWVyIHRyZWUgY29udGV4dCBJRCB0byB0aGUgd2ViIHZpZXcuCisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6IE5v
dGlmeSB0aGUgd2ViIHZpZXcgYWJvdXQgdGhlIHVwZGF0ZS4KKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCk6IEhlbHBlciBm
dW5jdGlvbiB0byB1cGRhdGUgdGhlIHBpeG1hcCB1c2VkIHRvIHJlbmRlciB0aGUKKyAgICAgICAg
YWNjZWxlcmF0ZWQgY29udGVudHMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUp
OiBSZW1vdmUgdGhlIGNvZGUgdG8gY3JlYXRlIHRoZSByZWRpcmVjdGVkIHdpbmRvdy4KKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5yZWFsaXplKTogUmVtb3ZlIHRoZSBjb2RlIHRvIGRlc3Ry
b3kgdGhlIHJlZGlyZWN0ZWQgd2luZG93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaXNw
b3NlKTogUmVzZXQgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHBpeG1hcC4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyk6IFVzZSB0
aGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgcGl4bWFwIHN1cmZhY2UuCisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZSk6IFJlbW92ZSB0aGUgY29kZSB0byByZXNpemUgdGhl
IHJlZGlyZWN0ZWQgd2luZG93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogVXBkYXRlIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBwaXhtYXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6IFJlc2V0IHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBwaXhtYXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vz
cyk6IFJlbW92ZSB0aGUgY29kZSB0byBzZW5kIG5hdGl2ZSBzdXJmYWNlIGhhbmRsZSB0byB0aGUg
d2ViIHByb2Nlc3MuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQpOiBSZXNl
dCB0aGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgcGl4bWFwLgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZTo6dXBkYXRlVmlld1N0YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
SW1wbDo6ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiB0
aGUgbGF5ZXIgdHJlZSBjb250ZXh0IElECisgICAgICAgIGNoYW5nZXMgd2l0aG91dCBsZWF2aW5n
IHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlLCBjYWxsaW5nIHVwZGF0ZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCkuCisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJ
bXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOiBMZXQgdGhlIHdlYiB2aWV3IGtu
b3cgd2UgYXJlIGxlYXZpbmcgYWNjZWxlcmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcgbW9kZSBl
dmVuIHdoZW4gaXQncyBmb3JjZWQsIHNpbmNlIGluIGNhc2Ugb2Ygd2ViIHByb2Nlc3MgY3Jhc2gg
d2UgbmVlZCB0byBsZWF2ZSB0aGUgYWNjZWxlcmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcgbW9k
ZSBpbiB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUlt
cGw6OndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogVGhpcyBtZXNzYWdlIHdh
cyBhZGRlZCBvbmx5IHRvIHByZXBhcmUgdGhlCisgICAgICAgIHJlZGlyZWN0ZWQgd2luZG93IHdo
ZW4gdGhlIHdlYiBwcm9jZXNzIHdhcyBhYm91dCB0byBlbnRlciBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBtb2RlLCBzbyBpdCdzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChXZWJLaXQ6OkRy
YXdpbmdBcmVhUHJveHlJbXBsOjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcp
OiBUaGlzIGlzIG5vdyBvbmx5IHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICB3aXRob3V0IHJl
ZGlyZWN0ZWQgWENvbXBvc2l0ZSB3aW5kb3cgc3VwcG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eUltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9Y
RGFtYWdlTm90aWZpZXIuY3BwOiBIZWxwZXIgY2xhc3MgdG8gYmUgbm90aWZpZWQgYWJvdXQgWERh
bWFnZSBldmVudHMuCisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6c2luZ2xldG9u
KToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlmaWVyOjpYRGFtYWdlTm90aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZpZXI6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6
OlhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6WERhbWFnZU5vdGlm
aWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpYRGFtYWdlTm90aWZp
ZXI6Om5vdGlmeSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjplbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogUmVtb3ZlIGNvZGUgdG8gc2VuZAorICAgICAgICBX
aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBtZXNzYWdlLgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcpOiBUaGlzIGlzIG5vdyBvbmx5IHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICB3
aXRob3V0IHJlZGlyZWN0ZWQgWENvbXBvc2l0ZSB3aW5kb3cgc3VwcG9ydC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KTogQ3JlYXRlIGEg
cmVkaXJlY3RlZCB3aW5kb3cgYW5kCisgICAgICAgIHBhc3MgdGhlIHdpbmRvdyBJRCBhcyBuYXRp
dmUgc3VyZmFjZSBoYW5kbGUgdG8gdGhlIHRocmVhZGVkIGNvbXBvc2l0b3IuIFVzZSB0aGUgcmVk
aXJlY3RlZCB3aW5kb3cgcGl4bWFwIGFzCisgICAgICAgIGxheWVyIHRyZWUgY29udGV4dC4KKyAg
ICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRh
dGUpOiBEZXN0cm95IHRoZSByZWRpcmVjdGVkIHdpbmRvdy4KKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6IFJlc2l6ZSB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgYW5kCisgICAgICAgIHVwZGF0ZSB0
aGUgbGF5ZXIgdHJlZSBjb250ZXh0LgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOiBDcmVh
dGUgYSByZWRpcmVjdGVkIHdpbmRvdyBhbmQgdGV4dHVyZSBtYXBwZXIgdGhhdCB1c2VzIHRoZSB3
aW5kb3cKKyAgICAgICAgSUQgYXMgbmF0aXZlIHN1cmZhY2UgaGFuZGxlLiBVc2UgdGhlIHJlZGly
ZWN0ZWQgd2luZG93IHBpeG1hcCBhcyBsYXllciB0cmVlIGNvbnRleHQuCisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCk6IFVzZSB0aGUgcmVkaXJl
Y3RlZCB3aW5kb3cgYXMgbmF0aXZlIGhhbmRsZS4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdEd0azo6aW52YWxpZGF0ZSk6IERlc3Ryb3kgdGhlIHJlZGlyZWN0ZWQgd2luZG93LgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKTogUmVzaXplIHRo
ZSByZWRpcmVjdGVkIHdpbmRvdyBhbmQgdXBkYXRlIHRoZSBsYXllciB0cmVlIGNvbnRleHQuCisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpjcmVh
dGVUZXh0dXJlTWFwcGVyKTogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgdGV4dHVyZSBt
YXBwZXIuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNldE5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyk6IFVzZSBjcmVhdGVUZXh0dXJlTWFwcGVyKCkuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJL
aXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuaC4KKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OndpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpwaXhtYXAp
OgorCisyMDE2LTA4LTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBEYXRhYmFzZSBQcm9jZXNzOiBBU1NFUlRJT04gRkFJTEVEOiBmaWxlUGF0
aHMuc2l6ZSgpID09IHJlc3VsdC5oYW5kbGVzKCkuc2l6ZSgpIHdpdGggU0FOREJPWF9FWFRFTlNJ
T05TIGRpc2FibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjAzOTgKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAg
ICAgU2FtZSBhc3NlcnQgYXMgaW4gYnVnICMxNjAxODgsIGJ1dCB0aGlzIHRpbWUgaW4gcHJlcmVn
aXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0lmTmVjZXNzYXJ5LgorCisgICAgICAgICogRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5oOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0
aW9uVG9DbGllbnQ6OmhhbmRsZUdldFJlc3VsdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zv
ck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYik6CisgICAgICAgICogVUlQcm9jZXNzL0RhdGFiYXNl
cy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0RhdGFiYXNl
cy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNJZk5lY2Vzc2FyeSk6CisKIDIw
MTYtMDgtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBfV0tEb3dubG9hZERlbGVnYXRlLmRpZFJlY2VpdmVSZXNwb25zZSBzaG91bGQgYmUg
Y2FsbGVkIGJlZm9yZSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApp
bmRleCBmMTUwNDQ1N2Y5OTAxNjY1NTViN2RlNmQ5ZDJmMTdkOGIzODUzMWVlLi5iMGU0MzYxNTZm
OWY4OGQyZmMxZTIzODk0YjgzNTk0Mjg0ZGEzMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtNDMsNiArNDMsMTEgQEAg
U3RhY2tWaXNpdG9yOjpTdGFja1Zpc2l0b3IoQ2FsbEZyYW1lKiBzdGFydEZyYW1lKQogICAgIGlm
IChzdGFydEZyYW1lKSB7CiAgICAgICAgIG1fZnJhbWUubV9WTUVudHJ5RnJhbWUgPSBzdGFydEZy
YW1lLT52bSgpLnRvcFZNRW50cnlGcmFtZTsKICAgICAgICAgdG9wRnJhbWUgPSBzdGFydEZyYW1l
LT52bSgpLnRvcENhbGxGcmFtZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0b3BGcmFtZSAmJiBz
dGF0aWNfY2FzdDx2b2lkKj4obV9mcmFtZS5tX1ZNRW50cnlGcmFtZSkgPT0gc3RhdGljX2Nhc3Q8
dm9pZCo+KHRvcEZyYW1lKSkgeworICAgICAgICAgICAgdG9wRnJhbWUgPSB2bUVudHJ5UmVjb3Jk
KG1fZnJhbWUubV9WTUVudHJ5RnJhbWUpLT5tX3ByZXZUb3BDYWxsRnJhbWU7CisgICAgICAgICAg
ICBtX2ZyYW1lLm1fVk1FbnRyeUZyYW1lID0gdm1FbnRyeVJlY29yZChtX2ZyYW1lLm1fVk1FbnRy
eUZyYW1lKS0+bV9wcmV2VG9wVk1FbnRyeUZyYW1lOworICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgbV9mcmFtZS5tX1ZNRW50cnlGcmFtZSA9IDA7CiAgICAgICAgIHRvcEZyYW1lID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDRl
Nzg1ZTk3ZTU0MzkzNjMxMzgwYjY0YTkyYTZlYTA3ZmYyYTI5ZTEuLjQyZjZlNDdhOTRhYjE4NDI5
MDUzMTg0NmRiNmQ2NzNlMWRjNzAwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMjE4Miw3ICsyMTgyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAKIHZvaWQg
SklUX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKFZNKiB2
bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworICAgIHZtLT50b3BDYWxsRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwog
ICAgIGdlbmVyaWNVbndpbmQodm0sIGV4ZWMsIFVud2luZEZyb21DYWxsZXJGcmFtZSk7CiAgICAg
QVNTRVJUKHZtLT50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NTkzYjA2NTE0
MDBlNTEwMTEwMGM1YzJlZGQ1Njc0NTVjZDY0Y2U4Li42YjdiMjFjYWRiYWYwNzNkZjRhZjY3N2Fm
ZTRlNzA0ODkyZWE4YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTE4Miw3ICsxODIsOCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsIHZtLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKHNs
b3RzVG9BZGQgPCAwKSB7CiAgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwotICAg
ICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZShleGVjLT52bSgpKTsKKyAgICAgICAg
dm0udG9wQ2FsbEZyYW1lID0gZXhlYzsKKyAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9y
U2NvcGUodm0pOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBSRVRV
Uk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4
ZWMpOwogICAgIH0KQEAgLTE5NSw3ICsxOTYsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCiAgICAgaW50IHNsb3RzVG9BZGQgPSBDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChz
bG90c1RvQWRkIDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKLSAg
ICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoZXhlYy0+dm0oKSk7CisgICAgICAg
IHZtLnRvcENhbGxGcmFtZSA9IGV4ZWM7CisgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJv
clNjb3BlKHZtKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjppbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgUkVU
VVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBl
eGVjKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAwNjlhMDA5ZmQ3
MmQzMDU5MzYxMGE0MmI0NmZmZjQ0ZTk4YzFlOTY2Li41OTY0ZTdmZTA1YjQzZmYxNWVlMjVhMzQ0
YzU5NGUxYjQ0MTZlNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTI3MCw3
ICsyNzAsMTEgQEAgcHVibGljOgogICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSog
Y2xpZW50RGF0YTsKICAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlGcmFtZTsKLSAgICBFeGVj
U3RhdGUqIHRvcENhbGxGcmFtZTsKKyAgICAvLyBOT1RFOiBXaGVuIHRocm93aW5nIGFuIGV4Y2Vw
dGlvbiB3aGlsZSByb2xsaW5nIGJhY2sgdGhlIGNhbGwgZnJhbWUsIHRoaXMgbWF5IGJlIGVxdWFs
IHRvCisgICAgLy8gdG9wVk1FbnRyeUZyYW1lLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBhIHZvaWQqLCBiZWNhdXNlIGl0IG1pZ2h0IG5vdCBwb2ludCB0byBhIENhbGxGcmFtZS4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDQxCisgICAg
RXhlY1N0YXRlKiB0b3BDYWxsRnJhbWU7IAogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1Y3R1cmVSYXJlRGF0YVN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3JTdHJ1
Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ4MGQ3ZjFlMTE0ZWUyZGZhMDMxZWYyNmQ4
YjYzZDc1MTkxYmU0MjEuLjMyYWI1M2MyZGQzOTU0MzY0YjMzN2IxMTg4MTk5MjZiOWJhMDlhZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04ODQsNiArODg0LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmNwcAogICAg
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJHZXRSZWNvcmREYXRhLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJJbmRleEluZm8uY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0
b3JlSW5mby5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKaW5kZXggZTkxMmFlZmY3MThkM2E4YzQ4ZDU2Yjk3MjNmYTdiZWFiZTI5OWFkYS4u
YTIyZTIyYmM1YjQxNWIyOWQwM2I4ZWM3YTNhYmIzZDg5YTkxNDAyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJFcnJvci5oIgorI2luY2x1ZGUgIklEQkdldFJl
Y29yZERhdGEuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5oIgog
I2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgpAQCAtMTg0LDcgKzE4NSw3IEBAIFJlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSwgRXhjZXB0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0R2V0UmVjb3JkKGV4ZWNTdGF0ZSwgKnRoaXMsIGlk
YktleS5wdHIoKSk7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RHZXRSZWNvcmQo
ZXhlY1N0YXRlLCAqdGhpcywgeyBpZGJLZXkucHRyKCkgfSk7CiB9CiAKIFJlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5n
ZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCkBAIC0yMDksNyArMjEw
LDcgQEAgUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RHZXRSZWNvcmQoZXhlY1N0
YXRlLCAqdGhpcywga2V5UmFuZ2VEYXRhKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVx
dWVzdEdldFJlY29yZChleGVjU3RhdGUsICp0aGlzLCB7IGtleVJhbmdlRGF0YSB9KTsKIH0KIAog
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDMwMjc1ODc2OTgzNGNjNDlhMmQ4OTdkODM4MmFkNGQ5ZTBjNzE2NWMu
LmY5ZThiZmFkN2Y4M2YzYjljZGZhNTM2YzFlNGQ5ZTM5MjJkOGYwZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IklEQkVycm9yLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCisjaW5jbHVkZSAi
SURCR2V0UmVjb3JkRGF0YS5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURC
S2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgpAQCAtNzI5LDExICs3MzAs
MTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICByZXF1ZXN0LmRpZE9wZW5Pckl0ZXJh
dGVDdXJzb3IocmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCT2JqZWN0U3RvcmUm
IG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK1JlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmRE
YXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldFJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NF
UlQoIWtleVJhbmdlRGF0YS5pc051bGwpOworICAgIEFTU0VSVCghZ2V0UmVjb3JkRGF0YS5rZXlS
YW5nZURhdGEuaXNOdWxsKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKQEAgLTc0Miw3ICs3NDMsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQk9iamVj
dAogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0
aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNl
cnZlciwga2V5UmFuZ2VEYXRhKTsKKyAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3Jl
YXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2Fj
dGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25T
ZXJ2ZXIsIGdldFJlY29yZERhdGEpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3Bl
cmF0aW9uKSk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTc2NCw3ICs3NjUsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBleGVj
U3RhdGUsIElEQkluZGV4JiBpbgogICAgIHJldHVybiByZXF1ZXN0SW5kZXhSZWNvcmQoZXhlY1N0
YXRlLCBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSwgcmFuZ2UpOwogfQog
Ci1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3Jk
VHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmcmFuZ2UpCitSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwg
SURCSW5kZXgmIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtNzc3
LDE4ICs3NzgsMTkgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5k
ZXhSZWNvcmQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQkluZGUKICAgICBSZWY8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZUdldCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBpbmRleCwgdHlwZSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7
CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVy
YXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3Jk
T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIsIHJhbmdlKTsKKyAg
ICBJREJHZXRSZWNvcmREYXRhIGdldFJlY29yZERhdGEgPSB7IHJhbmdlIH07CisgICAgYXV0byBv
cGVyYXRpb24gPSBJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCBy
ZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyLCAmSURC
VHJhbnNhY3Rpb246OmdldFJlY29yZE9uU2VydmVyLCBnZXRSZWNvcmREYXRhKTsKICAgICBzY2hl
ZHVsZU9wZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OmdldFJlY29yZE9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBr
ZXlSYW5nZSkKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmdldFJlY29yZE9uU2VydmVyKElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYgZ2V0UmVjb3JkRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OmdldFJlY29yZE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGtleVJhbmdlKTsKKyAgICBtX2RhdGFiYXNlLT5j
b25uZWN0aW9uUHJveHkoKS5nZXRSZWNvcmQob3BlcmF0aW9uLCBnZXRSZWNvcmREYXRhKTsKIH0K
IAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDEzYzY3OTM4
MzZlYzIzN2NlNTJlMGE3NTRhMzNhYzYzMDQ0ZGM4NjAuLjA0ODdhYzBmMTJlMTM0Y2E0Yjg2NzEw
YzczNWNmYzg5OWIyMjRhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiSURC
RXJyb3IuaCIKKyNpbmNsdWRlICJJREJHZXRSZWNvcmREYXRhLmgiCisjaW5jbHVkZSAiSURCS2V5
UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIkluZGV4ZWREQi5oIgpAQCAtMTE0LDcgKzEx
Niw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4
KElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCSW5kZXhJbmZvJik7CiAKICAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdFB1dE9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBJ
REJLZXkqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSk7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSlNDOjpF
eGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAg
IFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0UmVjb3JkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2Jq
ZWN0U3RvcmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+
IHJlcXVlc3REZWxldGVSZWNvcmQoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q2xlYXJP
YmplY3RTdG9yZShKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElE
QlJlcXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CkBAIC0xNzcsNyArMTc5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYs
IFJlZlB0cjxJREJLZXk+LCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUmKTsKICAgICB2b2lkIGRpZFB1dE9yQWRk
T25TZXJ2ZXIoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIHZvaWQg
Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgZ2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKICAgICB2
b2lkIGRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRh
Jik7CiAKICAgICB2b2lkIGdldENvdW50T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcAppbmRleCBiM2M3NGRjZWYxY2EyMDczNDgyZGEzODcwOTY2MjIyZTgyOTllNjJmLi5lZTFk
YjA2M2Y5YzAwMGVlMTMzMzQ1YmIxNDJjYTUxMzY1NGZhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5o
IgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCR2V0UmVjb3JkRGF0YS5o
IgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVl
c3QuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgpAQCAtMTY0LDEyICsxNjUsMTIgQEAg
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OnB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpb24sIElEQktleURhdGEmJgogICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OnB1dE9yQWRkLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFs
dWUsIG1vZGUpOwogfQogCi12b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0UmVjb3JkKFRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2UpCit2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0UmVjb3JkKFRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7
CiAgICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKICAgICBz
YXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKLSAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVh
ZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQsIHJlcXVlc3REYXRhLCBrZXlSYW5n
ZSk7CisgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6Z2V0UmVjb3JkLCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiB9CiAKIHZvaWQgSURC
Q29ubmVjdGlvblByb3h5OjpnZXRDb3VudChUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5o
CmluZGV4IDFhNWQ3MjFlMmQ3ZjU1NGE5MDNjYzJiZGMzMzYyZTc2MDY1NTU5ODQuLmMzYTU5NzRi
YzAwMGUyOWM1MDZlOWIzMTgyMDY4MzNiZThiZmIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmgKQEAgLTUxLDYgKzUxLDggQEAgY2xhc3MgSURCVHJhbnNhY3Rpb247CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKK3N0cnVjdCBJREJHZXRS
ZWNvcmREYXRhOworCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAogY2xhc3MgSURCQ29ubmVjdGlv
blRvU2VydmVyOwpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVJbmRl
eChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQkluZGV4SW5mbyYpOwogICAgIHZvaWQg
ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKICAgICB2b2lkIHB1dE9yQWRkKFRy
YW5zYWN0aW9uT3BlcmF0aW9uJiwgSURCS2V5RGF0YSYmLCBjb25zdCBJREJWYWx1ZSYsIGNvbnN0
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKLSAgICB2b2lkIGdldFJlY29y
ZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZv
aWQgZ2V0UmVjb3JkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYpOwogICAgIHZvaWQgZ2V0Q291bnQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKTsKICAgICB2b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlv
biYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgb3BlbkN1cnNvcihUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKaW5kZXggNzA0NjZhMThjMjE3MjAzODA5Nzg4MzIwYzk5Mzc2ZTJhZGIx
ZTQzYS4uOTM0MTExMzBiODY0OGUyYmJkZGEwMmIwN2E2Y2E4NmU2NTY0ZTdhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25U
b1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IklEQkNvbm5lY3Rpb25Qcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiSURCR2V0UmVjb3JkRGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgogI2lu
Y2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgpA
QCAtMTcxLDEzICsxNzIsMTMgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZFB1dE9y
QWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgbV9wcm94eS0+Y29tcGxl
dGVPcGVyYXRpb24ocmVzdWx0RGF0YSk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVy
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpn
ZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRS
ZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCIpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKCFrZXlSYW5nZURhdGEuaXNOdWxsKTsKKyAgICBBU1NFUlQoIWdldFJlY29y
ZERhdGEua2V5UmFuZ2VEYXRhLmlzTnVsbCk7CiAKLSAgICBtX2RlbGVnYXRlLT5nZXRSZWNvcmQo
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CisgICAgbV9kZWxlZ2F0ZS0+Z2V0UmVjb3JkKHJl
cXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oCmluZGV4IGE2YWNlNTcyZTI4MjBkNmQwMGMyYmFkNzBmZDZk
OGNlOGFlM2NiMTUuLjI1NmZlNzdjNDExMTcwN2VjYTA4NzY4ZTQxMGI3YWQ0Y2I4NzczMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgSURC
UmVzdWx0RGF0YTsKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKK3N0
cnVjdCBJREJHZXRSZWNvcmREYXRhOworCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAogY2xhc3Mg
SURCQ29ubmVjdGlvblRvU2VydmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkNv
bm5lY3Rpb25Ub1NlcnZlcj4gewpAQCAtNzksNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
dXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsK
IAotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7CisgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJHZXRSZWNvcmREYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRS
ZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCiAgICAgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAppbmRleCBjYjRlNWNkZmM4ZmNjMGExMzkzMWNi
ODM2MDI3ZmRlNTI5NWFhNzRmLi5kZmQyNDVkOTZmNTkwMDBjYzU1NjkxOTJlNDczNTA3MDA5MTdj
MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaApAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJUcmFu
c2FjdGlvbkluZm87CiBjbGFzcyBJREJWYWx1ZTsKIAorc3RydWN0IElEQkdldFJlY29yZERhdGE7
CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgSW5kZXhlZERCIHsKQEAg
LTY2LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkluZGV4SW5mbyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYs
IGNvbnN0IElEQlZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZDE4MDU5ZjI1Yjc1MWIyZGIxYzEwYThhMTQ3MmM5
YmI1ZjE1NTRhMS4uZjI0OWQ0MDE2ZjAyMWFmN2M1MDc2YTZhYjYzMjI0MzcxZjNjYzE0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIElEQlNlcnZlcjo6cHV0T3JBZGQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZQogICAg
IHRyYW5zYWN0aW9uLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3
cml0ZU1vZGUpOwogfQogCi12b2lkIElEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEp
Cit2b2lkIElEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCU2VydmVyOjpnZXRSZWNvcmQiKTsKIApAQCAtMjY3LDcgKzI2Nyw3IEBA
IHZvaWQgSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXlSYW5nZURhCiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFu
Z2VEYXRhKTsKKyAgICB0cmFuc2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNv
cmREYXRhKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmgKaW5kZXggNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3NjgwMTE2MGQ5YTEyMDkyMC4uNTYwMzVi
ODQ0MGVhMDFhNjUwYjA0OTc5YjY4MTU5YWY0OTBhY2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNDYsNiArNDYs
OCBAQCBjbGFzcyBJREJDdXJzb3JJbmZvOwogY2xhc3MgSURCUmVxdWVzdERhdGE7CiBjbGFzcyBJ
REJWYWx1ZTsKIAorc3RydWN0IElEQkdldFJlY29yZERhdGE7CisKIG5hbWVzcGFjZSBJREJTZXJ2
ZXIgewogCiBjbGFzcyBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKQEAgLTcw
LDcgKzcyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJbmRleEluZm8mKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4
IDIxNzM2MGQ3YTJhNjYzNmFkZDZkNDEzNTVmNjRhZTZiZWJlNjg5NDkuLjIyNWU2YjE2ZjQyMThl
MzZhYmY3ZTgxMTQxOWFkN2FmZDFiZjBkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVk
ZSAiSURCQ3Vyc29ySW5mby5oIgorI2luY2x1ZGUgIklEQkdldFJlY29yZERhdGEuaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZURhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5j
bHVkZSAiSURCU2VydmVyLmgiCkBAIC05MTMsNyArOTE0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSUQKICAgICBwZXJmb3JtS2V5RGF0YUNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJy
b3IsIHJlc3VsdEtleSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
R2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1h
aW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQiKTsKQEAgLTkyMyw5ICs5MjQsOSBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJLZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodWludDY0
X3QgaW5kZXhJZGVudGlmaWVyID0gcmVxdWVzdERhdGEuaW5kZXhJZGVudGlmaWVyKCkpCi0gICAg
ICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1HZXRJbmRleFJlY29yZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRp
ZmllcigpLCBpbmRleElkZW50aWZpZXIsIHJlcXVlc3REYXRhLmluZGV4UmVjb3JkVHlwZSgpLCBy
YW5nZSkpOworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0SW5kZXhSZWNvcmQsIGNhbGxiYWNr
SUQsIHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmpl
Y3RTdG9yZUlkZW50aWZpZXIoKSwgaW5kZXhJZGVudGlmaWVyLCByZXF1ZXN0RGF0YS5pbmRleFJl
Y29yZFR5cGUoKSwgZ2V0UmVjb3JkRGF0YS5rZXlSYW5nZURhdGEpKTsKICAgICBlbHNlCi0gICAg
ICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1HZXRSZWNvcmQsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIo
KSwgcmFuZ2UpKTsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUdldFJlY29yZCwgY2FsbGJhY2tJ
RCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpLCBnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YSkpOwogfQogCiB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiBrZXlSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDhkYTY0NDRiMmJj
NGQ5Zjc4NWU5MThkMjIwMzIwZDk0Y2M5NTExN2YuLmM5NDAyNGRkZDZkZjM5Mzg4NTI1Y2M2ODAy
YWRiODY3MjU1ZjcwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mLCBjb25zdCBJREJJbmRleEluZm8mLCBFcnJvckNhbGxiYWNrKTsKICAgICB2b2lkIGRlbGV0
ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNrKTsKICAg
ICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYs
IGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtl
eURhdGFDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7CisgICAgdm9pZCBn
ZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiwg
R2V0UmVzdWx0Q2FsbGJhY2spOwogICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBDb3VudENhbGxiYWNrKTsKICAgICB2b2lkIGRl
bGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRDYWxsYmFjayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTAyNGUzNjMxMzI4Yjkw
MGE2YTUwZjZhYjVmYjIxZDE4MWQxYTU1My4uZDA4Njk4ZDU3NDk1OTMwZTA3MjZiOTU2MzBmYTIx
MjM4NzEyM2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmNwcApAQCAtMjA1LDE0ICsyMDUsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKICAgICB9
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0UmVjb3JkRGF0
YSYgZ2V0UmVjb3JkRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkIik7CiAKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbklu
Zm8uaWRlbnRpZmllcigpID09IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsK
IAogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwotICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmdldFJlY29yZChy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGFdKGNvbnN0IElEQkVycm9yJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5nZXRSZWNvcmQocmVxdWVzdERh
dGEsIGdldFJlY29yZERhdGEsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0oY29u
c3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3Jk
IChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA4OGRhMDE3Y2EyNzNmY2I4NDhm
NjNkNmRhY2E0OTc2NGYyNWMyYTQzLi4wMTZhY2M1OWI2NmI5M2QyOWE5NmQ3YjNkNTk0MTk0N2I1
NTY2M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAg
LTQzLDYgKzQzLDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOwogY2xhc3MgSURCUmVxdWVz
dERhdGE7CiBjbGFzcyBJREJWYWx1ZTsKIAorc3RydWN0IElEQkdldFJlY29yZERhdGE7CiBzdHJ1
Y3QgSURCS2V5UmFuZ2VEYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKQEAgLTcyLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJJbmRleEluZm8mKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSk7CiAgICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYpOwogICAgIHZvaWQgZ2V0Q291bnQo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYpOwogICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QkN1cnNvckluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJHZXRSZWNvcmREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJHZXRSZWNvcmREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTlhMjZh
YjkwZmY4YjkxMzQ4NzlhZjU2NTVhZjZmZGYxMDA0NGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldFJlY29yZERhdGEuY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSURCR2V0UmVjb3JkRGF0YS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJREJHZXRSZWNvcmREYXRhIElEQkdldFJlY29yZERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsga2V5UmFuZ2VEYXRhLmlzb2xhdGVkQ29weSgpIH07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkdldFJlY29yZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJHZXRSZWNvcmREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVjZmE1MGE3OGE5OTYyZTc2YjJkYjcy
OTliMjIxOWY0YTdlZmY4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJHZXRSZWNvcmREYXRhLmgKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YSB7CisgICAgSURCS2V5UmFuZ2VEYXRhIGtleVJhbmdl
RGF0YTsKKworICAgIElEQkdldFJlY29yZERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBJ
REJHZXRSZWNvcmREYXRhJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBJ
REJHZXRSZWNvcmREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IGtleVJhbmdlRGF0YTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jv
b2wgSURCR2V0UmVjb3JkRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQkdldFJlY29y
ZERhdGEmIGdldFJlY29yZERhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShnZXRSZWNv
cmREYXRhLmtleVJhbmdlRGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggNjEwYzc3
ZjMzOGRlNTVmMWE2ZTUxZWFlYTE2Mzg1MDI5ZGRjYTJlMy4uMTUwYjExZWU3MGRkNTkwNjc5MGE3
YzdlYzEwZGI5Mzc3NzIwMGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKICNpbmNsdWRl
ICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCisj
aW5jbHVkZSAiSURCR2V0UmVjb3JkRGF0YS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5o
IgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0RGF0
YS5oIgpAQCAtMjcxLDEwICsyNzIsMTAgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9y
QWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2UKICAgICB9
KTsKIH0KIAotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRh
KQordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKLSAgICAgICAgbV9z
ZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdERhdGEsIGdldFJlY29yZERhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldFJl
Y29yZChyZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuaAppbmRleCBlZTVlZDczMWMxMDNmMzYzNTgxYTQyNDQ3MTYwNDE0YjlmYTNj
NDUyLi5lYWE0NDdjYWYxYjk0OWY3NjlkMTcwZjBjYTNjODM0ODQ3NmYyYWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0
ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCSW5kZXhJbmZvJikgZmluYWw7
CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIGZpbmFsOwogICAg
IHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwg
Y29uc3QgSURCVmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKSBmaW5hbDsKICAgICB2b2lkIGdl
dENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmKSBmaW5hbDsKICAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTkxMTdkMjE2MTJi
ZmNkOTc1YzE4YWM3ZDg0MDFjOWI3MDA2M2RhNC4uYTEyODllOGJmYTM2NTNhMTZmMmM5ZWE1MWYw
ZGNiZmViZjI3N2QwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjA4MSw2ICsyMDgxLDggQEAKIAkJNTEwMTkyRDIxOEI2QjlB
QjAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTkyRDAxOEI2QjlBQjAwN0ZDN0Ex
IC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oICovOyB9OwogCQk1MTAxOTJENTE4QjZC
OUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE5MkQzMThCNkI5QjcwMDdGQzdB
MSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQuY3BwICovOyB9OwogCQk1MTAxOTJENjE4QjZC
OUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxOTJENDE4QjZCOUI3MDA3RkM3QTEg
LyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggKi87IH07CisJCTUxMDVGMDY5MUQ0QkE5RDkw
MEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1RjA2ODFENEJBNTQxMDBGQjgwQkMgLyogSURCR2V0UmVj
b3JkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUxMDVGMDZCMUQ0QkIxMjcwMEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDVGMDZBMUQ0QkIw
QkMwMEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmNwcCAqLzsgfTsKIAkJNTEwNkQ3QkQxOEJE
Qjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdCQjE4QkRCNzZGMDAwQUIxNjYgLyog
Q29udGV4dE1lbnVDb250ZXh0LmNwcCAqLzsgfTsKIAkJNTEwNkQ3QkUxOEJEQjc2RjAwMEFCMTY2
IC8qIENvbnRleHRNZW51Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwNkQ3QkMxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29u
dGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxMEE1OEU0MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RTIxQkFBNDBB
RTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgKi87IH07CkBAIC05NTEzLDYgKzk1
MTUsOCBAQAogCQk1MTAxOTJEODE4QjdEN0FCMDA3RkM3QTEgLyogaW1hZ2VDb250cm9sc01hYy5j
c3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGltYWdlQ29udHJvbHNNYWMuY3NzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAzMTA1RTFCQThFMDkwMDAzMzI5QzAgLyogSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElEQkRhdGFiYXNlSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMDMxMDVGMUJBOEUwOTAwMDMzMjlDMCAvKiBJREJEYXRhYmFzZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRGF0YWJhc2VJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDVGMDY4MUQ0QkE1NDEwMEZCODBCQyAv
KiBJREJHZXRSZWNvcmREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkdldFJlY29yZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNUYwNkEx
RDRCQjBCQzAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCR2V0UmVjb3JkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMDZEN0JCMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dE1l
bnVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNkQ3QkMxOEJE
Qjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEwQTU4RTIxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJblByb2Nlc3NJREJTZXJ2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1NjYsNiArMTc1NzAsOCBA
QAogCQkJCTUxNDg0NTNEMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5oICovLAogCQkJCTUx
Rjc5OEVCMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3BwICovLAogCQkJCTUxRjc5
OEVDMUJFODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLywKKwkJCQk1MTA1RjA2ODFE
NEJBNTQxMDBGQjgwQkMgLyogSURCR2V0UmVjb3JkRGF0YS5oICovLAorCQkJCTUxMDVGMDZBMUQ0
QkIwQkMwMEZCODBCQyAvKiBJREJHZXRSZWNvcmREYXRhLmNwcCAqLywKIAkJCQk1MTYwNzEyQzFC
RDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCAqLywKIAkJCQk1MTYwNzEy
RDFCRDgzMDcyMDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmggKi8sCiAJCQkJNTEwQTU4
RjUxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCAqLywKQEAgLTI2MzA1LDYg
KzI2MzExLDcgQEAKIAkJCQlBOEVBN0NCODBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhlYWRpbmdF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NBRjBBMTkyQjlDMDBBOEVGNUYgLyog
SFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURFMjcwQTE1MkFDODAwQjEy
QTY4IC8qIEhUTUxIdG1sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNUYwNjkxRDRC
QTlEOTAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzFERTJBMEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSUZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThFQTdEMkQwQTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxJbWFnZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4RUE3RDJCMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1MSW1hZ2VM
b2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxMTUsNiArMzAxMjIsNyBAQAogCQkJCUE4RUE3
OUY4MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MTWVudUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkJFOEUyQzkxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyNzBBMTUyMDU3MDBCMTJBNjggLyogSFRNTE1l
dGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDVGMDZCMUQ0QkIxMjcwMEZCODBC
QyAvKiBJREJHZXRSZWNvcmREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0NTQ0MjRBMTE5
QjM2NjEwMDlCRTkxMiAvKiBIVE1MTWV0ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4Q0ZGN0E5MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MTW9kRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOERGM0ZENTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTE5hbWVDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRleCA5NjZhY2Q2NzBm
NTE1ZGU5Y2JiZmFhZThmOGEzYTM3NDcwOTA4ZTRhLi41MDE4N2ZkMzc1NjY2MDFmMGU0NWEwMWQx
YzlhMTBlZWJiZmMyNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcApAQCAtMjgsNiArMjgsMTAg
QEAKIAogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUg
PFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVk
ZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorI2VuZGlmCiAKICNpZiBVU0UoRUdMKQogI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KQEAgLTYxLDYgKzY1LDMyIEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5
WDExOjppbml0aWFsaXplRUdMRGlzcGxheSgpCiB9CiAjZW5kaWYKIAorYm9vbCBQbGF0Zm9ybURp
c3BsYXlYMTE6OnN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3N1cHBv
cnRzWENvbXBvc2l0ZSkgeworICAgICAgICBpbnQgZXZlbnRCYXNlLCBlcnJvckJhc2U7CisgICAg
ICAgIG1fc3VwcG9ydHNYQ29tcG9zaXRlID0gWENvbXBvc2l0ZVF1ZXJ5RXh0ZW5zaW9uKG1fZGlz
cGxheSwgJmV2ZW50QmFzZSwgJmVycm9yQmFzZSk7CisgICAgfQorICAgIHJldHVybiBtX3N1cHBv
cnRzWENvbXBvc2l0ZS52YWx1ZSgpOworfQorCitib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3Vw
cG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc3VwcG9ydHNYRGFtYWdlKSB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBp
bnQgZXZlbnRCYXNlLCBlcnJvckJhc2U7CisgICAgICAgIG1fc3VwcG9ydHNYRGFtYWdlID0gWERh
bWFnZVF1ZXJ5RXh0ZW5zaW9uKG1fZGlzcGxheSwgJmV2ZW50QmFzZSwgJmVycm9yQmFzZSk7Cisg
ICAgICAgIGlmIChtX3N1cHBvcnRzWERhbWFnZS52YWx1ZSgpKQorICAgICAgICAgICAgbV9kYW1h
Z2VFdmVudEJhc2UgPSBldmVudEJhc2U7CisjZWxzZQorICAgICAgICBtX3N1cHBvcnRzWERhbWFn
ZSA9IGZhbHNlOworI2VuZGlmCisgICAgfQorCisgICAgZGFtYWdlRXZlbnRCYXNlID0gbV9kYW1h
Z2VFdmVudEJhc2U7CisgICAgcmV0dXJuIG1fc3VwcG9ydHNYRGFtYWdlLnZhbHVlKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURp
c3BsYXlYMTEuaAppbmRleCBlZmFlNWFiYjU3YTI1M2E1ZTE0ZGEzY2UxODFhNzBiZTU1NDUyMmU0
Li4xMGJjMWUyNDYyZDk5OTdiOThiMTMzOTg2ZGQ0NDFjMjBiZDAzZTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxh
eVgxMS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oWDExKQogCiAjaW5jbHVkZSAi
UGxhdGZvcm1EaXNwbGF5LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIHR5cGVkZWYg
c3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwogCkBAIC00MSw2ICs0Miw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5QbGF0Zm9ybURpc3BsYXlYMTEoKTsKIAogICAgIERpc3BsYXkqIG5hdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQorICAgIGJvb2wgc3VwcG9ydHNYQ29tcG9zaXRl
KCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1hEYW1hZ2UoT3B0aW9uYWw8aW50PiYgZGFtYWdl
RXZlbnRCYXNlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQpAQCAtNTEsNiArNTQs
OSBAQCBwcml2YXRlOgogCiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIGJvb2wgbV9vd25l
ZERpc3BsYXk7CisgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWENvbXBvc2l0
ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYRGFtYWdlOworICAgIG11
dGFibGUgT3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKaW5kZXggOTFiYzI2YmYzMTNhZDI1YWE3YjY4ZWViZmZjYTI4OGY4OTJl
NGUxNC4uYzc3NmI1ZjMwYjA3ZTExN2QyZjQ0OGIwYzAzODgxMmNhZjE3NTI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAg
LTI4Niw2ICsyODYsNyBAQCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
RGF0YWJhc2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKAogCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Z2V0U2Fu
ZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cywgc3RkOjpmdW5jdGlvbjx2b2lkIChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKT4g
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxhc3RSZXF1ZXN0SUQ7
CkBAIC0zMDAsNiArMzAxLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRpZEdldFNhbmRib3hF
eHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgU2EKICAgICBpZiAoYXV0
byBoYW5kbGVyID0gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnMu
dGFrZShyZXF1ZXN0SUQpKQogICAgICAgICBoYW5kbGVyKFdURk1vdmUoaGFuZGxlcykpOwogfQor
I2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6aW5p
dGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
aAppbmRleCA0OWQwYzFlYjZlODVlNWVlMTlkNWVjYjUzM2Y1N2IwZThiOTA1YjlmLi5iOGMyOGE0
ZjQ4NjRjMWFkN2Y2NmJjNDkyNGIxZmQ1YzZjODZlZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC03Niw3ICs3Niw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkgZmluYWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMp
CiAgICAgdm9pZCBnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYpPiBjb21wbGV0aW9uSGFuZGxlcik7CisjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBEYXRhYmFzZVByb2Nlc3MoKTsKQEAgLTEwNSw5ICsxMDcsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBncmFudFNhbmRib3hF
eHRlbnNpb25zRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwotI2VuZGlmCi0KICAgICB2b2lkIGRpZEdldFNh
bmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CisjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBpbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5ODcwNGY2OGEy
NzdlZjkwNDc4Nzc4NzcxOTU3NmYxNTI5MzRkY2Q4Li40NjY4MjMzMzliMWU2NDk2MWZmNTU5ZTk4
YmQ0MGVjOTVhY2Y0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDkgKzM0LDggQEAg
bWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQog
I2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgR3JhbnRTYW5kYm94RXh0ZW5zaW9u
c0ZvckJsb2JzKFZlY3RvcjxTdHJpbmc+IHBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IGV4dGVuc2lvbnMpCi0jZW5kaWYKLQogICAgIERpZEdldFNhbmRib3hFeHRl
bnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRlbnNpb25zKQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcAppbmRleCA3OTgxN2ZiYjQ0NzhlZjEwZTdhMzk0NzdhZDRmOWM4NDJkNTAzNjlkLi5m
M2VjZmIxNzU2ZTRkZjQ4YmZhMTZkZGM0ZmJlMDU3Y2Q0Y2MwZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJREJSZXN1
bHQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQkVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
REJHZXRSZWNvcmREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJSZXN1bHREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGhyZWFkU2Fm
ZURhdGFCdWZmZXIuaD4KQEAgLTEzOSwxMCArMTQwLDE0IEBAIHRlbXBsYXRlPGNsYXNzIE1lc3Nh
Z2VUeXBlPiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6aGFuZGxlR2V0UmVzdWx0KGNv
bnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIFJlZlB0cjxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+IHByb3RlY3Rvcih0aGlz
KTsKICAgICBEYXRhYmFzZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdldFNhbmRib3hFeHRlbnNpb25z
Rm9yQmxvYkZpbGVzKGJsb2JGaWxlUGF0aHMsIFtwcm90ZWN0b3IsIHRoaXMsIHJlc3VsdERhdGFd
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgaGFuZGxlcykgewogICAgICAgICBzZW5k
KE1lc3NhZ2VUeXBlKHsgcmVzdWx0RGF0YSwgV1RGTW92ZShoYW5kbGVzKSB9KSk7CiAgICAgfSk7
CisjZWxzZQorICAgIHNlbmQoTWVzc2FnZVR5cGUocmVzdWx0RGF0YSkpOworI2VuZGlmCiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRSZWNvcmQoY29uc3QgV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKQEAgLTI2MCw5ICsyNjUsOSBAQCB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQgogICAgIERhdGFiYXNlUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2Vy
dmVyKCkucHV0T3JBZGQocmVxdWVzdCwga2V5LCB2YWx1ZSwgbW9kZSk7CiB9CiAKLXZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCit2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCBjb25z
dCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewotICAgIERhdGFiYXNlUHJvY2Vz
czo6c2luZ2xldG9uKCkuaWRiU2VydmVyKCkuZ2V0UmVjb3JkKHJlcXVlc3QsIHJhbmdlKTsKKyAg
ICBEYXRhYmFzZVByb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcigpLmdldFJlY29yZChyZXF1
ZXN0LCBnZXRSZWNvcmREYXRhKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXgg
OGNiZTQ3MWFlNzZlNTI1OWJkNDY2ODI1YWRiOGVkOGM0YjFiYjQxMC4uZTkzNzYzMGRiOWZhN2I5
ZGRmZGNiY2Y1MWFhOWI4NWY0OTBkMTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIElEQlJlcXVlc3REYXRhOwogY2xhc3Mg
SURCVHJhbnNhY3Rpb25JbmZvOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CitzdHJ1Y3QgSURCR2V0UmVjb3JkRGF0YTsKIHN0cnVjdCBJREJLZXlSYW5nZURh
dGE7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtOTUsNyArOTYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjcmVhdGVJbmRleChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQkluZGV4SW5mbyYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0
IFdlYkNvcmU6OklEQlZhbHVlJiwgdW5zaWduZWQgb3ZlcndyaXRlTW9kZSk7Ci0gICAgdm9pZCBn
ZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJ
REJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEmKTsKICAgICB2b2lk
IGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKICAgICB2
b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJD
b3JlOjpJREJDdXJzb3JJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50Lm1lc3NhZ2VzLmluCmluZGV4IGNjMzg1MzgyYjhlZjljMTc5NzIzZjc3YzczYWZj
ZmRlYmZiNzcxYmUuLjRlMGI1YzYzZjMwNmM4ZWM0MjI5MjM1Y2EzNWQwNjllZDc0NDNlMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmlu
CkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudCB7
CiAgICAgQ3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIFdl
YkNvcmU6OklEQkluZGV4SW5mbyBpbmZvKTsKICAgICBEZWxldGVJbmRleChXZWJDb3JlOjpJREJS
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBT
dHJpbmcgaW5kZXhOYW1lKTsKICAgICBQdXRPckFkZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQlZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBvdmVyd3JpdGVNb2RlKTsKLSAgICBHZXRSZWNvcmQoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEg
cmFuZ2UpOworICAgIEdldFJlY29yZChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YSwgc3RydWN0IFdlYkNvcmU6OklEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0YSk7CiAgICAg
R2V0Q291bnQoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEsIHN0cnVjdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEgcmFuZ2UpOwogICAgIERlbGV0ZVJlY29yZChXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSwgc3RydWN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0
YSByYW5nZSk7CiAgICAgT3BlbkN1cnNvcihXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YSwgV2ViQ29yZTo6SURCQ3Vyc29ySW5mbyBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA0NDkzZjU1NjZjYmE2NTA1MGFhNDNiYzYyODE0YzkzOGVkYzk1YmQzLi4z
OTc2YjE0OGM5NzQ0MGE3MGRmZmZkMWQ3ZmUwMmU0OTEwZjNkZjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0yNzQsMTAgKzI3NCwxNSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdAogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVyZWdpc3RlclNh
bmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxseUZpbGVCYWNrZWRCbG9iKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlUGF0aHMsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBo
YW5kbGVzKQogeworI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgQVNTRVJUKGZp
bGVQYXRocy5zaXplKCkgPT0gaGFuZGxlcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmaWxlUGF0aHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fYmxvYkRhdGFGaWxlUmVm
ZXJlbmNlcy5hZGQoZmlsZVBhdGhzW2ldLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKGZpbGVQYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KGhhbmRsZXNbaV0pKSk7CisjZWxzZQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVBh
dGhzLnNpemUoKTsgKytpKQorICAgICAgICBtX2Jsb2JEYXRhRmlsZVJlZmVyZW5jZXMuYWRkKGZp
bGVQYXRoc1tpXSwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShmaWxlUGF0aHNbaV0sIG51bGxwdHIpKTsKKyNlbmRpZgogfQogCiBSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Z2V0QmxvYkRhdGFGaWxlUmVmZXJlbmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQ0ZjFlZmNlYTg2ODIzZjEyN2M4ZmM1OTM4M2YwNzQx
N2U0MGZjNmEuLjM2OWFhMDJiMzRjNWQ4NmNiMTc3ODkyOWNmNTU4MTA4MjMxZWY5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yOTksOCArMjk5LDggQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2d0ay9HZXN0dXJlQ29udHJvbGxlci5jcHAKICAg
ICBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsv
S2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCi0gICAgVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAor
ICAgIFVJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsv
V2ViQ29sb3JQaWNrZXJHdGsuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVBy
b3h5R3RrLmNwcAogICAgIFVJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5jcHAK
QEAgLTM1MCw2ICszNTAsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3N0cmVhbWVyL1dlYlBhZ2VHU3RyZWFtZXIuY3BwCiAKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAorICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JVSUd0ay5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlBhZ2VHdGsuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggOWE0N2U2YTA1NTRmMzIxYWNkYjI4YTg1
OGRlZThkZjI0ZGZiYzdmOS4uMzQ1MjQyOGQ0YjdhNWM0MmRjZWMyZTA5ZmZmMDIwOTMzY2YwYWVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkQ29tcG9zaXRvci5jcHAKQEAgLTQxLDE4ICs0MSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IFRo
cmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVudCogY2xpZW50KQorUmVmPFRocmVhZGVkQ29t
cG9zaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50KiBjbGllbnQsIHVpbnQ2
NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhy
ZWFkZWRDb21wb3NpdG9yKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVh
ZGVkQ29tcG9zaXRvcihjbGllbnQsIG5hdGl2ZVN1cmZhY2VIYW5kbGUpKTsKIH0KIAotVGhyZWFk
ZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50KiBjbGllbnQpCitUaHJlYWRl
ZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQqIGNsaWVudCwgdWludDY0X3Qg
bmF0aXZlU3VyZmFjZUhhbmRsZSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fbmF0
aXZlU3VyZmFjZUhhbmRsZShuYXRpdmVTdXJmYWNlSGFuZGxlKQogICAgICwgbV9jb21wb3NpdGlu
Z1J1bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJl
bmRlckxheWVyVHJlZSgpOyB9KSkKIHsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9y
bVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAg
ICAgbV9zY2VuZSA9IGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUodGhpcykp
OwogICAgICAgICBtX3ZpZXdwb3J0Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxl
Vmlld3BvcnRDb250cm9sbGVyPih0aGlzKTsKKyAgICAgICAgbV9zY2VuZS0+c2V0QWN0aXZlKCEh
bV9uYXRpdmVTdXJmYWNlSGFuZGxlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IDFkM2Jh
OTc4MTNlOTllZDliMTU4ODEzYzFiMWE2NjE5NTRjODUzY2YuLjA0MmM2OWZkMjdiYjgxMDFiZWJm
ZjIzNWZkNDlhOTgzMmZjMDliODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gY3JlYXRlKENsaWVudCopOworICAgIHN0YXRp
YyBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBjcmVhdGUoQ2xpZW50KiwgdWludDY0X3QgbmF0aXZl
U3VyZmFjZUhhbmRsZSA9IDApOwogICAgIHZpcnR1YWwgflRocmVhZGVkQ29tcG9zaXRvcigpOwog
CiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3Qp
OwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKIAog
cHJpdmF0ZToKLSAgICBUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50Kik7CisgICAgVGhyZWFkZWRD
b21wb3NpdG9yKENsaWVudCosIHVpbnQ2NF90IG5hdGl2ZVN1cmZhY2VIYW5kbGUpOwogCiAgICAg
Ly8gQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50CiAgICAgdm9pZCByZW5kZXJOZXh0RnJh
bWUoKSBvdmVycmlkZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvciB7
IDEgfTsKICAgICBib29sIG1fZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9OwotICAgIHVpbnQ2NF90
IG1fbmF0aXZlU3VyZmFjZUhhbmRsZSB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25hdGl2ZVN1cmZh
Y2VIYW5kbGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX2Nv
bXBvc2l0aW5nUnVuTG9vcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggY2M3YzQ4OWRhOWZjNGM5MDI4NWUwOTQy
ZTZkZWIyMDcwZGU3NjEzNC4uOGQyNThmNmE2ZmRlNzI0NDJjMmNlOTNiZDhmMDdhZGYxODUzMzI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcApAQCAtMjE2LDkgKzIxNiw5IEBAIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFn
ZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uCiAg
ICAgcmV0dXJuIFdlYkNvbG9yUGlja2VyR3RrOjpjcmVhdGUoKnBhZ2UsIGNvbG9yLCByZWN0KTsK
IH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVl
Q29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSk7CisgICAgd2Via2l0
V2ViVmlld0Jhc2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdFQktJVF9XRUJfVklF
V19CQVNFKG1fdmlld1dpZGdldCksIGxheWVyVHJlZUNvbnRleHQpOwogfQogCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpAQCAtMjI2LDE0ICsy
MjYsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKQogICAgIHdlYmtpdFdlYlZpZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRy
ZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlV2ls
bEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92
aWV3V2lkZ2V0KSk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBsYXllclRyZWVDb250
ZXh0KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBkMDU4
Y2U4NjdlYmRmZWE2MGVhNTc1MjcwMzQ1NmJkYTgwMDQ4NmE4Li5mZTg0ZmIyM2NmNzQ0MjA2Njkx
ZmU3YjU0MThkM2Q3Y2Q0OTNkNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTkyLDcgKzkyLDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBoYW5kbGVEb3du
bG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdl
Q29udGVudFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IDY2OTRjY2Y4ZWNkMzc2MjhkN2UzOWM0MjljMGU1ZGJhMTczNDYzNGMuLmFkMzgxNDA3
YjJlNTU4Mjk2OWE4YzZlZDlkNTJhMmNmYzFlNmQyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTM3LDcg
KzM3LDYgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0
aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCi0jaW5jbHVk
ZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIK
ICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuQ2xp
ZW50R3RrLmgiCkBAIC03Myw2ICs3MiwxNSBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisjaW5jbHVkZSAiWERhbWFnZU5vdGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5o
PgorI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oWDExKQog
I2luY2x1ZGUgPGdkay9nZGt4Lmg+CiAjZW5kaWYKQEAgLTE1MSw5ICsxNTksNiBAQCB0eXBlZGVm
IEhhc2hNYXA8dWludDMyX3QsIEdVbmlxdWVQdHI8R2RrRXZlbnQ+PiBUb3VjaEV2ZW50c01hcDsK
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBfV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKCkKICAgICAgICAgOiB1cGRhdGVWaWV3U3RhdGVUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjp1cGRhdGVWaWV3U3RhdGVUaW1l
ckZpcmVkKQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgICAgICAs
IGNsZWFyUmVkaXJlY3RlZFdpbmRvd1Nvb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZf
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlOjpjbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uVGltZXJG
aXJlZCkKLSNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTE2NSwxNCArMTcwLDYgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgICAgICB2aWV3U3RhdGVGbGFnc1RvVXBk
YXRlID0gVmlld1N0YXRlOjpOb0ZsYWdzOwogICAgIH0KIAotI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotICAgIHZvaWQgY2xlYXJSZWRpcmVjdGVkV2luZG93U29vblRpbWVy
RmlyZWQoKQotICAgIHsKLSAgICAgICAgaWYgKHJlZGlyZWN0ZWRXaW5kb3cpCi0gICAgICAgICAg
ICByZWRpcmVjdGVkV2luZG93LT5yZXNpemUoSW50U2l6ZSgpKTsKLSAgICB9Ci0jZW5kaWYKLQog
ICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGlsZHJlbjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4g
cGFnZVByb3h5OwpAQCAtMjE1LDggKzIxMiw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlIHsKICNlbmRpZgogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiByZWRpcmVj
dGVkV2luZG93OwotICAgIFJ1bkxvb3A6OlRpbWVyPFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZT4g
Y2xlYXJSZWRpcmVjdGVkV2luZG93U29vblRpbWVyOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlOworICAgIFhVbmlxdWVEYW1hZ2UgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2U7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCkBAIC0zNTUsMTMgKzM1Miw0NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZQogfQogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi1zdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVJlc2l6ZVJlZGlyZWN0ZWRXaW5kb3coV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXcpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQaXhtYXAoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIFBpeG1hcCBwaXht
YXApCiB7CisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSAh
PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAocHJp
di0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UKKyAgICAgICAgJiYgY2Fpcm9feGxpYl9z
dXJmYWNlX2dldF9kcmF3YWJsZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZS5n
ZXQoKSkgPT0gcGl4bWFwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UpIHsKKyAgICAgICAgaWYgKHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdTdXJmYWNlRGFtYWdlKSB7CisgICAgICAgICAgICBYRGFtYWdlTm90aWZpZXI6
OnNpbmdsZXRvbigpLnJlbW92ZShwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZURh
bWFnZS5nZXQoKSk7CisgICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3Vy
ZmFjZURhbWFnZS5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdTdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXBpeG1hcCkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVh
ID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJveHktPmRy
YXdpbmdBcmVhKCkpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCiAgICAgICAgIHJldHVybjsKLSAg
ICBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoZHJhd2luZ0FyZWEtPnNpemUoKSk7CisK
KyAgICBJbnRTaXplIHNpemUgPSBkcmF3aW5nQXJlYS0+c2l6ZSgpOworICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gcHJpdi0+cGFnZVByb3h5LT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAg
IHNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgRGlzcGxheSogZGlzcGxheSA9
IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkpLm5hdGl2ZSgpOworICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBHREtfRElTUExB
WV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKSk7CisgICAgR2RrVmlzdWFsKiB2
aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0
KCkpOworICAgIGlmICghdmlzdWFsKQorICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9z
eXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisgICAgcHJpdi0+YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKGRpc3BsYXksIHBpeG1hcCwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKHBy
aXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3Rv
ciwgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdT
dXJmYWNlRGFtYWdlID0gWERhbWFnZUNyZWF0ZShkaXNwbGF5LCBwaXhtYXAsIFhEYW1hZ2VSZXBv
cnROb25FbXB0eSk7CisgICAgWERhbWFnZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGQocHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1cmZhY2VEYW1hZ2UuZ2V0KCksIFt3ZWJWaWV3XSB7Cisg
ICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICB9
KTsKIH0KICNlbmRpZgogCkBAIC0zNzAsMjYgKzQwMCw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAgV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAotI2lmIFVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKLSAgICAgICAg
QVNTRVJUKCFwcml2LT5yZWRpcmVjdGVkV2luZG93KTsKLSAgICAgICAgRHJhd2luZ0FyZWFQcm94
eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihw
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOwotICAgICAgICBwcml2LT5yZWRpcmVjdGVk
V2luZG93ID0gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZSgKLSAgICAgICAgICAg
ICpwcml2LT5wYWdlUHJveHksCi0gICAgICAgICAgICBkcmF3aW5nQXJlYSAmJiBkcmF3aW5nQXJl
YS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPyBkcmF3aW5nQXJlYS0+c2l6ZSgp
IDogSW50U2l6ZSgpLAotICAgICAgICAgICAgW3dlYlZpZXddIHsKLSAgICAgICAgICAgICAgICBE
cmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJl
YVByb3h5SW1wbCo+KHdlYlZpZXctPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGRyYXdpbmdBcmVhICYmIGRyYXdpbmdBcmVhLT5pc0luQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3KEdUS19XSURHRVQod2ViVmlldykpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93ICYmIGRyYXdpbmdBcmVhKSB7Ci0gICAgICAgICAg
ICBkcmF3aW5nQXJlYS0+c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHByaXYt
PnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0lEKCkpOwotICAgICAgICAgICAgaWYgKGRyYXdpbmdB
cmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICB3
ZWJraXRXZWJWaWV3QmFzZVJlc2l6ZVJlZGlyZWN0ZWRXaW5kb3cod2ViVmlldyk7Ci0gICAgICAg
IH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGd0a193aWRnZXRfc2V0X3JlYWxpemVkKHdpZGdldCwg
VFJVRSk7CiAKICAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CkBAIC00MzksMTMgKzQ0OSwx
MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRn
ZXQpCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVucmVhbGl6ZShHdGtXaWRnZXQqIHdp
ZGdldCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
V19CQVNFKHdpZGdldCk7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBQTEFURk9STShYMTEp
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBpZiAoRHJhd2luZ0FyZWFQcm94eUltcGwqIGRy
YXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPih3ZWJWaWV3LT5w
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpKQogICAgICAgICBkcmF3aW5nQXJlYS0+ZGVz
dHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygpOwogI2VuZGlmCi0jaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgd2ViVmlldy0+cHJpdi0+cmVkaXJl
Y3RlZFdpbmRvdyA9IG51bGxwdHI7Ci0jZW5kaWYKICAgICBndGtfaW1fY29udGV4dF9zZXRfY2xp
ZW50X3dpbmRvdyh3ZWJWaWV3LT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5jb250ZXh0KCksIG51
bGxwdHIpOwogCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJl
bnRfY2xhc3MpLT51bnJlYWxpemUod2lkZ2V0KTsKQEAgLTU1Nyw2ICs1NjQsOSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpc3Bvc2UoR09iamVjdCogZ29iamVjdCkKICAgICBnX2Nh
bmNlbGxhYmxlX2NhbmNlbCh3ZWJWaWV3LT5wcml2LT5zY3JlZW5TYXZlckluaGliaXRDYW5jZWxs
YWJsZS5nZXQoKSk7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2lu
ZG93KHdlYlZpZXcsIG51bGxwdHIpOwogICAgIHdlYlZpZXctPnByaXYtPnBhZ2VQcm94eS0+Y2xv
c2UoKTsKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2ViVmlldywgMCk7Cisj
ZW5kaWYKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xh
c3MpLT5kaXNwb3NlKGdvYmplY3QpOwogfQogCkBAIC01NzcsMzggKzU4NywzMyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogc3Rh
dGljIGJvb2wgd2Via2l0V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRz
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRy
YXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiBjbGlwUmVjdCkKIHsKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQor
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIEFTU0VSVChkcmF3aW5n
QXJlYSk7CiAKICAgICBpZiAoIWRyYXdpbmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gVG8gYXZvaWQgZmxhc2hl
cyB3aGVuIGluaXRpYWxpemluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBmb3IgdGhlIGZpcnN0
Ci0gICAgLy8gdGltZSwgd2Ugd2FpdCB1bnRpbCB3ZSBrbm93IHRoZXJlJ3MgYSBmcmFtZSByZWFk
eSBiZWZvcmUgcmVuZGVyaW5nLgotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXdCYXNlKS0+cHJpdjsKKyAgICBjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UgPSBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nU3VyZmFjZS5nZXQo
KTsKKyAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIHdlYmtpdFdlYlZpZXdCYXNlUmVzaXplUmVk
aXJlY3RlZFdpbmRvdyh3ZWJWaWV3QmFzZSk7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnN1cmZhY2UoKSkgewotICAgICAgICBjYWly
b19zYXZlKGNyKTsKLQotICAgICAgICBpZiAoIXByaXYtPnBhZ2VQcm94eS0+ZHJhd3NCYWNrZ3Jv
dW5kKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IHByaXYt
PnBhZ2VQcm94eS0+YmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgICAgICBpZiAoY29sb3IuaGFz
QWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3Qt
PngsIGNsaXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBSZWN0LT5oZWlnaHQpOwotICAg
ICAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIp
OwotICAgICAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoY29sb3IuYWxwaGEoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBzZXRTb3Vy
Y2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgICAgICAgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAgICAgICAgICAgICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgY2xpcFJlY3QtPngsIGNsaXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgs
IGNsaXBSZWN0LT5oZWlnaHQpOwotICAgICAgICAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAg
ICAgICAgICAgfQorICAgIGlmICghc3VyZmFjZSB8fCAhcHJpdi0+cGFnZVByb3h5LT5kcmF3c0Jh
Y2tncm91bmQoKSkgeworICAgICAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IgPSBwcml2
LT5wYWdlUHJveHktPmJhY2tncm91bmRDb2xvcigpOworICAgICAgICBpZiAoY29sb3IuaGFzQWxw
aGEoKSkgeworICAgICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xp
cFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7CisgICAgICAgICAg
ICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKKyAgICAgICAg
ICAgIGNhaXJvX2ZpbGwoY3IpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGNvbG9yLmFscGhh
KCkgPiAwKSB7CisgICAgICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7
CisgICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CisgICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVj
dC0+eSwgY2xpcFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKKyAgICAgICAgICAgIGNh
aXJvX2ZpbGwoY3IpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN1cmZhY2UpIHsKICAg
ICAgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBh
dCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAogICAgICAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUg
d2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxl
LgogICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkoc3VyZmFjZSk7CkBAIC02MTYsMTAg
KzYyMSwxMCBAQCBzdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqCiAgICAgICAgIGNhaXJvX3NldF9zb3Vy
Y2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRv
cihjciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CiAgICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0g
ICAgICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogICAgIH0KIAorICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OworCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3ZWJWaWV3QmFz
ZSk7CkBAIC03MTcsMjIgKzcyMiw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2l6
ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvCiAgICAgICAg
IGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZywgJmNo
aWxkQWxsb2NhdGlvbik7CiAgICAgfQogCi0gICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdp
bmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCkpOwotICAgIGlmICghZHJhd2luZ0FyZWEpCi0gICAgICAgIHJldHVy
bjsKLQotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgaWYgKHBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cgJiYgZHJhd2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IHVzZSB3ZWJraXRXZWJWaWV3QmFz
ZVJlc2l6ZVJlZGlyZWN0ZWRXaW5kb3cgaGVyZSwgYmVjYXVzZSB3ZSB3YW50IHRvIHVwZGF0ZSB0
aGUKLSAgICAgICAgLy8gcmVkaXJlY3RlZCB3aW5kb3cgc2l6ZSBiZWZvcmUgdGhlIGRyYXdpbmcg
YXJlYSwgYmVjYXVzZSBvbiByZXNpemUgdGhlIGRyYXdpbmcgYXJlYSBzZW5kcwotICAgICAgICAv
LyB0aGUgVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUgbWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3Mg
YW5kIHdhaXRzIGZvciBpdHMgcmVwbHkuIFdlIHdhbnQKLSAgICAgICAgLy8gdGhlIHdlYiBwcm9j
ZXNzIHRvIHVzZSB0aGUgbmV3IHh3aW5kb3cgc2l6ZSB3aGVuIFVwZGF0ZUJhY2tpbmdTdG9yZVN0
YXRlIG1lc3NhZ2UgYXJyaXZlcy4KLSAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+cmVz
aXplKHZpZXdSZWN0LnNpemUoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBkcmF3aW5nQXJlYS0+
c2V0U2l6ZSh2aWV3UmVjdC5zaXplKCksIEludFNpemUoKSwgSW50U2l6ZSgpKTsKKyAgICBpZiAo
RHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0Fy
ZWFQcm94eUltcGwqPihwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpKQorICAgICAgICBk
cmF3aW5nQXJlYS0+c2V0U2l6ZSh2aWV3UmVjdC5zaXplKCksIEludFNpemUoKSwgSW50U2l6ZSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VHZXRQcmVmZXJyZWRXaWR0aChH
dGtXaWRnZXQqIHdpZGdldCwgZ2ludCogbWluaW11bVNpemUsIGdpbnQqIG5hdHVyYWxTaXplKQpA
QCAtMTI4NCwxMCArMTI3NSw2IEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQ
YWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICNpZiBIQVZFKEdUS19T
Q0FMRV9GQUNUT1IpCiBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotI2lmIFVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cmVkaXJl
Y3RlZFdpbmRvdykKLSAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VSZXNpemVSZWRpcmVjdGVkV2lu
ZG93KHdlYmtpdFdlYlZpZXdCYXNlKTsKLSNlbmRpZgogICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5w
cml2LT5wYWdlUHJveHktPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGd0a193aWRnZXRf
Z2V0X3NjYWxlX2ZhY3RvcihHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSkpOwogfQogI2Vu
ZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKQEAgLTE1NzcsMzcgKzE1NjQsMTkgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVJlc2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZSkKICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+Y2xpY2tDb3Vu
dGVyLnJlc2V0KCk7CiB9CiAKLSNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
LXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ2xlYXJSZWRpcmVjdGVkV2luZG93U29vbihX
ZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCi17Ci0gICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBjbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uRGVsYXkgPSAyOwotICAgIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5jbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uVGltZXIuc3RhcnRPbmVT
aG90KGNsZWFyUmVkaXJlY3RlZFdpbmRvd1Nvb25EZWxheSk7Ci19Ci0jZW5kaWYKLQotdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VF
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZSwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsK
ICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKLSAgICBpZiAoIXBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cpCi0gICAgICAgIHJldHVybjsKLSAgICBEcmF3aW5nQXJlYVBy
b3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+
KHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgd2Via2l0V2ViVmlld0Jhc2VSZXNpemVSZWRpcmVjdGVk
V2luZG93KHdlYmtpdFdlYlZpZXdCYXNlKTsKLQotICAgIC8vIENsZWFyIHRoZSByZWRpcmVjdGVk
IHdpbmRvdyBpZiB3ZSBkb24ndCBlbnRlciBBQyBtb2RlIGluIHRoZSBlbmQuCi0gICAgd2Via2l0
V2ViVmlld0Jhc2VDbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uKHdlYmtpdFdlYlZpZXdCYXNlKTsK
KyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQaXhtYXAod2Vi
a2l0V2ViVmlld0Jhc2UsIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKICNlbmRpZgogfQogCi12b2lkIHdlYmtp
dFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewogI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5w
cml2LT5jbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uVGltZXIuc3RvcCgpOworICAgIHdlYmtpdFdl
YlZpZXdCYXNlU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BpeG1hcCh3ZWJraXRXZWJWaWV3QmFz
ZSwgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
d2Via2l0V2ViVmlld0Jhc2UpOwogI2VuZGlmCkBAIC0xNjE2LDEwICsxNTg1LDcgQEAgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFcKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewog
I2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAgIC8vIFJlc2l6ZSB0aGUg
d2luZG93IGxhdGVyIHRvIGVuc3VyZSB3ZSBoYXZlIGFscmVhZHkgcmVuZGVyZWQgdGhlCi0gICAg
Ly8gbm9uIGNvbXBvc2l0ZWQgY29udGVudHMgYW5kIGF2b2lkIGZsaWNrZXJpbmcuIFdlIGNhbiBh
bHNvIGF2b2lkIHRoZQotICAgIC8vIHdpbmRvdyByZXNpemUgZW50aXJlbHkgaWYgd2Ugc3dpdGNo
IGJhY2sgdG8gQUMgbW9kZSBxdWlja2x5LgotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ2xlYXJSZWRp
cmVjdGVkV2luZG93U29vbih3ZWJraXRXZWJWaWV3QmFzZSk7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUGl4bWFwKHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKICNlbmRpZgpAQCAt
MTYzMCwyMiArMTU5NiwxOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQ
cm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogICAgIC8vIFF1ZXVl
IGEgcmVzaXplIHRvIGVuc3VyZSB0aGUgbmV3IERyYXdpbmdBcmVhUHJveHkgaXMgcmVzaXplZC4K
ICAgICBndGtfd2lkZ2V0X3F1ZXVlX3Jlc2l6ZV9ub19yZWRyYXcoR1RLX1dJREdFVCh3ZWJraXRX
ZWJWaWV3QmFzZSkpOwogCi0jaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisjaWYgUExBVEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpICE9IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJW
aWV3QmFzZS0+cHJpdjsKICAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBz
dGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHByaXYtPnBhZ2VQcm94eS0+ZHJhd2lu
Z0FyZWEoKSk7CiAgICAgQVNTRVJUKGRyYXdpbmdBcmVhKTsKLSNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAoIXByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCi0gICAg
ICAgIHJldHVybjsKLSAgICB1aW50NjRfdCB3aW5kb3dJRCA9IHByaXYtPnJlZGlyZWN0ZWRXaW5k
b3ctPndpbmRvd0lEKCk7Ci0jZWxzZQorCiAgICAgaWYgKCFndGtfd2lkZ2V0X2dldF9yZWFsaXpl
ZChHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSkpCiAgICAgICAgIHJldHVybjsKKwogICAg
IHVpbnQ2NF90IHdpbmRvd0lEID0gR0RLX1dJTkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2luZG93
KEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKSk7Ci0jZW5kaWYKICAgICBkcmF3aW5nQXJl
YS0+c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHdpbmRvd0lEKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKQEAgLTE2NTQsNyArMTYxNiw5
IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdl
Q2xvc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKLSNpZiBQTEFU
Rk9STShYMTEpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdQaXhtYXAod2Via2l0V2ViVmlld0Jhc2UsIDApOworI2VsaWYgUExBVEZPUk0oWDExKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpLnR5cGUoKSAhPSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNjY1LDkgKzE2MjksNSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNs
b3NlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgRHJhd2luZ0Fy
ZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUlt
cGwqPihwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOwogICAgIEFTU0VSVChkcmF3aW5n
QXJlYSk7CiAgICAgZHJhd2luZ0FyZWEtPmRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcoKTsKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotICAg
IHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOwogI2VuZGlmCi0jZW5kaWYgLy8gUExB
VEZPUk0oWDExKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CmluZGV4IGQ5YWNiOTg5YTYwOWVjMzcxZGNmZThjNGI5OWZiMDI0NjVhODE0M2MuLjZmNWJhOWQw
MmM1YjU3NWE0ZmNmOGYxNGYwMzVhZDZlMzkzZjM1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBZGRBdXRoZW50aWNhdGlv
bkRpYWxvZyhXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCogYXV0CiB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlQ2FuY2VsQXV0aGVudGljYXRpb25EaWFsb2coV2ViS2l0V2ViVmlld0Jhc2UqKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV2ViS2l0V2ViVmlld0Jhc2Uq
LCBHdGtXaWRnZXQqIGluc3BlY3RvciwgV2ViS2l0OjpBdHRhY2htZW50U2lkZSk7CiB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlUmVzZXRDbGlja0NvdW50ZXIoV2ViS2l0V2ViVmlld0Jhc2UqKTsKLXZv
aWQgd2Via2l0V2ViVmlld0Jhc2VXaWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShX
ZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqKTsKK3ZvaWQgd2Via2l0V2ViVmll
d0Jhc2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdCYXNlKiwg
Y29uc3QgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0Jik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25z
dCBXZWJLaXQ6OkxheWVyVHJlZUNvbnRleHQmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VFeGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZpZXdCYXNlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDkwMWNhNzE4ZWVlY2UyN2NmMzNlNWE5NzE0ZjdjNDIx
MzY5MGEwMTYuLjQ5MjE3NDEyNjBiNTg0MTU2NDNjNmIyZWFjZjkyZjkzMmNmMDYwMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nl
c3NQcm94eTo6ZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgY2FsbGJhY2soKTsKIH0KIAorI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMp
CiB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JG
aWxlcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRlbnNpb25zOwpAQCAtMjA3LDYg
KzIwOCw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmdldFNhbmRib3hFeHRlbnNpb25z
Rm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwKIAogICAgIHNlbmQoTWVzc2FnZXM6OkRh
dGFiYXNlUHJvY2Vzczo6RGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMocmVxdWVz
dElELCBleHRlbnNpb25zKSwgMCk7CiB9CisjZW5kaWYKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNz
UHJveHkuaAppbmRleCA2YTk4ODQzOGRiNTZlOTc3NzBjYzZmZDk2ZWEwNzgxZDM3MTJjNzcyLi5m
OGYzNmNiMjYwY2ZiZDEwODI3NzVkZTA4OTMxNGJhZDQ2MDFlNTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94
eS5oCkBAIC03Niw3ICs3Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBk
aWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyNpZiBFTkFC
TEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIHZvaWQgZ2V0U2FuZGJveEV4dGVuc2lvbnNGb3JC
bG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMp
OworI2VuZGlmCiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBhYjkyYjRhNDc5MWNmYzk1N2U0YWQ0NzAyZWFjYWRiMGZjY2Y1ZTI1Li41NWY3M2Y3M2JhYmRi
M2E3YzFiM2NhOTRkY2JiYWFmZmRiMmYxY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI5LDcgKzI5LDkgQEAgbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAKKyNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIEdldFNh
bmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0
cmluZz4gcGF0aHMpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXgg
NDEzZmUzZmEyZTY0MGNjZGNjYjY1Y2RkNzk0MmFhMWUzZTMxNGU5NC4uNjBkNzljNjg3OGRjODE1
ZDZkMGZiYjBlYjQ3Zjc0NmYwOGRhNmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCkBAIC0xMzAsNyArMTMwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNr
aW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNr
aW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBVcGRhdGVJbmZvJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IC8qIGJhY2tpbmdT
dG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgLyogYmFj
a2luZ1N0b3JlU3RhdGVJRCAqLykgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVh
bCB2b2lkIGRpZFVwZGF0ZUdlb21ldHJ5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNp
Y0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggOGQ1MWNkZWZkYTdhYjViNzVmM2RmMzQyODg0N2QwYThjZjc1MGFiYy4uNDczNjBl
MzdkNjM3ZGU2ZTFmZTFiY2M2YzdiMmJhZTM1YzE2YjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcg
KzI2LDYgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWFQcm94eSB7CiAgICAgRW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJLaXQ6
OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKICAgICBFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpVcGRhdGVJbmZvIHVw
ZGF0ZUluZm8pCiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3Qg
YmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCi0g
ICAgV2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0
b3JlU3RhdGVJRCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCmluZGV4IDIwNjkzMjVmNWRiM2U3ZjE1M2Jm
NGEwYjgzZjM2Y2I1ZDg3NDMxZGEuLjI0NzYyOTZhMzA0OTgwZWIwNzFmNGU0OGQ4N2ZiZjYyNTk1
NTQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcApAQCAtMTU3LDE1ICsxNTcsMTYgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1w
bDo6ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGUK
ICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3Ao
KTsKIAogICAgIGlmIChsYXllclRyZWVDb250ZXh0ICE9IG1fbGF5ZXJUcmVlQ29udGV4dCkgewot
ICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KGxheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpICYmICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAg
ICAgICAgICAgIEFTU0VSVChtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
fSBlbHNlIGlmICghbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkgJiYgbV9sYXllclRyZWVDb250
ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShsYXllclRyZWVDb250ZXh0KTsKICAgICAgICAgICAgIEFTU0VSVChsYXllclRyZWVDb250
ZXh0ID09IG1fbGF5ZXJUcmVlQ29udGV4dCk7Ci0gICAgICAgIH0gICAgICAgICAgICAKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGxheWVyVHJlZUNvbnRleHQpOworICAgICAgICAgICAgQVNTRVJUKGxheWVyVHJlZUNvbnRleHQg
PT0gbV9sYXllclRyZWVDb250ZXh0KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtX25l
eHRCYWNraW5nU3RvcmVTdGF0ZUlEICE9IG1fY3VycmVudEJhY2tpbmdTdG9yZVN0YXRlSUQpCkBA
IC0xNzMsNyArMTc0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6ZGlkVXBkYXRlQmFj
a2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGUKICAgICBlbHNlIHsKICAg
ICAgICAgbV9oYXNSZWNlaXZlZEZpcnN0VXBkYXRlID0gdHJ1ZTsKIAotI2lmIFVTRShURVhUVVJF
X01BUFBFUikgJiYgUExBVEZPUk0oR1RLKQorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgUExB
VEZPUk0oR1RLKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAgICAgICAg
IGlmIChtX3BlbmRpbmdOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpIHsKICAgICAg
ICAgICAgIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhtX3BlbmRpbmdOYXRp
dmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOwogICAgICAgICAgICAgbV9wZW5kaW5nTmF0
aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nID0gMDsKQEAgLTIyMSwxNSArMjIyLDYgQEAg
dm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUodWludDY0X3QgYmFja2luZ1N0b3IKICAgICB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6
d2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3Jl
U3RhdGVJRCkKLXsKLSAgICAvLyBXaWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBt
ZXNzYWdlIGlzIHNlbnQgd2hlbiB0aGUgTGF5ZXJUcmVlSG9zdCBpcyBjcmVhdGVkIGluIHRoZSBX
ZWIgUHJvY2Vzcy4KLSAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hpbGUgdGhlcmUncyBzdGlsbCBh
IERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlIHBlbmRpbmcsIGluIHdoaWNoIGNhc2Ugd2UgYXJl
IHJlY2VpdmluZwotICAgIC8vIGhlcmUgdGhlIG5ldyBiYWNraW5nU3RvcmVTdGF0ZUlELCBidXQg
bV9jdXJyZW50QmFja2luZ1N0b3JlU3RhdGVJRCBoYXNuJ3QgYmVlbiB1cGRhdGVkIHlldC4KLSAg
ICBBU1NFUlRfQVJHKGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJhY2tpbmdTdG9yZVN0YXRlSUQgPD0g
bV9uZXh0QmFja2luZ1N0b3JlU3RhdGVJRCk7Ci0gICAgbV93ZWJQYWdlUHJveHkud2lsbEVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKLX0KLQogdm9pZCBEcmF3aW5nQXJlYVByb3h5
SW1wbDo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsK
ICAgICBBU1NFUlQoIWlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKQEAgLTMxNSw3
ICszMDcsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleAogICAgIG1fd2ViUGFnZVByb3h5LmVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKLSNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpICYmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQogdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZv
ckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsKICAgICBpZiAoIW1faGFzUmVjZWl2ZWRG
aXJzdFVwZGF0ZSkgewpAQCAtMzUxLDggKzM0Myw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUlt
cGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAgICAgQVNTRVJUKGlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKIAogICAgIG1fbGF5ZXJUcmVlQ29udGV4dCA9IExh
eWVyVHJlZUNvbnRleHQoKTsKLSAgICBpZiAoIWFsd2F5c1VzZUNvbXBvc2l0aW5nKCkpCi0gICAg
ICAgIG1fd2ViUGFnZVByb3h5LmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAg
IG1fd2ViUGFnZVByb3h5LmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogfQogCiB2
b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCA4ODE5YTk1ZTM2
OTg4NWM5Y2U1N2MzZGE3MDYwODQ1NWJjYTY0MzVhLi4xZWQ2ZDAwZWVjMmFiZWY0ZGRjMjRhOTc4
ZmI0N2QxN2FmY2FkMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c1JlY2VpdmVkRmlyc3RVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2hhc1JlY2VpdmVkRmlyc3RV
cGRhdGU7IH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgUExBVEZPUk0oR1RLKQorI2lm
IFVTRShURVhUVVJFX01BUFBFUikgJiYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcodWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVG
b3JDb21wb3NpdGluZygpOwogI2VuZGlmCkBAIC02OSw3ICs2OSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9y
ZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lkIGV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBVcGRhdGVJbmZvJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXll
clRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlEKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBkMmFjOTQ0NDdkNDc3NWY2OTQwNTAxN2M4
MjZhNDEwNTFlNjA3ZGI0Li4zNTgxYTIxMDYwZWFhZTM5Nzg2MDNmMjBiNTYwNDVjODRhM2E1MjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTIzNSw3ICsyMzUsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpID0g
MDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldp
bmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFjOTY3Y2I5NGQ3YzZlNzhhYTQ2
ZTIzNzBjN2M3NTFkNmQ0ZTI3ZmYuLjczYjliNjNhYmM2YjA4ZWFjZWI4NjQ4ZDEyMDczMDcxOWJl
M2M2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01
NDY1LDExICs1NDY1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWUKICAgICBtX3BhZ2VDbGll
bnQudXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpCi17Ci0gICAgbV9wYWdlQ2xpZW50LndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZENsZWFyKCkKIHsKICAg
ICBtX2JhY2tGb3J3YXJkTGlzdC0+Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA4ZDdkODE1ODNhMjc5N2JjYjIzOTIxYjg2MjgxMDhmMzMyYzYzOGU0
Li45M2M1MWU4NjMwNzRiMjRmMGJhYzVjY2M0MTNjZWM2MTcxZmEwYzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjQsNyArODI0LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKLSAgICB2b2lkIHdpbGxFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAKICAgICBlbnVtIFVuZG9PclJlZG8geyBVbmRvLCBS
ZWRvIH07CiAgICAgdm9pZCBhZGRFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IDMwNzdiZmRjNjI0YmRjZjQx
ZGQxYzE2ZGEyMjM1NmYyNjAyZDljM2MuLjY0MWYwN2NhM2I1OWFjZWY1ZDE3MmVlOTZlNmM3OGE0
YmRiYmNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC0yMjEs
NyArMjIxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRl
IHsgfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MjU5
YzNhMzg0NTUyMmM4NmIxOTUzNjRhMGEyMGQ4OTQxNjY3ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwyMDE0IElnYWxpYSBTLkwuCi0gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuaCIKLQotI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQotCi0jaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+Ci0jaW5jbHVkZSA8WDEx
L1hsaWIuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+Ci0jaW5jbHVk
ZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgotI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KLSNp
bmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBYRGFtYWdlTm90aWZpZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhEYW1h
Z2VOb3RpZmllcik7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIGludCBzX2RhbWFnZUV2ZW50QmFzZTsKLQotICAgIFhEYW1hZ2VOb3RpZmllcigpCi0g
ICAgewotICAgIH0KLQotICAgIHZvaWQgYWRkKFdpbmRvdyB3aW5kb3csIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmIG5vdGlmeUZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKG1fbm90aWZ5RnVu
Y3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGdka193aW5kb3dfYWRkX2ZpbHRlcihudWxs
cHRyLCByZWludGVycHJldF9jYXN0PEdka0ZpbHRlckZ1bmM+KCZmaWx0ZXJYRGFtYWdlRXZlbnQp
LCB0aGlzKTsKLSAgICAgICAgbV9ub3RpZnlGdW5jdGlvbnMuYWRkKHdpbmRvdywgV1RGTW92ZShu
b3RpZnlGdW5jdGlvbikpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlKFdpbmRvdyB3aW5kb3cp
Ci0gICAgewotICAgICAgICBtX25vdGlmeUZ1bmN0aW9ucy5yZW1vdmUod2luZG93KTsKLSAgICAg
ICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGdka193aW5k
b3dfcmVtb3ZlX2ZpbHRlcihudWxscHRyLCByZWludGVycHJldF9jYXN0PEdka0ZpbHRlckZ1bmM+
KCZmaWx0ZXJYRGFtYWdlRXZlbnQpLCB0aGlzKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3Rh
dGljIEdka0ZpbHRlclJldHVybiBmaWx0ZXJYRGFtYWdlRXZlbnQoR2RrWEV2ZW50KiBldmVudCwg
R2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqIG5vdGlmaWVyKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG5vdGlmaWVyLT5maWx0ZXJYRXZlbnQoc3RhdGljX2Nhc3Q8WEV2ZW50Kj4oZXZlbnQpKTsK
LSAgICB9Ci0KLSAgICBHZGtGaWx0ZXJSZXR1cm4gZmlsdGVyWEV2ZW50KFhFdmVudCogZXZlbnQp
IGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoZXZlbnQtPnR5cGUgIT0gc19kYW1hZ2VFdmVudEJh
c2UgKyBYRGFtYWdlTm90aWZ5KQotICAgICAgICAgICAgcmV0dXJuIEdES19GSUxURVJfQ09OVElO
VUU7Ci0KLSAgICAgICAgWERhbWFnZU5vdGlmeUV2ZW50KiBkYW1hZ2VFdmVudCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8WERhbWFnZU5vdGlmeUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICBpZiAoY29uc3Qg
YXV0byYgbm90aWZ5RnVuY3Rpb24gPSBtX25vdGlmeUZ1bmN0aW9ucy5nZXQoZGFtYWdlRXZlbnQt
PmRyYXdhYmxlKSkgewotICAgICAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKLSAgICAgICAgICAg
IFhEYW1hZ2VTdWJ0cmFjdChldmVudC0+eGFueS5kaXNwbGF5LCBkYW1hZ2VFdmVudC0+ZGFtYWdl
LCBOb25lLCBOb25lKTsKLSAgICAgICAgICAgIHJldHVybiBHREtfRklMVEVSX1JFTU9WRTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBHREtfRklMVEVSX0NPTlRJTlVFOwotICAgIH0KLQot
ICAgIEhhc2hNYXA8V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fbm90aWZ5RnVuY3Rp
b25zOwotfTsKLQotaW50IFhEYW1hZ2VOb3RpZmllcjo6c19kYW1hZ2VFdmVudEJhc2UgPSAwOwot
Ci1zdGF0aWMgWERhbWFnZU5vdGlmaWVyJiB4RGFtYWdlTm90aWZpZXIoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxYRGFtYWdlTm90aWZpZXI+IG5vdGlmaWVyOwotICAgIHJldHVybiBu
b3RpZmllcjsKLX0KLQotc3RhdGljIGJvb2wgc3VwcG9ydHNYRGFtYWdlQW5kWENvbXBvc2l0ZShH
ZGtXaW5kb3cqIHdpbmRvdykKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIHN0YXRpYyBib29sIGhhc0V4dGVuc2lvbnMgPSBmYWxzZTsKLQotICAgIGlmIChpbml0
aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIGhhc0V4dGVuc2lvbnM7Ci0KLSAgICBpbml0aWFsaXpl
ZCA9IHRydWU7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdk
a193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSk7Ci0KLSAgICBpbnQgZXJyb3JCYXNlOwotICAg
IGlmICghWERhbWFnZVF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXksICZYRGFtYWdlTm90aWZpZXI6OnNf
ZGFtYWdlRXZlbnRCYXNlLCAmZXJyb3JCYXNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaW50IGV2ZW50QmFzZTsKLSAgICBpZiAoIVhDb21wb3NpdGVRdWVyeUV4dGVuc2lvbihkaXNw
bGF5LCAmZXZlbnRCYXNlLCAmZXJyb3JCYXNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IFhDb21wb3NpdGUgdmVyc2lvbiAwLjIuCi0gICAgaW50
IG1ham9yLCBtaW5vcjsKLSAgICBYQ29tcG9zaXRlUXVlcnlWZXJzaW9uKGRpc3BsYXksICZtYWpv
ciwgJm1pbm9yKTsKLSAgICBpZiAobWFqb3IgPCAwIHx8ICghbWFqb3IgJiYgbWlub3IgPCAyKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaGFzRXh0ZW5zaW9ucyA9IHRydWU7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdl
YlBhZ2UsIGNvbnN0IEludFNpemUmIGluaXRpYWxTaXplLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
JiBkYW1hZ2VOb3RpZnkpCi17Ci0gICAgR2RrV2luZG93KiBwYXJlbnRXaW5kb3cgPSBndGtfd2lk
Z2V0X2dldF9wYXJlbnRfd2luZG93KHdlYlBhZ2Uudmlld1dpZGdldCgpKTsKLSAgICBBU1NFUlQo
R0RLX0lTX1dJTkRPVyhwYXJlbnRXaW5kb3cpKTsKLSAgICBpZiAoIXN1cHBvcnRzWERhbWFnZUFu
ZFhDb21wb3NpdGUocGFyZW50V2luZG93KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4obmV3IFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHdlYlBhZ2UsIGluaXRpYWxTaXplLCBXVEZNb3ZlKGRh
bWFnZU5vdGlmeSkpKTsKLX0KLQotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93KFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgY29uc3QgSW50U2l6ZSYg
aW5pdGlhbFNpemUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGRhbWFnZU5vdGlmeSkKLSAgICA6
IG1fd2ViUGFnZSh3ZWJQYWdlKQotICAgICwgbV9kaXNwbGF5KEdES19ESVNQTEFZX1hESVNQTEFZ
KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3ZWJQ
YWdlLnZpZXdXaWRnZXQoKSkpKSkKLSAgICAsIG1fc2l6ZShpbml0aWFsU2l6ZSkKLXsKLSAgICBt
X3NpemUuc2NhbGUobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwotCi0gICAgQVNTRVJU
KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7Ci0gICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZh
dWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7Ci0KLSAgICBHZGtWaXN1YWwqIHZpc3VhbCA9
IGdka193aW5kb3dfZ2V0X3Zpc3VhbChndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93KHdlYlBh
Z2Uudmlld1dpZGdldCgpKSk7Ci0gICAgWFVuaXF1ZUNvbG9ybWFwIGNvbG9ybWFwKFhDcmVhdGVD
b2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLCBHREtfVklTVUFM
X1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKSk7Ci0KLSAgICAvLyBUaGlzIGlzIGJhc2VkIG9u
IGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFnZV90cmFuc3Bv
cnRfc3VyZmFjZV9saW51eC5jYwotICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJp
YnV0ZXM7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IFRydWU7Ci0g
ICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdldCgpOwotCi0gICAgLy8g
Q1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVwdGggZG9lc24ndCBtYXRj
aCB0aGUgcGFyZW50J3Mgb25lLgotICAgIC8vIFNlZSBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5v
cmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmctc2VydmVyLTEuMTYuMCNu
NzAzLgotICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gMDsKLQotICAgIG1fcGFy
ZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAgICAgIFJvb3RXaW5kb3dP
ZlNjcmVlbihzY3JlZW4pLAotICAgICAgICBXaWR0aE9mU2NyZWVuKHNjcmVlbikgKyAxLCAwLCAx
LCAxLAotICAgICAgICAwLAotICAgICAgICBnZGtfdmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLAot
ICAgICAgICBJbnB1dE91dHB1dCwKLSAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCks
Ci0gICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCB8IENXQ29sb3JtYXAgfCBDV0JvcmRlclBpeGVs
LAotICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXks
IG1fcGFyZW50V2luZG93LmdldCgpKTsKLQotICAgIHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFz
ayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7Ci0gICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9y
ZWRpcmVjdCA9IEZhbHNlOwotICAgIC8vIENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgx
IHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBtX3dp
bmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAotICAgICAgICBtX3BhcmVudFdpbmRvdy5n
ZXQoKSwKLSAgICAgICAgMCwgMCwKLSAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkp
LAotICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpLAotICAgICAgICAwLAotICAg
ICAgICBDb3B5RnJvbVBhcmVudCwKLSAgICAgICAgSW5wdXRPdXRwdXQsCi0gICAgICAgIENvcHlG
cm9tUGFyZW50LAotICAgICAgICBDV0V2ZW50TWFzaywKLSAgICAgICAgJndpbmRvd0F0dHJpYnV0
ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7Ci0KLSAgICB4
RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5kb3cuZ2V0KCksIFdURk1vdmUoZGFtYWdlTm90aWZ5
KSk7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAgIFhX
aW5kb3dFdmVudChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBTdHJ1Y3R1cmVOb3RpZnlNYXNr
LCAmZXZlbnQpOwotICAgICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQu
eG1hcC53aW5kb3cgPT0gbV93aW5kb3cuZ2V0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgWFNlbGVjdElucHV0KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNr
KTsKLSAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQo
KSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwotICAgIGlmICghbV9zaXplLmlzRW1wdHkoKSkK
LSAgICAgICAgY3JlYXRlTmV3UGl4YW1wQW5kUGl4YW1wU3VyZmFjZSgpOwotICAgIG1fZGFtYWdl
ID0gWERhbWFnZUNyZWF0ZShtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBYRGFtYWdlUmVwb3J0
Tm9uRW1wdHkpOwotfQotCi1SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KCkKLXsKLSAgICBBU1NFUlQobV9kaXNwbGF5KTsKLSAgICBBU1NFUlQo
bV9kYW1hZ2UpOwotICAgIEFTU0VSVChtX3dpbmRvdyk7Ci0gICAgQVNTRVJUKG1fcGFyZW50V2lu
ZG93KTsKLQotICAgIHhEYW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdy5nZXQoKSk7Ci0K
LSAgICAvLyBFeHBsaWNpdGx5IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBlbnN1cmUg
aXQgaGFwcGVucyBpbiB0aGlzIG9yZGVyLgotICAgIG1fZGFtYWdlLnJlc2V0KCk7Ci0gICAgbV93
aW5kb3cucmVzZXQoKTsKLSAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOwotfQotCi12b2lkIFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICBJbnRTaXplIHNjYWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX3dl
YlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgaWYgKHNjYWxlZFNpemUgPT0gbV9zaXpl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBSZXNpemUgdGhlIHdpbmRvdyB0byBhdCBsYXN0
IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAg
WFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBzdGQ6Om1heCgxLCBzY2Fs
ZWRTaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBzY2FsZWRTaXplLmhlaWdodCgpKSk7Ci0gICAg
WEZsdXNoKG1fZGlzcGxheSk7Ci0KLSAgICBtX3NpemUgPSBzY2FsZWRTaXplOwotICAgIGlmICht
X3NpemUuaXNFbXB0eSgpKQotICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgp
OwotICAgIGVsc2UKLSAgICAgICAgY3JlYXRlTmV3UGl4YW1wQW5kUGl4YW1wU3VyZmFjZSgpOwot
fQotCi12b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjbGVhbnVwUGl4bWFwQW5kUGl4
bWFwU3VyZmFjZSgpCi17Ci0gICAgaWYgKCFtX3BpeG1hcCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKLSAgICBtX3BpeG1hcC5yZXNldCgpOwotfQotCi12b2lk
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGVOZXdQaXhhbXBBbmRQaXhhbXBTdXJm
YWNlKCkKLXsKLSAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2l0aCBhbiBlbXB0
eSBzaXplIChub3QgaW4gQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcgbW9kZSkuCi0gICAgQVNTRVJU
KCFtX3NpemUuaXNFbXB0eSgpKTsKLSAgICBYVW5pcXVlUGl4bWFwIG5ld1BpeG1hcChYQ29tcG9z
aXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKSk7Ci0gICAgaWYg
KCFuZXdQaXhtYXApIHsKLSAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0
dHJpYnV0ZXM7Ci0gICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIG1fd2lu
ZG93LmdldCgpLCAmd2luZG93QXR0cmlidXRlcykpIHsKLSAgICAgICAgY2xlYW51cFBpeG1hcEFu
ZFBpeG1hcFN1cmZhY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2Vf
Y3JlYXRlKG1fZGlzcGxheSwgbmV3UGl4bWFwLmdldCgpLCB3aW5kb3dBdHRyaWJ1dGVzLnZpc3Vh
bCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOwotICAgIGNhaXJvU3VyZmFjZVNl
dERldmljZVNjYWxlKG5ld1N1cmZhY2UuZ2V0KCksIG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0KLSAgICBSZWZQdHI8Y2Fpcm9f
dD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobmV3U3VyZmFjZS5nZXQoKSkpOwotICAgIGlm
ICghbV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKQotICAgICAgICBjYWlyb19zZXRfb3BlcmF0
b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICBlbHNlCi0gICAgICAgIHNl
dFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IuZ2V0KCksIG1fd2ViUGFnZS5iYWNrZ3JvdW5kQ29sb3Io
KSk7Ci0gICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotCi0gICAgLy8gTnZpZGlhIGRyaXZlcnMg
c2VlbSB0byBwcmVwYXJlIHRoZWlyIHJlZGlyZWN0ZWQgd2luZG93IHBpeG1hcCBhc3luY2hyb25v
dXNseSwgc28gZm9yIGEgZmV3IGZyYWN0aW9ucwotICAgIC8vIG9mIGEgc2Vjb25kIGFmdGVyIGVh
Y2ggcmVzaXplLCB3aGlsZSBkb2luZyBjb250aW51b3VzIHJlc2l6aW5nICh3aGljaCBjb25zdGFu
dGx5IGRlc3Ryb3lzIGFuZCBjcmVhdGVzCi0gICAgLy8gcGl4bWFwIHdpbmRvdy1iYWNraW5ncyks
IHRoZSBwaXhtYXAgbWVtb3J5IGlzIHVuaW5pdGlhbGl6ZWQuIFRvIHdvcmsgYXJvdW5kIHRoaXMg
aXNzdWUsIHBhaW50IHRoZSBvbGQKLSAgICAvLyBwaXhtYXAgdG8gdGhlIG5ldyBvbmUgdG8gcHJv
cGVybHkgaW5pdGlhbGl6ZSBpdC4KLSAgICBpZiAobV9zdXJmYWNlKSB7Ci0gICAgICAgIGNhaXJv
X3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7Ci0gICAgICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsK
LSAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwotICAgIH0KLQotICAgIGNsZWFudXBQaXht
YXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgbV9waXhtYXAgPSBXVEZNb3ZlKG5ld1BpeG1hcCk7
Ci0gICAgbV9zdXJmYWNlID0gV1RGTW92ZShuZXdTdXJmYWNlKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MmIyZWUy
OTE1OGViZmM5YmY4ZmM3MjQ1OTAzZTljNDY3MGE4OGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3dfaAotI2RlZmluZSAgUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3dfaAotCi0jaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNh
aXJvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgotCi10eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93IEdka1dpbmRvdzsKLXR5cGVk
ZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdpbmRv
dzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3Mg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dz4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+JiYgZGFtYWdlTm90aWZ5KTsKLSAgICB+UmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3coKTsKLQotICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lu
ZG93LmdldCgpOyB9Ci0gICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwot
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsgfTsKLQotcHJpdmF0ZToKLSAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiYmIGRhbWFnZU5vdGlmeSk7Ci0gICAgdm9pZCBjcmVhdGVOZXdQaXhhbXBBbmRQaXhhbXBTdXJm
YWNlKCk7Ci0gICAgdm9pZCBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwotCi0gICAg
V2ViUGFnZVByb3h5JiBtX3dlYlBhZ2U7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0
ciB9OwotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFdlYkNvcmU6OlhVbmlxdWVX
aW5kb3cgbV93aW5kb3c7Ci0gICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRv
dzsKLSAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwotICAgIFdlYkNvcmU6OlhV
bmlxdWVEYW1hZ2UgbV9kYW1hZ2U7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJm
YWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLQotI2VuZGlmIC8vIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFn
ZU5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlm
aWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YTMzZmNjYjg4MTg5MDY2ODIzNjQ1OTU1MDI4MjA5YjEyODc2
YWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFt
YWdlTm90aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJYRGFtYWdlTm90aWZpZXIuaCIKKwor
I2lmIFBMQVRGT1JNKFgxMSkKKworI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDEx
Lmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFt
YWdlLmg+CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUV2
ZW50QmFzZTsKKworWERhbWFnZU5vdGlmaWVyJiBYRGFtYWdlTm90aWZpZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFhEYW1hZ2VOb3RpZmllcj4gbm90aWZpZXI7
CisgICAgcmV0dXJuIG5vdGlmaWVyOworfQorCitYRGFtYWdlTm90aWZpZXI6OlhEYW1hZ2VOb3Rp
ZmllcigpCit7CisgICAgZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSkuc3VwcG9ydHNYRGFtYWdlKHNfZGFtYWdlRXZlbnRCYXNlKTsK
K30KKwordm9pZCBYRGFtYWdlTm90aWZpZXI6OmFkZChEYW1hZ2UgZGFtYWdlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4mJiBub3RpZnlGdW5jdGlvbikKK3sKKyAgICBpZiAoIXNfZGFtYWdlRXZlbnRC
YXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9ub3RpZnlGdW5jdGlvbnMuaXNFbXB0
eSgpKQorICAgICAgICBnZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRf
Y2FzdDxHZGtGaWx0ZXJGdW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7CisgICAgbV9u
b3RpZnlGdW5jdGlvbnMuYWRkKGRhbWFnZSwgV1RGTW92ZShub3RpZnlGdW5jdGlvbikpOworfQor
Cit2b2lkIFhEYW1hZ2VOb3RpZmllcjo6cmVtb3ZlKERhbWFnZSBkYW1hZ2UpCit7CisgICAgaWYg
KCFzX2RhbWFnZUV2ZW50QmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub3RpZnlGdW5j
dGlvbnMucmVtb3ZlKGRhbWFnZSk7CisgICAgaWYgKG1fbm90aWZ5RnVuY3Rpb25zLmlzRW1wdHko
KSkKKyAgICAgICAgZ2RrX3dpbmRvd19yZW1vdmVfZmlsdGVyKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRmlsdGVyRnVuYz4oJmZpbHRlclhEYW1hZ2VFdmVudCksIHRoaXMpOworfQorCitH
ZGtGaWx0ZXJSZXR1cm4gWERhbWFnZU5vdGlmaWVyOjpmaWx0ZXJYRGFtYWdlRXZlbnQoR2RrWEV2
ZW50KiBldmVudCwgR2RrRXZlbnQqLCBYRGFtYWdlTm90aWZpZXIqIG5vdGlmaWVyKQoreworICAg
IEFTU0VSVChzX2RhbWFnZUV2ZW50QmFzZSk7CisgICAgYXV0byogeEV2ZW50ID0gc3RhdGljX2Nh
c3Q8WEV2ZW50Kj4oZXZlbnQpOworICAgIGlmICh4RXZlbnQtPnR5cGUgIT0gc19kYW1hZ2VFdmVu
dEJhc2UudmFsdWUoKSArIFhEYW1hZ2VOb3RpZnkpCisgICAgICAgIHJldHVybiBHREtfRklMVEVS
X0NPTlRJTlVFOworCisgICAgYXV0byogZGFtYWdlRXZlbnQgPSByZWludGVycHJldF9jYXN0PFhE
YW1hZ2VOb3RpZnlFdmVudCo+KHhFdmVudCk7CisgICAgaWYgKG5vdGlmaWVyLT5ub3RpZnkoZGFt
YWdlRXZlbnQtPmRhbWFnZSkpIHsKKyAgICAgICAgWERhbWFnZVN1YnRyYWN0KHhFdmVudC0+eGFu
eS5kaXNwbGF5LCBkYW1hZ2VFdmVudC0+ZGFtYWdlLCBOb25lLCBOb25lKTsKKyAgICAgICAgcmV0
dXJuIEdES19GSUxURVJfUkVNT1ZFOworICAgIH0KKworICAgIHJldHVybiBHREtfRklMVEVSX0NP
TlRJTlVFOworfQorCitib29sIFhEYW1hZ2VOb3RpZmllcjo6bm90aWZ5KERhbWFnZSBkYW1hZ2Up
IGNvbnN0Cit7CisgICAgaWYgKGNvbnN0IGF1dG8mIG5vdGlmeUZ1bmN0aW9uID0gbV9ub3RpZnlG
dW5jdGlvbnMuZ2V0KGRhbWFnZSkpIHsKKyAgICAgICAgbm90aWZ5RnVuY3Rpb24oKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9YRGFtYWdlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMzNGNjMjQ4
MjQwY2ZlYWU4Zjk5MmE1ZWYyYjQ1YTQ1YTFjYjU0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvWERhbWFnZU5vdGlmaWVyLmgKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JN
KFgxMSkKKworI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgRGFtYWdlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgWERhbWFnZU5vdGlmaWVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYRGFtYWdlTm90aWZpZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8WERhbWFnZU5v
dGlmaWVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgWERhbWFnZU5vdGlmaWVyJiBzaW5nbGV0b24o
KTsKKworICAgIHZvaWQgYWRkKERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcmVtb3ZlKERhbWFnZSk7CisKK3ByaXZhdGU6CisgICAgWERhbWFnZU5vdGlmaWVyKCk7
CisKKyAgICBzdGF0aWMgR2RrRmlsdGVyUmV0dXJuIGZpbHRlclhEYW1hZ2VFdmVudChHZGtYRXZl
bnQqLCBHZGtFdmVudCosIFhEYW1hZ2VOb3RpZmllciopOworICAgIGJvb2wgbm90aWZ5KERhbWFn
ZSkgY29uc3Q7CisKKyAgICBIYXNoTWFwPERhbWFnZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBt
X25vdGlmeUZ1bmN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDIyMGRhMGE2MDIxN2M5ZWMyNGVjNmUzN2Y4OTQ4MjBjNWI2
NTg0YzQuLjAxYWIxMGQ4NzUzMTQ3YTZmNTk1ZDlkNzFhMTQzNThhZDg0NzkxN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEw
Myw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKExheWVyT3JW
aWV3ICopIG92ZXJyaWRlOwogICAgIExheWVyT3JWaWV3ICphY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5
ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIExheWVySG9zdGluZ01vZGU6Ok91dE9m
UHJvY2VzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggMmUwZjgwZDM1MjMzM2MwZTUwZDc5MzI2M2FhY2NhZGEzNGZjYjc2
ZS4uNWZjMjJhZDkyOWQ3NDE2Yjc0ZDQ0NjAzM2Y1MTZlZGE5NzE2NzkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC00NTYs
MTAgKzQ1Niw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQogewogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci19Ci0KIHZv
aWQgUGFnZUNsaWVudEltcGw6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoTGF5
ZXJPclZpZXcgKnJvb3RMYXllcikKIHsKICAgICBbbV9jb250ZW50VmlldyBfc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RWaWV3OnJvb3RMYXllcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNTgwOGVlMzUzNGIxYjZhZDVlYmE5NjRk
NjdkYzU5ZTFkZDdjMTRkNi4uZDIxY2E1MmE1YWZjN2ZhODljN2JkZjlmMzNiODlkNjA3NDRhZDEy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApA
QCAtMTM4LDcgKzEzOCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lk
IGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgd2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBv
dmVycmlkZTsKIAogICAgIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShj
b25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBlN2Y5MGE1ZGYwMDg1NGZiOGUw
MDIzYzEzMTZhMjZiNDcwY2RlOWViLi41M2I5YmM3OTU1MzA3MmY0N2E2MjBmNTZkNjhiMWU4MDQy
ZGYwMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW0KQEAgLTQ4MCwxMCArNDgwLDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGEKICAgICBt
X2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocmVuZGVyTGF5ZXIpOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSgpCi17Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdSb290TGF5ZXIoQ0FMYXllciAqcm9vdExheWVyKQogewogICAgIG1faW1wbC0+c2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihyb290TGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA2YTkwOGFkODA4OWU3ZjNk
YzM5NzJiZDA4YzcyZDg5Y2VlNGU5NTliLi4xYmQ4ZmZlYWM3ZWEwYTIyZDlhNGFjN2MzZmU5ZDM1
NDM5OTAwY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcApAQCAtMTM4LDkgKzEzOCw5IEBAIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
OjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpQdXRPckFkZChyZXF1ZXN0
RGF0YSwga2V5RGF0YSwgdmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKSkpOwogfQog
Ci12b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK3ZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6R2V0UmVjb3JkKHJl
cXVlc3REYXRhLCByYW5nZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6R2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhKSk7CiB9CiAKIHZv
aWQgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCkBAIC0yNTgsNyAr
MjU4LDkgQEAgc3RhdGljIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0lmTmVjZXNz
YXJ5KGNvbnN0IFdlYklEQlJlc3VsdCYgcmVzdWx0KQogCiAgICAgY29uc3QgYXV0byYgZmlsZVBh
dGhzID0gcmVzdWx0LnJlc3VsdERhdGEoKS5nZXRSZXN1bHQoKS52YWx1ZSgpLmJsb2JGaWxlUGF0
aHMoKTsKIAorI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgQVNTRVJUKGZpbGVQ
YXRocy5zaXplKCkgPT0gcmVzdWx0LmhhbmRsZXMoKS5zaXplKCkpOworI2VuZGlmCiAKICAgICBp
ZiAoIWZpbGVQYXRocy5pc0VtcHR5KCkpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0
aW9uYWxseUZpbGVCYWNrZWRCbG9iKGZpbGVQYXRocywgcmVzdWx0LmhhbmRsZXMoKSksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCmluZGV4IDBlNWM1
MDVmZDVjZmViNzVjODVmYTMzZTFmYjU5MjMxM2NjNDRlNzQuLjE1MzE2NmQzOWU5OTJiYTc5ZWI2
MDEzYWRmYmEyMzhkNDU0ZmY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRl
SW5kZXgoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJJ
bmRleEluZm8mKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGluZGV4TmFtZSkgZmluYWw7CiAgICAgdm9pZCBwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3Jl
OjpJREJWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpIGZpbmFsOworICAgIHZv
aWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCR2V0UmVjb3JkRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgV2Vi
Q29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKSBm
aW5hbDsKICAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgb3Bl
bkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklE
QkN1cnNvckluZm8mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAppbmRleCA0YTVhM2E5
ZDczZGU0NTRiNWM1NmViOGI3YjlkNTMxNzM3MjYyMDJjLi5lYjgwOTQzMjcwYTE1NDQ0MmRlYzIz
YzYxMjU0MjBjNDk0ODBjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCkBAIC0zMTgsMTEg
KzMxOCw5IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShHcmFwaGljc0xheWVyKiBncmFwCiAgICAgbV9leGl0Q29tcG9zaXRpbmdU
aW1lci5zdG9wKCk7CiAgICAgbV93YW50c1RvRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
ID0gZmFsc2U7CiAKLSAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94
eTo6V2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobV9iYWNraW5nU3RvcmVTdGF0
ZUlEKSk7Ci0KICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdCk7CiAgICAgbV9sYXllclRyZWVI
b3N0ID0gTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKG1fd2ViUGFnZSk7Ci0jaWYgUExBVEZPUk0oR1RL
KSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVIpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBpZiAo
bV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKG1fbmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKTsKICNlbmRpZgpAQCAtMzU0LDcgKzM1Miw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dE1lc3NhZ2UoSVBDOjpDb25uCiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNF
KFRFWFRVUkVfTUFQUEVSKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
KSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiB2b2lkIEFjY2VsZXJhdGVk
RHJhd2luZ0FyZWE6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRf
dCBoYW5kbGUpCiB7CiAgICAgbV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcgPSBo
YW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCBlYTE2N2EzYmVmZDZhMDQ1ODhkNWRjNzUy
ZDIyYzVmYjA3OTFiMTY0Li4yMWNhNDkzZjRjMjg5YWMxMWU3YWQ0M2E3ODg2MTg3YTgzNzg2Njg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBQTEFURk9STShHVEspICYm
IFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90
KSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9z
aXRpbmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggNDFiNDJmNTUzODNlZTRiZmU3NzY0NjAwOGMwNDc5NzYzNTNmZGM0MC4uZGJkMDI4MGEx
YzBmZDAwNmEwZjcxY2VlMTJjMTVjNWIyMzJjYzE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKyNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTUwLDE0ICs1NCwyNiBAQCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6flRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQ
YWdlKQogICAgIDogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KHdlYlBhZ2UpCiAgICAgLCBtX2Nv
bXBvc2l0b3JDbGllbnQoKnRoaXMpCisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisgICAgLCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OmNyZWF0ZSh3ZWJQYWdlKSkKKyAgICAsIG1fY29tcG9zaXRvcihUaHJlYWRlZENvbXBvc2l0b3I6
OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50LCBtX3JlZGlyZWN0ZWRXaW5kb3cgPyBtX3JlZGly
ZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogMCkpCisjZWxzZQogICAgICwgbV9jb21wb3NpdG9yKFRo
cmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKCZtX2NvbXBvc2l0b3JDbGllbnQpKQorI2VuZGlmCiB7
CisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgaWYgKG1fcmVkaXJl
Y3RlZFdpbmRvdykKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fcmVk
aXJlY3RlZFdpbmRvdy0+cGl4bWFwKCk7CisjZW5kaWYKIH0KIAogdm9pZCBUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9jb21wb3NpdG9yLT5p
bnZhbGlkYXRlKCk7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7
CisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgbV9yZWRpcmVjdGVk
V2luZG93ID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQpAQCAtNzksNiArOTUsMTMgQEAgdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBX
ZWJDb3JlOjpJbnRTaXoKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKKyNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKKyAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7CisgICAgICAg
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOworICAgICAgICBt
X2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAo
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9jb21wb3NpdG9yLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcihtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CkBAIC05MSw2ICsx
MTQsMTIgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogeworI2lmIFVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5k
b3cpIHsKKyAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUoc2l6ZSk7CisgICAgICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnBpeG1h
cCgpOworICAgIH0KKyNlbmRpZgogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURp
ZENoYW5nZShzaXplKTsKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZShz
aXplKTsKIH0KQEAgLTEwNSw3ICsxMzQsNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkaWRTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQgc2NhbGUsIGNvbnN0CiAgICAg
bV93ZWJQYWdlLnNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKTsKIH0KIAotI2lmIFBMQVRGT1JNKEdU
SykKKyNpZiBQTEFURk9STShHVEspICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldE5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5kbGUpCiB7CiAgICAgbV9sYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCA9IGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDZhOTkwYzMzYTU4NzU3MWYwMTY4OTNiMThkMTNjODc2MDYyNWI3ZWYuLmE0MWExMTYzOGNkMGZl
ZmQ4MmYyMzdkNDEzNjAwMGY3MDRlZTc1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAt
NDEsNiArNDEsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBmaW5hbCA6
IHB1YmxpYyBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgewpAQCAtNjQsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBmb3JjZVJl
cGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZv
ckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0xMDMsMTAgKzEw
NCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNv
bnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCi0gICAg
V2ViQ29yZTo6SW50UG9pbnQgbV9wcmV2U2Nyb2xsUG9zaXRpb247CiAgICAgQ29tcG9zaXRvckNs
aWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9X
SU5ET1cpCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBt
X3JlZGlyZWN0ZWRXaW5kb3c7CisjZW5kaWYKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9y
PiBtX2NvbXBvc2l0b3I7CiAgICAgZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3IgeyAxIH07CisgICAg
V2ViQ29yZTo6SW50UG9pbnQgbV9wcmV2U2Nyb2xsUG9zaXRpb247CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgbV9sYXN0U2Nyb2xsUG9zaXRpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDAyYjQwMzVlMjA4NTEzNmFiYjNk
N2Q1OGY2MzM4ZDA3MzliY2I0YzYuLmJkMzNlNGUwMmZhOTBlMzBkMmFjNDRhM2M1M2EwOTU5Zjc0
ZDczOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhVHlw
ZSBtX3R5cGU7CiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCi0jaWYgUExBVEZPUk0oR1RLKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVIpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB1aW50NjRf
dCBtX25hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyB7IDAgfTsKICNlbmRpZgogCkBA
IC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rp
b25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICNlbmRpZgogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBQTEFURk9STShHVEspCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBQTEFURk9STShHVEspICYmICFVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhh
bmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpID0gMDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLm1lc3NhZ2VzLmluCmluZGV4IDcyODliNjNjYzQyZjM2ZmEyZTQzMDRjNmRmM2VlZmYwOGE2
NDRhOTcuLjk3ZGY1ODZiODZmOWRmZGZjOTY2ZmNmMGZmN2ZhZjU5ZmIwOTBlYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
bWVzc2FnZXMuaW4KQEAgLTQwLDcgKzQwLDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgewog
ICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlm
CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpICYmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQogICAgIFNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50
NjRfdCBoYW5kbGUpCiAgICAgRGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGlu
ZygpIC0+IChib29sIGhhbmRsZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDk5
MzQzZGI3OGExMGUyZGEzN2Q1OTlmZDgxMjFiNDljMWQxYzlkMzEuLjlhMDkyZWQ4NmMyNjNiY2Y5
ZmNhNjE0YzUxMzliNTYwNTdjYTJjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtNTcsNiAr
NTcsMTAgQEAKICNpbmNsdWRlIDxnZGsvZ2RreC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTEzMyw2ICsxMzcsOSBAQCBSZWY8TGF5ZXJUcmVlSG9zdEd0az4gTGF5ZXJU
cmVlSG9zdEd0azo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCiAKIExheWVyVHJlZUhvc3RHdGs6
OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qo
d2ViUGFnZSkKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyAgICAsIG1f
cmVkaXJlY3RlZFdpbmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHdlYlBh
Z2UpKQorI2VuZGlmCiAgICAgLCBtX3JlbmRlckZyYW1lU2NoZWR1bGVyKHN0ZDo6YmluZCgmTGF5
ZXJUcmVlSG9zdEd0azo6cmVuZGVyRnJhbWUsIHRoaXMpKQogewogICAgIG1fcm9vdExheWVyID0g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKQEAg
LTE1OSwxNyArMTY2LDMwIEBAIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2Vi
UGFnZSYgd2ViUGFnZSkKIAogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+
c2V0TmVlZHNEaXNwbGF5KCk7CisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKKyAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7CisgICAgICAgIGNyZWF0ZVRleHR1cmVN
YXBwZXIoKTsKKyAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fcmVkaXJl
Y3RlZFdpbmRvdy0+cGl4bWFwKCk7CisgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgTGF5ZXJUcmVl
SG9zdEd0azo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBpZiAoIW1fbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQpIHsKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykK
KyAgICB1aW50NjRfdCBuYXRpdmVIYW5kbGUgPSBtX3JlZGlyZWN0ZWRXaW5kb3cgPyBtX3JlZGly
ZWN0ZWRXaW5kb3ctPndpbmRvdygpIDogbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRDsKKyNl
bHNlCisgICAgdWludDY0X3QgbmF0aXZlSGFuZGxlID0gbV9sYXllclRyZWVDb250ZXh0LmNvbnRl
eHRJRDsKKyNlbmRpZgorCisgICAgaWYgKCFuYXRpdmVIYW5kbGUpIHsKICAgICAgICAgbV9jb250
ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICgh
bV9jb250ZXh0KSB7Ci0gICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obV9sYXllclRy
ZWVDb250ZXh0LmNvbnRleHRJRCksIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisgICAg
ICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVy
cHJldF9jYXN0PEdMTmF0aXZlV2luZG93VHlwZT4obmF0aXZlSGFuZGxlKSwgR0xDb250ZXh0Ojpz
aGFyaW5nQ29udGV4dCgpKTsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjA4LDYgKzIyOCwxMCBAQCB2b2lkIExheWVyVHJlZUhv
c3RHdGs6OmludmFsaWRhdGUoKQogCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICBMYXll
clRyZWVIb3N0OjppbnZhbGlkYXRlKCk7CisKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRF
X1dJTkRPVykKKyAgICBtX3JlZGlyZWN0ZWRXaW5kb3cgPSBudWxscHRyOworI2VuZGlmCiB9CiAK
IHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3Bs
YXkoKQpAQCAtMjQ3LDExICsyNzEsMjUgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlk
Q2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBvbGRTaXplLmhl
aWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRTaXplLmhlaWdo
dCgpKSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKIAorI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorICAgIGlmIChtX3Jl
ZGlyZWN0ZWRXaW5kb3cpIHsKKyAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobmV3
U2l6ZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3JlZGlyZWN0
ZWRXaW5kb3ctPnBpeG1hcCgpOworICAgIH0KKyNlbmRpZgorCiAgICAgY29tcG9zaXRlTGF5ZXJz
VG9Db250ZXh0KEZvclJlc2l6ZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKKyNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKKyAgICBpZiAobV9yZWRpcmVjdGVkV2luZG93KSB7CisgICAgICAgIG1fcmVk
aXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS5zaXplKCkpOworICAgICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gbV9yZWRpcmVjdGVkV2luZG93LT5waXhtYXAoKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBvZiB0aGUgc2NhbGUgZmFj
dG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IuCiAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsK
IApAQCAtMzc3LDExICs0MTUsOCBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldFZpZXdPdmVy
bGF5Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheQogICAgICAgICBt
X3Jvb3RMYXllci0+YWRkQ2hpbGQobV92aWV3T3ZlcmxheVJvb3RMYXllcik7CiB9CiAKLXZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVp
bnQ2NF90IGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlVGV4dHVyZU1hcHBl
cigpCiB7Ci0gICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLSAgICBtX2xheWVyVHJlZUNv
bnRleHQuY29udGV4dElEID0gaGFuZGxlOwotCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBU
ZXh0dXJlTWFwcGVyIG5lZWRzIGFuIGFjdGl2ZSBPcGVuR0wgY29udGV4dC4KICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0zOTEsOSArNDI2LDE4IEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKHVpbnQ2NF90IGhhbmRsZSkKICAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVy
OjpjcmVhdGUoKTsKICAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPihtX3RleHR1cmVN
YXBwZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcodHJ1ZSk7CiAg
ICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5
ZXIoKS5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7Cit9CiAKKyNpZiAh
VVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCit2b2lkIExheWVyVHJlZUhvc3RHdGs6
OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5kbGUpCit7
CisgICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKKyAgICBtX2xheWVyVHJlZUNvbnRleHQu
Y29udGV4dElEID0gaGFuZGxlOworCisgICAgY3JlYXRlVGV4dHVyZU1hcHBlcigpOwogICAgIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oCmluZGV4IGMxNWI4NmY2ZjE2NjkyMmMwMjFjNTY5NzhiODVkNDlhZTg2
MDI5MDEuLmQ2OWRlOTc5YzUxZDQzNjEwOTBjZTI2MjExZGRhYzA2OTNlZGQ4NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzsKKwogY2xhc3MgTGF5ZXJUcmVlSG9zdEd0ayBm
aW5hbCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPExheWVyVHJlZUhvc3RHdGs+IGNyZWF0ZShXZWJQ
YWdlJik7CkBAIC02NSw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGxOb25Db21w
b3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKikgb3ZlcnJpZGU7CiAKKyNpZiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cp
CiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3Qp
IG92ZXJyaWRlOworI2VuZGlmCiAKICAgICBjbGFzcyBSZW5kZXJGcmFtZVNjaGVkdWxlciB7CiAg
ICAgcHVibGljOgpAQCAtOTgsMTIgKzEwMiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hB
bmRSZW5kZXJMYXllcnMoKTsKICAgICBib29sIHJlbmRlckZyYW1lKCk7CiAgICAgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICB2b2lkIGNyZWF0ZVRleHR1cmVNYXBwZXIoKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
PiBtX3RleHR1cmVNYXBwZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4
dD4gbV9jb250ZXh0OwogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVN
YXRyaXg7CisjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5kb3c7
CisjZW5kaWYKICAgICBSZW5kZXJGcmFtZVNjaGVkdWxlciBtX3JlbmRlckZyYW1lU2NoZWR1bGVy
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xY2ZkOGI3Y2M0ZGVlMjIxOTM3MjA2YzYzNTExOTFiYThjYmI0MDg1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaCIKKworI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQor
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5
WDExLmg+CisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9Y
Y29tcG9zaXRlLmg+CisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQoreworICAgIGlmICghZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSkuc3VwcG9ydHNYQ29tcG9zaXRlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5ldyBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdyh3ZWJQYWdlKSk7Cit9CisKK1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhXZWJQYWdlJiB3ZWJQYWdlKQor
ICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX2Rpc3BsYXkoZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkp
CisgICAgLCBtX3NpemUod2ViUGFnZS5zaXplKCkpCit7CisgICAgbV9zaXplLnNjYWxlKG1fd2Vi
UGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKworICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVs
dFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOworCisgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
ID09IG1fZGlzcGxheSk7CisgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9y
Z2JhX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworICAgIGlmICghdmlzdWFsKQor
ICAgICAgICB2aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5f
Z2V0X2RlZmF1bHQoKSk7CisKKyAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNv
bG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxf
WFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKKworICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVz
IHdpbmRvd0F0dHJpYnV0ZXM7CisgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVj
dCA9IFRydWU7CisgICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwLmdldCgp
OworCisgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVwdGgg
ZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgorICAgIC8vIFNlZSBodHRwOi8vY2dpdC5m
cmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmctc2Vy
dmVyLTEuMTYuMCNuNzAzLgorICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gMDsK
KworICAgIG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAgICAg
IFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAorICAgICAgICBXaWR0aE9mU2NyZWVuKHNjcmVl
bikgKyAxLCAwLCAxLCAxLAorICAgICAgICAwLAorICAgICAgICBnZGtfdmlzdWFsX2dldF9kZXB0
aCh2aXN1YWwpLAorICAgICAgICBJbnB1dE91dHB1dCwKKyAgICAgICAgR0RLX1ZJU1VBTF9YVklT
VUFMKHZpc3VhbCksCisgICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCB8IENXQ29sb3JtYXAgfCBD
V0JvcmRlclBpeGVsLAorICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7CisgICAgWE1hcFdpbmRv
dyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93LmdldCgpKTsKKworICAgIHdpbmRvd0F0dHJpYnV0
ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7CisgICAgd2luZG93QXR0cmlidXRl
cy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOworCisgICAgLy8gQ3JlYXRlIHRoZSB3aW5kb3cg
b2YgYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5k
b3dzLgorICAgIG1fd2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAgICAgIG1f
cGFyZW50V2luZG93LmdldCgpLAorICAgICAgICAwLCAwLAorICAgICAgICBzdGQ6Om1heCgxLCBt
X3NpemUud2lkdGgoKSksCisgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSksCisg
ICAgICAgIDAsCisgICAgICAgIENvcHlGcm9tUGFyZW50LAorICAgICAgICBJbnB1dE91dHB1dCwK
KyAgICAgICAgQ29weUZyb21QYXJlbnQsCisgICAgICAgIENXRXZlbnRNYXNrLAorICAgICAgICAm
d2luZG93QXR0cmlidXRlcyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpKTsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFhFdmVudCBldmVudDsKKyAgICAgICAg
WFdpbmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVyZU5vdGlmeU1h
c2ssICZldmVudCk7CisgICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVu
dC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdy5nZXQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgTm9FdmVudE1h
c2spOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisgICAgbV9waXhtYXAgPSBYQ29tcG9zaXRl
TmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKK30KKworUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCit7Cisg
ICAgQVNTRVJUKG1fZGlzcGxheSk7CisgICAgQVNTRVJUKG1fd2luZG93KTsKKyAgICBBU1NFUlQo
bV9wYXJlbnRXaW5kb3cpOworCisgICAgLy8gRXhwbGljaXRseSByZXNldCB0aGVzZSBiZWNhdXNl
IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KKyAgICBtX3dpbmRv
dy5yZXNldCgpOworICAgIG1fcGFyZW50V2luZG93LnJlc2V0KCk7Cit9CisKK3ZvaWQgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAg
IEludFNpemUgc2NhbGVkU2l6ZShzaXplKTsKKyAgICBzY2FsZWRTaXplLnNjYWxlKG1fd2ViUGFn
ZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBpZiAoc2NhbGVkU2l6ZSA9PSBtX3NpemUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc2l6ZSA9IHNjYWxlZFNpemU7CisKKyAgICAvLyBSZXNp
emUgdGhlIHdpbmRvdyB0byBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3Jl
YXRlIGVtcHR5IHdpbmRvd3MuCisgICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93
LmdldCgpLCBzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5o
ZWlnaHQoKSkpOworICAgIFhGbHVzaChtX2Rpc3BsYXkpOworCisgICAgLy8gUmVsZWFzZSB0aGUg
cHJldmlvdXMgcGl4bWFwIGxhdGVyIHRvIGdpdmUgc29tZSB0aW1lIHRvIHRoZSBVSSBwcm9jZXNz
IHRvIHVwZGF0ZS4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9u
bzo6c2Vjb25kcyg1KSwgW3BpeG1hcCA9IFdURk1vdmUobV9waXhtYXApXSB7IH0pOworICAgIG1f
cGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5n
ZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0YTU0ZDkzNTI2YWFkYzk2ZDBmNzZmODliNTFjYTgzNTRhMjQyMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1hVbmlxdWVSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKK3R5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBQaXhtYXA7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93OworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKFdlYlBhZ2Um
KTsKKyAgICB+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKTsKKworICAgIFdpbmRvdyB3aW5k
b3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5nZXQoKTsgfQorICAgIFBpeG1hcCBwaXhtYXAo
KSBjb25zdCB7IHJldHVybiBtX3BpeG1hcC5nZXQoKTsgfQorICAgIHZvaWQgcmVzaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyhXZWJQYWdlJik7CisKKyAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CisgICAgRGlzcGxh
eSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9OworICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwor
ICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1
ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4
bWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUkVESVJF
Q1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDU2NGE1NGE4NzVkNDU1YWM4ODM1MjMzNjk0YTFmOTI4OWUxYzg2YjQuLjNiY2YxNjEzZjI2ZTYz
OThkYzljODhjYWI5NjVjOTYwMmU5MDM5YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA4LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBBZGQgc3VwcG9ydCB0byBSZWZlcnJlclBv
bGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3Jl
ZmVycmVyLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXItd29ya2VyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVmZXJyZXIuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZWZl
cnJlci5qczogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtcmVmZXJyZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXBy
ZWZsaWdodC1yZWZlcnJlci13b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1yZWZlcnJlci5qczoKKyAg
ICAgICAgKGNvcnNQcmVmbGlnaHRSZWZlcnJlcik6IGZpeCBpbmZyYXN0cnVjdHVyZSBidWcgaW4g
dGVzdCBhbmQgZml4IGV4cGVjdGVkIHJlZmVycmVyIHBvbGljeSBpbiBkZWZhdWx0IGNhc2UuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0
LXdvcmtlci1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDgtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaCBBUEldIEZldGNoIHByb21pc2VzIHNob3Vs
ZCBub3QgcmVqZWN0IG9yIHJlc29sdmUgd2hlbiBBY3RpdmVET01PYmplY3RzIGFyZSBiZWluZyBz
dG9wcGVkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>