<?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>104543</bug_id>
          
          <creation_ts>2012-12-10 05:58:14 -0800</creation_ts>
          <short_desc>MediaStream API: Change the data channel descriptor pattern to a handler pattern</short_desc>
          <delta_ts>2012-12-12 02:50:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787237</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-10 05:58:14 -0800</bug_when>
    <thetext>This will fix lifetime/memory/code structure issues in the chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787241</commentid>
    <comment_count>1</comment_count>
      <attachid>178529</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-10 06:03:48 -0800</bug_when>
    <thetext>Created attachment 178529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787242</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-10 06:06:13 -0800</bug_when>
    <thetext>Reviewers: This patch is big but it contains quite a bit of deleted files. It is also straight-forward and not particularly complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787244</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 06:08:38 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787246</commentid>
    <comment_count>4</comment_count>
      <attachid>178529</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-10 06:14:44 -0800</bug_when>
    <thetext>Comment on attachment 178529
Patch

Attachment 178529 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15219972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787261</commentid>
    <comment_count>5</comment_count>
      <attachid>178534</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-10 06:29:48 -0800</bug_when>
    <thetext>Created attachment 178534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787581</commentid>
    <comment_count>6</comment_count>
      <attachid>178534</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-12-10 11:28:57 -0800</bug_when>
    <thetext>Comment on attachment 178534
Patch

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

&gt; Source/Platform/chromium/public/WebRTCDataChannelHandler.h:39
&gt; +    virtual void setClient(WebRTCDataChannelHandlerClient*) = 0;

Q: do you need to be able to modify the client at runtime?  how about just passing it to the createDataChannel method?

&gt; Source/Platform/chromium/public/WebRTCDataChannelHandler.h:42
&gt; +    virtual bool reliable() = 0;

nit: this method looks like it is asking a question, so perhaps it should be named as such?  isReliable?

&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:46
&gt; +    virtual void dataArrived(const WebString&amp;) const = 0;

nit: call this didReceiveData just like WebURLLoaderClient?

&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:47
&gt; +    virtual void dataArrived(const char*, size_t) const = 0;

Q: why are there two versions of this function?  should the first be called didReceiveStringData and the second didReceiveRawData?  I&apos;m re-using the terms from WebRTCDataChannelHandler.

&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:48
&gt; +    virtual void error() const = 0;

nit: didReceiveError?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788212</commentid>
    <comment_count>7</comment_count>
      <attachid>178753</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-11 02:09:51 -0800</bug_when>
    <thetext>Created attachment 178753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788217</commentid>
    <comment_count>8</comment_count>
      <attachid>178534</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-11 02:19:05 -0800</bug_when>
    <thetext>Comment on attachment 178534
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebRTCDataChannelHandler.h:39
&gt;&gt; +    virtual void setClient(WebRTCDataChannelHandlerClient*) = 0;
&gt; 
&gt; Q: do you need to be able to modify the client at runtime?  how about just passing it to the createDataChannel method?

No, the client will nor change once set. This is needed when the remote side initiates the DataChannel setup; the local UA detects that and creates an WebRTCDataChannelHandler and sends to through the WebRTCPeerConnectionHandlerClient. The WebCore code then needs to set the client. This way it is symmetrical.

&gt;&gt; Source/Platform/chromium/public/WebRTCDataChannelHandler.h:42
&gt;&gt; +    virtual bool reliable() = 0;
&gt; 
&gt; nit: this method looks like it is asking a question, so perhaps it should be named as such?  isReliable?

Done.

&gt;&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:46
&gt;&gt; +    virtual void dataArrived(const WebString&amp;) const = 0;
&gt; 
&gt; nit: call this didReceiveData just like WebURLLoaderClient?

see next comment

&gt;&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:47
&gt;&gt; +    virtual void dataArrived(const char*, size_t) const = 0;
&gt; 
&gt; Q: why are there two versions of this function?  should the first be called didReceiveStringData and the second didReceiveRawData?  I&apos;m re-using the terms from WebRTCDataChannelHandler.

Changed them to didReceiveStringData and didReceiveRawData as suggested.

&gt;&gt; Source/Platform/chromium/public/WebRTCDataChannelHandlerClient.h:48
&gt;&gt; +    virtual void error() const = 0;
&gt; 
&gt; nit: didReceiveError?

Receive is not the correct word so I renamed it to didDetectError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789307</commentid>
    <comment_count>9</comment_count>
      <attachid>178753</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-12-12 01:00:43 -0800</bug_when>
    <thetext>Comment on attachment 178753
Patch

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

This seems to address Darin&apos;s comment.
Rubber-stamped.

&gt; Source/WebCore/GNUmakefile.list.am:5665
&gt; +        Source/WebCore/platform/mediastream/RTCDataChannelHandler.h \
&gt; +        Source/WebCore/platform/mediastream/RTCDataChannelHandlerClient.h \
&gt; +        Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.cpp \

These lines should start with TAB to be consistent with other lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789363</commentid>
    <comment_count>10</comment_count>
      <attachid>179006</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-12 02:15:13 -0800</bug_when>
    <thetext>Created attachment 179006
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789365</commentid>
    <comment_count>11</comment_count>
      <attachid>178753</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-12 02:16:31 -0800</bug_when>
    <thetext>Comment on attachment 178753
Patch

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

&gt;&gt; Source/WebCore/GNUmakefile.list.am:5665
&gt;&gt; +        Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.cpp \
&gt; 
&gt; These lines should start with TAB to be consistent with other lines.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789391</commentid>
    <comment_count>12</comment_count>
      <attachid>179006</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 02:43:41 -0800</bug_when>
    <thetext>Comment on attachment 179006
Patch for landing

Clearing flags on attachment: 179006

Committed r137441: &lt;http://trac.webkit.org/changeset/137441&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178529</attachid>
            <date>2012-12-10 06:03:48 -0800</date>
            <delta_ts>2012-12-10 06:29:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104543-20121210150109.patch</filename>
            <type>text/plain</type>
            <size>93589</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4NDk4YjNhNzhiZjUw
OWQxMzk5YjUxNGE3OGUwMDk1MGUzYWViNjNiLi5hMTk0NTBiNmUwOWI2MzA3ZTI1ZDlmMWY0MjUx
NjI5ZTAwM2UxNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMi0xMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBh
IGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMgcmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRs
ZXIvQ2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZp
eCBsaWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBw
b3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6fldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQ6On5XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0
YUNoYW5uZWwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwp
OgorCiAyMDEyLTEyLTA4ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5rIHJlbD1wcmVyZW5kZXI+IGVsZW1lbnRz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGZmMjIzMmMyYWEwMmFlNTdmMzQwYTczY2M4ZGYyNGUwM2Y2YWFmNjEu
LmNiZDY5MzgwZGU5MjBmZjQ0ZWNiODQwNzM5ZTYyMzFmMzA2MTA2MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4MSBAQAorMjAxMi0xMi0xMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFu
bmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMg
cmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRsZXIvQ2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAgIGluc3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0
dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZpeCBsaWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1
cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBwb3J0LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Rz
IGNvdmVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6On5SVENEYXRhQ2hhbm5lbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OnJlbGlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpidWZm
ZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6c2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNo
YW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNoYW5u
ZWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6flJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudDo6flJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjp+UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06
OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OnJlbGlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkQ2hhbmdlUmVhZHlTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGF0
YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21p
dW06OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bTo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtKToKKwogMjAxMi0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gYWNjZXNzaWJpbGl0eS9wbGFjZWhvbGRlci5odG1s
IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGJjYzI0ZTAzZGZhM2Q4
NjUwMDJhZGI1YWNmNmEyMWZlYzk0ZjA2ZS4uMjAyNTQxOTVjYmNjZWQ4ZThhMGNlYWZmYzRiNGI4
YjBlMjhkMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0xMi0xMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3Ig
cGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisKIDIw
MTItMTItMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzcxMDMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CmluZGV4IGI5NzRkMzgwM2JhOWQ2Yzk2OTFmYWMwNGJlNDY0ZDI3ZmQyOTJkOWUuLjQ5NzdkOWZl
NGJjOWViNmJiZWQ3MWU2NTZkOTkxNjNlODUwN2FiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBA
IC0xMDEsNyArMTAxLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0
ZU93blB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0ci5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENJQ0VDYW5kaWRhdGUuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENEYXRhQ2hhbm5lbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGVm
YmRiYzlmOWY0YTI3MDViY2NkM2M1ODQ3NDBlYmRlMzVkMTc3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDRGF0YUNoYW5uZWxfaAotI2RlZmluZSBXZWJSVENE
YXRhQ2hhbm5lbF9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsIHsKLXB1YmxpYzoKLSAgICBjbGFzcyBFeHRyYURh
dGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9Ci0gICAg
fTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5n
ID0gMCwKLSAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAotICAgICAgICBSZWFkeVN0YXRlQ2xv
c2luZyA9IDIsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAotICAgIH07Ci0KLSAgICBX
ZWJSVENEYXRhQ2hhbm5lbCgpIHsgfQotICAgIFdlYlJUQ0RhdGFDaGFubmVsKGNvbnN0IFdlYlJU
Q0RhdGFDaGFubmVsJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYlJUQ0RhdGFD
aGFubmVsKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5lbCYgb3BlcmF0b3I9
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihv
dGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsK
LQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwm
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZWxpYWJs
ZSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVu
c2lnbmVkIGxvbmcpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlZChSZWFkeVN0YXRlKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGF0YUFycml2
ZWQoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRhdGFB
cnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBlcnJvcigpIGNvbnN0OwotCi0gICAgLy8gRXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhp
cyBXZWJSVENEYXRhQ2hhbm5lbC4KLSAgICAvLyBJZiBub24tbnVsbCwgdGhlIGV4dHJhIGRhdGEg
cG9pbnRlciB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4KLSAg
ICAvLyBTZXR0aW5nIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBjYXVzZSBhbnkgZXhpc3Rp
bmcgbm9uLW51bGwKLSAgICAvLyBleHRyYSBkYXRhIHBvaW50ZXIgdG8gYmUgZGVsZXRlZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgIFdlYlJUQ0RhdGFDaGFubmVsKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+Jik7Ci0gICAgV2ViUlRDRGF0YUNoYW5u
ZWwoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKik7Ci0gICAgb3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4oKSBjb25zdDsK
LSAgICBvcGVyYXRvciBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqKCkgY29uc3Q7
Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcj4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJSVENEYXRhQ2hhbm5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZDEyZGUzZDc5NjkzMzMzNDY1YzhmNDJlZjkwNzU4OGRkZjMyZWRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBsYWJlbCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVsaWFibGUoKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGJ1ZmZlcmVkQW1vdW50KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShj
b25zdCBXZWJTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJhOWM3
OTM3OTRjMmU4ZThjZjUwOTZkODk4N2IxMWYwMmFjNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIGVudW0gUmVh
ZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5nID0gMCwKKyAgICAgICAgUmVh
ZHlTdGF0ZU9wZW4gPSAxLAorICAgICAgICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCisgICAgICAg
IFJlYWR5U3RhdGVDbG9zZWQgPSAzLAorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VS
ZWFkeVN0YXRlKFJlYWR5U3RhdGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YUFy
cml2ZWQoY29uc3QgV2ViU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRh
QXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGVycm9yKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgKaW5kZXggMzE3MDIxNDEyNDMwYjMzMWJhMzI1OTUwY2UyNDA1ODdiYzIzZGY4Yi4uMjdk
MGVlNjcwMTgzYWUwMmVjYWI1ZjQ4ZTMxY2EyNmZlNzg3YjFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
TWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIGNsYXNz
IFdlYlJUQ0NvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbDsKK2NsYXNzIFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNz
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFdlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjsKQEAgLTYyLDEzICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKICAgICAv
LyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBjbGllbnRzIGhhdmUg
Y2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1
ZXN0JikgeyB9CisgICAgdmlydHVhbCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURh
dGFDaGFubmVsKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFu
bmVsCi0gICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hh
bm5lbCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRh
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgV2ViU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgV2ViUlRDRGF0YUNoYW5u
ZWwmLCBjb25zdCBjaGFyKiwgc2l6ZV90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dC5oCmluZGV4IGNkMDZjMGU4NzlkMDliNzQ5ZDJlMjY1NjgzNDg0YjRjMDQ5MTkzMjMuLjU0YWMz
NzZjNDM2Zjc0ZmNmMjliYzJlYzcyYmM4MGM2ZGE1Nzc2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIFdlYlJUQ0RhdGFDaGFu
bmVsOworY2xhc3MgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2Fu
ZGlkYXRlOwogCiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewpAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlDRVN0YXRl
KElDRVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25z
dCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFD
aGFubmVsJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciopIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE4OGYzMTE0NTAzZjYxYzE2Mzc0NzQyZGRhODhjZWE5
MjMzMjYyYjIuLjYwZWM3ZmY0YmFmNjAzZDJiNWEzYTViZjc0Y2NmNjkzZjE4ZmU0YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xOTk2LDcgKzE5OTYsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKLSAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDFkNDJlYTMwMDAxMTM2MzZiNDYxOWNkMjAyOGQyMzgzMGY3YWVl
MzEuLmIyZDZmN2RkYmZmODhmMTU5MTcxMzRkYTM3Y2NhYjk4YzlkOTc4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTY2OCw5ICs1NjY4LDkgQEAgd2ViY29yZV9wbGF0Zm9y
bV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmNwcCBcCisgICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIFwKKyAgICAgICAgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggXAorICAgICAgICBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlw
dG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4
IDA3ZTI5MmVhMDVjYTAwYWQ1ZWE5M2NjYjIxOTZjOGQ1OWUzMGUyYmUuLjUxNmQzMTc0OTQwMjdk
NzgzZjMxMzQyYTU3YmM0NjNmOGEzZGQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgpAQCAtMzksNjAg
KzQwLDU3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgQVNTRVJUKGhhbmRsZXIpOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gZGF0YUNo
YW5uZWwgPSBjcmVhdGUoY29udGV4dCwgaGFuZGxlciwgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpjcmVhdGUobGFiZWwsIHJlbGlhYmxlKSk7Ci0gICAgaWYgKCFoYW5kbGVyLT5vcGVuRGF0YUNo
YW5uZWwoZGF0YUNoYW5uZWwtPmRlc2NyaXB0b3IoKSkpIHsKKyAgICBPd25QdHI8UlRDRGF0YUNo
YW5uZWxIYW5kbGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEYXRh
Q2hhbm5lbChsYWJlbCwgcmVsaWFibGUpOworICAgIGlmICghaGFuZGxlcikgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0
dXJuIGRhdGFDaGFubmVsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0Rh
dGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIucmVsZWFzZSgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGVzY3JpcHRvcikKK1Bhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKGhhbmRsZXIpOwotICAgIEFTU0VSVChkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIsIGRlc2NyaXB0
b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhh
bmRsZXIpKTsKIH0KIAotUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCitSVENEYXRh
Q2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiAgICAgOiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICwgbV9zdG9wcGVkKGZhbHNlKQotICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAg
LCBtX3JlYWR5U3RhdGUoUmVhZHlTdGF0ZUNvbm5lY3RpbmcpCiAgICAgLCBtX2JpbmFyeVR5cGUo
QmluYXJ5VHlwZUFycmF5QnVmZmVyKQotICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBt
X3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJlJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CisgICAg
bV9oYW5kbGVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsOjp+UlRDRGF0
YUNoYW5uZWwoKQogewotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOwogfQogCiBTdHJp
bmcgUlRDRGF0YUNoYW5uZWw6OmxhYmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT5sYWJlbCgpOworICAgIHJldHVybiBtX2hhbmRsZXItPmxhYmVsKCk7CiB9CiAKIGJvb2wg
UlRDRGF0YUNoYW5uZWw6OnJlbGlhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT5yZWxpYWJsZSgpOworICAgIHJldHVybiBtX2hhbmRsZXItPnJlbGlhYmxlKCk7CiB9CiAK
IFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNo
IChtX2Rlc2NyaXB0b3ItPnJlYWR5U3RhdGUoKSkgewotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ29ubmVjdGluZzoKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0
ZSkgeworICAgIGNhc2UgUmVhZHlTdGF0ZUNvbm5lY3Rpbmc6CiAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImNvbm5lY3RpbmciKTsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjo6UmVhZHlTdGF0ZU9wZW46CisgICAgY2FzZSBSZWFkeVN0YXRlT3BlbjoKICAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgib3BlbiIpOwotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yOjpSZWFkeVN0YXRlQ2xvc2luZzoKKyAgICBjYXNlIFJlYWR5U3RhdGVDbG9zaW5nOgogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zaW5nIik7Ci0gICAgY2FzZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgY2FzZSBSZWFkeVN0YXRlQ2xv
c2VkOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zZWQiKTsKICAgICB9CiAKQEAg
LTEwMiw3ICsxMDAsNyBAQCBTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25z
dAogCiB1bnNpZ25lZCBsb25nIFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+YnVmZmVyZWRBbW91bnQoKTsKKyAgICByZXR1
cm4gbV9oYW5kbGVyLT5idWZmZXJlZEFtb3VudCgpOwogfQogCiBTdHJpbmcgUlRDRGF0YUNoYW5u
ZWw6OmJpbmFyeVR5cGUoKSBjb25zdApAQCAtMTI5LDExICsxMjcsMTEgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmIGJpbmFyeVR5cGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgZGF0
YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0
ZSgpICE9IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVPcGVuKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKGRlc2NyaXB0b3IoKSwgZGF0YSkpIHsKKyAgICBpZiAoIW1faGFuZGxl
ci0+c2VuZFN0cmluZ0RhdGEoZGF0YSkpIHsKICAgICAgICAgLy8gRklYTUU6IERlY2lkZSB3aGF0
IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwog
ICAgIH0KQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OnNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcHJwRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpICE9IFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IFJl
YWR5U3RhdGVPcGVuKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xNTQsNyArMTUyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6
c2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwcnBEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IAogICAgIGNvbnN0IGNoYXIqIGRhdGFQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEtPmRhdGEoKSk7CiAKLSAgICBpZiAoIW1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGVzY3Jp
cHRvcigpLCBkYXRhUG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKKyAgICBpZiAoIW1faGFuZGxlci0+
c2VuZFJhd0RhdGEoZGF0YVBvaW50ZXIsIGRhdGFMZW5ndGgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBEZWNpZGUgd2hhdCB0aGUgcmlnaHQgZXhjZXB0aW9uIGhlcmUgaXMuCiAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICB9CkBAIC0xNzcsMTkgKzE3NSwyMSBAQCB2b2lkIFJUQ0RhdGFDaGFu
bmVsOjpjbG9zZSgpCiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9oYW5kbGVyLT5jbG9zZURhdGFDaGFubmVsKGRlc2NyaXB0b3IoKSk7CisgICAgbV9oYW5kbGVy
LT5jbG9zZSgpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCgp
Cit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUgbmV3
U3RhdGUpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCkKKyAgICBpZiAobV9zdG9wcGVkIHx8IG1fcmVh
ZHlTdGF0ZSA9PSBSZWFkeVN0YXRlQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0
Y2ggKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuOgorICAgIG1fcmVhZHlTdGF0ZSA9IG5ld1N0YXRl
OworCisgICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIFJlYWR5U3RhdGVPcGVu
OgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgY2FzZSBSZWFk
eVN0YXRlQ2xvc2VkOgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CkBAIC0yMzAsMTEgKzIzMCw2IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OmVycm9yKCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLVJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvciogUlRDRGF0YUNoYW5uZWw6OmRlc2NyaXB0b3IoKQotewotICAgIHJldHVybiBtX2Rl
c2NyaXB0b3IuZ2V0KCk7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6
OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yUlRDRGF0YUNoYW5uZWw7CkBAIC0yNDgsOCArMjQzLDcgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogUlRDRGF0YUNoYW5uZWw6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
dm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiB7CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKLSAg
ICBtX2hhbmRsZXIgPSAwOwotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOworICAgIG1f
aGFuZGxlci0+c2V0Q2xpZW50KDApOwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaAppbmRleCBiZTkyY2JlNTI3MmFjYmI1Yzk3ZGI3ZmJiNTgzYzAzMWJmYjFmNTRk
Li41YWJjMGE4M2ZiNDEzMTZmOTZiMjJjMGFjMTczZWE1OWYyOWI3N2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0y
NywyOCArMjcsMjYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBCbG9iOworY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogCi1jbGFzcyBS
VENEYXRhQ2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50IHsKK2Ns
YXNzIFJUQ0RhdGFDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
Pik7CiAgICAgflJUQ0RhdGFDaGFubmVsKCk7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsK
LQogICAgIGJvb2wgcmVsaWFibGUoKSBjb25zdDsKLQogICAgIFN0cmluZyByZWFkeVN0YXRlKCkg
Y29uc3Q7Ci0KICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwpAQCAtNjYsNyArNjQsNiBAQCBwdWJsaWM6CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKIAotICAgIFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvciogZGVzY3JpcHRvcigpOwogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKQEAgLTc3LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRD
RGF0YUNoYW5uZWw+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENEYXRhQ2hhbm5lbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KTsKKyAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2
b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEYXRhQ2hhbm5lbD4qKTsKQEAg
LTkwLDI0ICs4NywyMyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKLSAgICAvLyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyCi0gICAgdmly
dHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgLy8gUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUo
UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBj
aGFyKiwgc2l6ZV90KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSBPVkVSUklE
RTsKIAorICAgIE93blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IG1faGFuZGxlcjsKKwogICAg
IGJvb2wgbV9zdG9wcGVkOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IG1f
ZGVzY3JpcHRvcjsKIAorICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIGVudW0gQmlu
YXJ5VHlwZSB7CiAgICAgICAgIEJpbmFyeVR5cGVCbG9iLAogICAgICAgICBCaW5hcnlUeXBlQXJy
YXlCdWZmZXIKICAgICB9OwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwogCi0gICAgLy8g
Tm90IG93bmVkIGJ5IHRoaXMgY2xhc3MuCi0gICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBt
X2hhbmRsZXI7Ci0KICAgICBUaW1lcjxSVENEYXRhQ2hhbm5lbD4gbV9zY2hlZHVsZWRFdmVudFRp
bWVyOwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9zY2hlZHVsZWRFdmVudHM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCA3NjIzOTAwN2I5MTk4MDUxZDQ4YjU3YjllMmRhMzk2YjZmYjIx
ZGExLi40NDk2NmNjNGUzY2Y1YzZjMzliMTg3YTMzYTA4MWZhMWIwYjBiZjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZl
bnQuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJSVENF
cnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAi
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgpAQCAtNTM5LDE0ICs1NDAsMTQgQEAgdm9pZCBS
VENQZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtRGVzY3IKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNl
LCBzdHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFk
ZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBj
aGFubmVsRGVzY3JpcHRvcikKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBoYW5kbGVyKQogewog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
IAogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNsb3NlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsID0gUlRDRGF0YUNoYW5u
ZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGVlckhhbmRsZXIuZ2V0KCks
IGNoYW5uZWxEZXNjcmlwdG9yKTsKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwg
PSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaGFuZGxl
cik7CiAgICAgbV9kYXRhQ2hhbm5lbHMuYXBwZW5kKGNoYW5uZWwpOwogCiAgICAgc2NoZWR1bGVE
aXNwYXRjaEV2ZW50KFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBjaGFubmVsLnJlbGVhc2UoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oCmluZGV4IGMzMWVkMWE1OWE1ZDdlMjU4MDA0OTA1OWVhMGRmZDEyZjkwYzFkZTMuLjFkZDA4
NTc3YjFlNzQxYzUyMmYxMDhjYWI3NmVmZTFkNThiYWZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTEx
NCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRl
KEljZVN0YXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
KSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBmNDU2MWJkNzNiNzUzOWQzM2Q0NjM3OWUzZmJlZWFjNDE2MmI2NjQ3Li45YWViM2FmYTc5
MTZiNDI1MzZkNWJhNjdkNTRhMjZhMGY5YzQzMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MzA1
LDggKzQzMDUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRv
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaCcsCkBAIC00MzE4LDYgKzQzMTgsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1ZvaWRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNo
cm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
bWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwJywKQEAgLTcxMjMs
NyArNzEyNSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0NvbmZpZ3VyYXRpb24uY3BwJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVsLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENJQ0VDYW5kaWRhdGUuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1Nlc3Npb25EZXNj
cmlwdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVs
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNjkxMmMxNTQ2ZThkYzUzODM5
NzE4ODYyNTBhMGQyNWM1OThhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJU
Q0RhdGFDaGFubmVsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+Ci0KLSNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBFeHRyYURhdGFDb250YWluZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpFeHRyYURhdGEgewotcHVibGljOgotICAgIEV4
dHJhRGF0YUNvbnRhaW5lcihXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhKiBleHRyYURhdGEp
IDogbV9leHRyYURhdGEoV1RGOjphZG9wdFB0cihleHRyYURhdGEpKSB7IH0KLQotICAgIFdlYlJU
Q0RhdGFDaGFubmVsOjpFeHRyYURhdGEqIGV4dHJhRGF0YSgpIHsgcmV0dXJuIG1fZXh0cmFEYXRh
LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPFdlYlJUQ0RhdGFDaGFubmVsOjpFeHRy
YURhdGE+IG1fZXh0cmFEYXRhOwotfTsKLQotV2ViUlRDRGF0YUNoYW5uZWw6OldlYlJUQ0RhdGFD
aGFubmVsKGNvbnN0IFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiYgZGF0YUNo
YW5uZWwpCi0gICAgOiBtX3ByaXZhdGUoZGF0YUNoYW5uZWwpCi17Ci19Ci0KLVdlYlJUQ0RhdGFD
aGFubmVsOjpXZWJSVENEYXRhQ2hhbm5lbChSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqIGRhdGFD
aGFubmVsKQotICAgIDogbV9wcml2YXRlKGRhdGFDaGFubmVsKQotewotfQotCi12b2lkIFdlYlJU
Q0RhdGFDaGFubmVsOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVs
aWFibGUpCi17Ci0gICAgbV9wcml2YXRlID0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVh
dGUobGFiZWwsIHJlbGlhYmxlKTsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6YXNzaWdu
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikKLXsKLSAgICBtX3ByaXZhdGUgPSBvdGhl
ci5tX3ByaXZhdGU7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OnJlc2V0KCkKLXsKLSAg
ICBtX3ByaXZhdGUucmVzZXQoKTsKLX0KLQotV2ViUlRDRGF0YUNoYW5uZWw6Om9wZXJhdG9yIFBh
c3NSZWZQdHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKLX0KLQotV2ViUlRDRGF0YUNoYW5uZWw6Om9wZXJh
dG9yIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciooKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpFeHRyYURhdGEq
IFdlYlJUQ0RhdGFDaGFubmVsOjpleHRyYURhdGEoKSBjb25zdAotewotICAgIFJlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OkV4dHJhRGF0YT4gZGF0YSA9IG1fcHJpdmF0ZS0+ZXh0cmFE
YXRhKCk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RXh0cmFEYXRhQ29udGFpbmVyKj4oZGF0YS5nZXQoKSktPmV4dHJhRGF0YSgpOwot
fQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpzZXRFeHRyYURhdGEoRXh0cmFEYXRhKiBleHRy
YURhdGEpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRFeHRyYURhdGEoYWRvcHRSZWYobmV3IEV4dHJh
RGF0YUNvbnRhaW5lcihleHRyYURhdGEpKSk7Ci19Ci0KLVdlYlN0cmluZyBXZWJSVENEYXRhQ2hh
bm5lbDo6bGFiZWwoKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIHJldHVy
biBtX3ByaXZhdGUtPmxhYmVsKCk7Ci19Ci0KLWJvb2wgV2ViUlRDRGF0YUNoYW5uZWw6OnJlbGlh
YmxlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5yZWxpYWJsZSgpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpzZXRCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBjb25zdAotewotICAgIEFTU0VS
VCghaXNOdWxsKCkpOwotICAgIG1fcHJpdmF0ZS0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRB
bW91bnQpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZChS
ZWFkeVN0YXRlIHN0YXRlKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1f
cHJpdmF0ZS0+cmVhZHlTdGF0ZUNoYW5nZWQoc3RhdGljX2Nhc3Q8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpSZWFkeVN0YXRlPihzdGF0ZSkpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVs
OjpkYXRhQXJyaXZlZChjb25zdCBXZWJTdHJpbmcmIGRhdGEpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFpc051bGwoKSk7Ci0gICAgbV9wcml2YXRlLT5kYXRhQXJyaXZlZChkYXRhKTsKLX0KLQotdm9p
ZCBXZWJSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc051bGwoKSk7Ci0gICAgbV9wcml2
YXRlLT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKLX0KLQotdm9pZCBXZWJSVENEYXRh
Q2hhbm5lbDo6ZXJyb3IoKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1f
cHJpdmF0ZS0+ZXJyb3IoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE1NmQ2NmM0NWExNjBjYzAxZGRmZWQ2NmUy
NWIxNzJkMGNlNGRjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGxhYmVsLCBy
ZWxpYWJsZSkpOwotfQotCi1SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotICAgIDogbV9j
bGllbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgLCBtX3JlbGlhYmxlKHJlbGlhYmxl
KQotICAgICwgbV9yZWFkeVN0YXRlKFJlYWR5U3RhdGVDb25uZWN0aW5nKQotICAgICwgbV9idWZm
ZXJlZEFtb3VudCgwKQotewotfQotCi1SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6On5SVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IoKQotewotfQotCi12b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQotewotICAgIEFTU0VS
VChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0
ZSAhPSByZWFkeVN0YXRlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7Ci0g
ICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZWFkeVN0YXRlQ2hh
bmdlZCgpOwotICAgIH0KLX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmRhdGFB
cnJpdmVkKGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9
IFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRhdGFBcnJpdmVkKGRhdGEpOwotfQotCi12b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6
ZGF0YUFycml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gICAg
QVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKLX0K
LQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKCkKLXsKLSAgICBBU1NFUlQo
bV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX2NsaWVudCkKLSAg
ICAgICAgbV9jbGllbnQtPmVycm9yKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWNiNGFjM2JjZTllNjVmNTFkODBkMjc3
OWZkMDJkYzI5ODk2MDNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JfaAotI2RlZmluZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3JfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFN0
cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNp
emVfdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpID0gMDsKLX07Ci0KLWNsYXNzIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcj4gewotcHVibGljOgotICAgIGNsYXNzIEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPEV4dHJhRGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFE
YXRhKCkgeyB9Ci0gICAgfTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIFJlYWR5
U3RhdGVDb25uZWN0aW5nID0gMCwKLSAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAotICAgICAg
ICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAot
ICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsKLSAgICB2aXJ0dWFs
IH5SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoKTsKLQotICAgIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lk
IHNldENsaWVudChSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFiZWw7IH0KLSAgICBib29sIHJlbGlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxp
YWJsZTsgfQotCi0gICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkeVN0YXRlOyB9Ci0KLSAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXJlZEFtb3VudDsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnQo
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgeyBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVy
ZWRBbW91bnQ7IH0KLQotICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSk7Ci0g
ICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRhdGFBcnJpdmVk
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgZXJyb3IoKTsKLQotICAgIFBhc3NSZWZQ
dHI8RXh0cmFEYXRhPiBleHRyYURhdGEoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhRGF0YTsgfQot
ICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsg
bV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KLQotcHJpdmF0ZToKLSAgICBSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7Ci0KLSAgICBS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX2xh
YmVsOwotICAgIGJvb2wgbV9yZWxpYWJsZTsKLSAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
LSAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7Ci0gICAgUmVmUHRyPEV4dHJhRGF0
YT4gbV9leHRyYURhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc2YWIyM2FiMDI2NDRlZDA3
NTk0ZmFhODEyNjkzMTE4ZmRiMjcyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKyNk
ZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRGF0YUNoYW5uZWxIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGxhYmVsKCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZWxpYWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEo
Y29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBj
aGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxODJmMjU1MmU1YmU1ZmIxNjMyODgxYzJkNDM1ZjEz
NTM3ODFiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVm
aW5lIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlT
dGF0ZUNvbm5lY3RpbmcgPSAwLAorICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAg
IFJlYWR5U3RhdGVDbG9zaW5nID0gMiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisg
ICAgfTsKKworICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXJyb3IoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IDg1MDlm
MmU5NDI3NTY4YmE2Mjc5OTgwZGEzNjBjNjFmMWE0NWM0NTMuLjM2YzdjYTA0ZmQyNjgzNTA0YTFk
ZmY5MDU3ZTE5ZmYyOTY2ODRkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApA
QCAtMzQsMTM2ICszNCwxNiBAQAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgiCiAKLSNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50OwogCi0vLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgYmVsb3cgZm9yIHBv
cnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0LgotCi1j
bGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSA6IHB1YmxpYyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIgewotcHVibGljOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
KFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotICAgIHZpcnR1YWwgflJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4p
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBhc3NSZWZQ
dHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24o
UGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IHJl
bW90ZURlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZUljZShQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBh
ZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVs
LgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0Rh
dGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4pIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1QYXNzT3duUHRyPFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teShjbGllbnQpKTsKLX0KLQotUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyRHVtbXk6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewot
ICAgIEFTU0VSVChtX2NsaWVudCk7Ci19Ci0KLVJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
Ojp+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoKQotewotfQotCi1ib29sIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpjcmVhdGVPZmZlcihQ
YXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KQotewotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
OjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Piwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJEdW1teTo6c2V0TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRS
ZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikKLXsK
LX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0UmVtb3RlRGVzY3Jp
cHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcj4pCi17Ci19Ci0KLVBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmxvY2FsRGVz
Y3JpcHRpb24oKQotewotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpyZW1v
dGVEZXNjcmlwdGlvbigpCitQYXNzT3duUHRyPFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50KikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJEdW1teTo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnJlbW92ZVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pCi17Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyRHVtbXk6OnVwZGF0ZUljZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6YWRkSWNlQ2FuZGlkYXRlKFBhc3NSZWZQ
dHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpnZXRTdGF0cyhQYXNzUmVmUHRy
PFJUQ1N0YXRzUmVxdWVzdD4pCi17Ci19Ci0KLXZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
RHVtbXk6OnN0b3AoKQotewotfQotCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
OjpvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJE
dW1teTo6c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
LCBjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KQotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6Y2xvc2VEYXRhQ2hh
bm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pCi17Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IGZiYTQ1ODg3ZTY3OTk2NTZmMjY2MzdlNGVmZGVh
NGU5NjU2NjAzMmQuLmQ4Zjk2ZDMwZjMxZTZkMTk1OTdlMzhmNTFmYjliOTg0NzA1NzI3ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFJUQ0NvbmZpZ3VyYXRp
b247Ci1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXI7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcjsKQEAgLTY5LDExICs2OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSA9IDA7CiAKLSAgICAvLyBSVENEYXRhQ2hhbm5lbC4KLSAgICB2aXJ0dWFsIGJvb2wg
b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcj4sIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFy
Kiwgc2l6ZV90KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSA9IDA7CisgICAgLy8gUlRDRGF0YUNoYW5u
ZWwKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVE
YXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSA9IDA7CiAKIHBy
b3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKaW5kZXggYTY3YTRiOGUwZWIzYmFhMjk3MjBiMDJl
OTRhMDE2OWQxYzI5MTg4ZC4uYmRiOGU2MjhlYTljOTQ1Zjk3ZGEwOGJjZGM3Nzg2ZmZmYTQxMzQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKQEAgLTM4LDcgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OwotY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOworY2xhc3MgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOwogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKIAogY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKQEAgLTg2LDkgKzg2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0
cmVhbURlc2NyaXB0b3IqKSA9IDA7Ci0KLSAgICAvLyBSVENEYXRhQ2hhbm5lbC4KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3I+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFu
bmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPikgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MjIyYmQ3MzBiNzhmYzg2MTA0MjBiMzFl
N2JlYjkyZTRiMjUyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjcmVh
dGUoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIHdlYkhhbmRsZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bSh3ZWJIYW5k
bGVyKSk7Cit9CisKK1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDaHJvbWl1bShXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFu
ZGxlcikKKyAgICA6IG1fd2ViSGFuZGxlcihhZG9wdFB0cih3ZWJIYW5kbGVyKSkKKyAgICAsIG1f
Y2xpZW50KDApCit7Cit9CisKK1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjp+UlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0oKQoreworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNocm9taXVtOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV93ZWJIYW5kbGVyLT5zZXRDbGll
bnQobV9jbGllbnQgPyB0aGlzIDogMCk7Cit9CisKK1N0cmluZyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDaHJvbWl1bTo6bGFiZWwoKQoreworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPmxhYmVsKCk7
Cit9CisKK2Jvb2wgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnJlbGlhYmxlKCkKK3sK
KyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5yZWxpYWJsZSgpOworfQorCit1bnNpZ25lZCBsb25n
IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpidWZmZXJlZEFtb3VudCgpCit7CisgICAg
cmV0dXJuIG1fd2ViSGFuZGxlci0+YnVmZmVyZWRBbW91bnQoKTsKK30KKworYm9vbCBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiBkYXRh
KQoreworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNlbmRTdHJpbmdEYXRhKGRhdGEpOworfQor
Citib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5zZW5k
UmF3RGF0YShkYXRhLCBzaXplKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bTo6Y2xvc2UoKQoreworICAgIG1fd2ViSGFuZGxlci0+Y2xvc2UoKTsKK30KKwordm9pZCBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpIGNvbnN0Cit7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShzdGF0
aWNfY2FzdDxSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGU+KHN0YXRlKSk7
Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmRhdGFBcnJpdmVkKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRhKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPmRhdGFBcnJpdmVkKGRhdGEpOworfQorCit2b2lkIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNocm9taXVtOjpkYXRhQXJyaXZlZChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5k
YXRhQXJyaXZlZChkYXRhLCBzaXplKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
aHJvbWl1bTo6ZXJyb3IoKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmVycm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmM2MDA4ZTBlZjJkOTE4ZTJhNjVlOTc2
OWQ3MjRkYjVlNGM4NzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaApA
QCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNocm9taXVtX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW1faAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDaHJvbWl1bSA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDaHJvbWl1bSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU3RyaW5nIGxhYmVsKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJlbGlhYmxlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKworICAgIC8vIFdlYktpdDo6V2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bShX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciopOworCisgICAgT3duUHRyPFdlYktpdDo6
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBtX3dlYkhhbmRsZXI7CisgICAgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKaW5kZXggZjQ5MGUzNDgwYjVlMzdhMzg4MGRh
NzBlOTk1M2Q3ZjhlZDA4MTAzMS4uNTdmYTBmZGU2YTk1ZmVkNjM5NzBiNGIzMzAwMjdlMzliYmFk
ZTBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcApAQCAtMzYsNyArMzYsOCBAQAogCiAjaW5jbHVkZSAiTWVkaWFDb25z
dHJhaW50cy5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKLSNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
aHJvbWl1bS5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yLmgiCkBAIC00Nyw3ICs0OCw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlh
Q29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRpb24uaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0lDRUNhbmRpZGF0ZS5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5oPgpAQCAtMTQ4LDI0ICsxNDks
MTMgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Z2V0U3RhdHMoUGFz
c1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+IHJlcXUKICAgICBtX3dlYkhhbmRsZXItPmdldFN0YXRz
KHJlcXVlc3QpOwogfQogCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpv
cGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFD
aGFubmVsKQorUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNocm9taXVtOjpjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVs
LCBib29sIHJlbGlhYmxlKQogewotICAgIHJldHVybiBtX3dlYkhhbmRsZXItPm9wZW5EYXRhQ2hh
bm5lbChkYXRhQ2hhbm5lbCk7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
PiBkYXRhQ2hhbm5lbCwgY29uc3QgU3RyaW5nJiBkYXRhKQotewotICAgIHJldHVybiBtX3dlYkhh
bmRsZXItPnNlbmRTdHJpbmdEYXRhKGRhdGFDaGFubmVsLCBkYXRhKTsKLX0KLQotYm9vbCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCkKLXsKLSAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5zZW5kUmF3RGF0YShk
YXRhQ2hhbm5lbCwgZGF0YSwgZGF0YUxlbmd0aCk7Ci19CisgICAgV2ViS2l0OjpXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIqIHdlYkhhbmRsZXIgPSBtX3dlYkhhbmRsZXItPmNyZWF0ZURhdGFDaGFu
bmVsKGxhYmVsLCByZWxpYWJsZSk7CisgICAgaWYgKCF3ZWJIYW5kbGVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Y2xv
c2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNo
YW5uZWwpCi17Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+Y2xvc2VEYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCk7CisgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjcmVh
dGUod2ViSGFuZGxlcik7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21p
dW06OnN0b3AoKQpAQCAtMjA4LDkgKzE5OCwxMCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZQog
ICAgIG1fY2xpZW50LT5kaWRSZW1vdmVSZW1vdGVTdHJlYW0od2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNo
YW5uZWwpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpkaWRBZGRSZW1v
dGVEYXRhQ2hhbm5lbChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxl
cikKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwp
OworICAgIEFTU0VSVCh3ZWJIYW5kbGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0
YUNoYW5uZWwoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVy
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCmluZGV4IGI1MmI3YjE2YmYzMDY1
ODFkMzc0YzcyYTU2ZWZmMjQ3MzFhMGIwZTUuLmQ1OWNlZDMzYTYzODliNjk0MDhjNzBlYWFhMzNi
MWNhOTJiN2ZlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW0uaApAQCAtNDIsMTIgKzQyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwotY2xhc3MgV2ViUlRDRGF0YUNo
YW5uZWw7CiBjbGFzcyBXZWJSVENJQ0VDYW5kaWRhdGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyOworCiBjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bSA6IHB1YmxpYyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIsIHB1
YmxpYyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0oUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7CkBAIC02OCwxMyArNjksOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBib29sIG9wZW5EYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShQYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgT1ZF
UlJJREU7Ci0KICAgICAvLyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRpb25OZWVkZWQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJhdGVJQ0VDYW5kaWRhdGUoY29uc3Qg
V2ViS2l0OjpXZWJSVENJQ0VDYW5kaWRhdGUmKSBPVkVSUklERTsKQEAgLTgzLDcgKzgwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJQ0VTdGF0ZShXZWJLaXQ6OldlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFU3RhdGUpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3Rl
U3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6
V2ViUlRDRGF0YUNoYW5uZWwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVt
b3RlRGF0YUNoYW5uZWwoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqKSBPVkVSUklE
RTsKIAogICAgIHN0YXRpYyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogdG9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51
bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAKaW5kZXggMjNkNjZiZDFjZGFlOTE4YjkzNjU4OTU5ZmFhOWFlMWVlMzZkMzkzYS4uZmJhNDky
ZmQ0NDJjNjdiYWFlZTFlOTEwMjYyYjczMTM1OWI4NmZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKQEAgLTExOCw4ICsxMTgsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hh
bm5lbC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3Jv
bGxiYXIuaD4KQEAgLTU4NiwxMCArNTg1LDEwIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZU5ldywgUlRDCiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudDo6SUNFU3RhdGVHYXRoZXJpbmcsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6
SWNlU3RhdGVHYXRoZXJpbmcpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRVN0YXRlV2FpdGluZywgUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50OjpJY2VTdGF0ZVdhaXRpbmcpOwogCi1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlQ29ubmVjdGluZywgUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ29ubmVjdGluZyk7Ci1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlT3BlbiwgUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3Blbik7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlQ2xvc2luZywgUlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ2xvc2luZyk7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlQ2xvc2VkLCBSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVDb25u
ZWN0aW5nLCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVDb25uZWN0aW5n
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50OjpSZWFkeVN0YXRlT3BlbiwgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFk
eVN0YXRlT3Blbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NpbmcsIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVDbG9zZWQsIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NlZCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODk5ZmQ4MTBjYWMyYmY2ZDVhMjI3MDI1MmY1NzQ3NmI4YzU1
NzQ3YS4uNWZhMWZiOGRlM2Y1MWU4MjQ0ZjRhMzZkYTIzNmIzMzU1NDJjMTdjNCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBA
CisyMDEyLTEyLTEwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisg
ICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hhbmdlIHRoZSBkYXRhIGNoYW5uZWwgZGVzY3JpcHRv
ciBwYXR0ZXJuIHRvIGEgaGFuZGxlciBwYXR0ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgbW9ja3MgdG8gYmUgYWJsZSB0byB0ZXN0IHRo
aXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKERhdGFDaGFubmVsUmVhZHlTdGF0
ZVRhc2spOgorICAgICAgICAoRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzazo6RGF0YUNoYW5uZWxS
ZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpN
b2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kU3RyaW5nRGF0YSk6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZW5kUmF3RGF0YSk6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpjbG9zZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6dGFz
a0xpc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0
YXRlVGFzazo6UlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChSZW1v
dGVEYXRhQ2hhbm5lbFRhc2s6OlJlbW90ZURhdGFDaGFubmVsVGFzayk6CisgICAgICAgIChNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAg
IChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6Cisg
ICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKwogMjAxMi0xMi0wOSAg
Sm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gYWNj
ZXNzaWJpbGl0eS9wbGFjZWhvbGRlci5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGQzNzJmYWNmY2MyMTE2MDgwZWRiN2ZiYzdmNDAz
MDc5YmU2MTAyNmQuLmQ2MzM5ZGExOGQ3Y2M2NzBhNzAwMjlkYzA1ZGRmOTZiYzgyZTdlOGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMjQsNiArMjQsOCBA
QAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIu
Y3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hSZWNvZ25pemVyLmNwcCcs
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNDVlMmYyYzM3MGM5MDE3
NzllOTAxNzEwYWM1MzhkOGFkM2Y5YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtMCww
ICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCIKKworI2luY2x1ZGUgIlRhc2suaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lcjsKKworY2xhc3MgRGF0YUNo
YW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNr
KE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIG9iamVjdCwgV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50KiBkYXRhQ2hhbm5lbENsaWVudCwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fZGF0YUNoYW5uZWxD
bGllbnQoZGF0YUNoYW5uZWxDbGllbnQpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsK
KyAgICAgICAgbV9kYXRhQ2hhbm5lbENsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShtX3N0YXRl
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
KiBtX2RhdGFDaGFubmVsQ2xpZW50OworICAgIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dDo6UmVhZHlTdGF0ZSBtX3N0YXRlOworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK01v
Y2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIo
V2ViU3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlKQorICAgIDogbV9jbGllbnQoMCkKKyAgICAs
IG1fbGFiZWwobGFiZWwpCisgICAgLCBtX3JlbGlhYmxlKHJlbGlhYmxlKQoreworfQorCit2b2lk
IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVU
YXNrKHRoaXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5
U3RhdGVPcGVuKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6YnVmZmVyZWRBbW91bnQoKQoreworICAgIHJldHVybiAwOworfQorCitib29sIE1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYlN0cmluZyYg
ZGF0YSkKK3sKKyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kYXRhQXJyaXZl
ZChkYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNb2NrV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sK
KyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIG1fY2xpZW50LT5kYXRhQXJyaXZlZChkYXRhLCBz
aXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpjbG9zZSgpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50KTsKKyAgICBwb3N0VGFzayhu
ZXcgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwgV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2VkKSk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
ODQ4MzQ0YTdjOGU5ODRhZjgxNGEzYjVmYmI1MzFiMzkxZGEwN2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyX2gKKyNkZWZpbmUgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cl9oCisKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKworY2xhc3Mg
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cihXZWJLaXQ6OldlYlN0cmluZyBsYWJlbCwgYm9vbCByZWxpYWJsZSk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q2xpZW50KFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Kikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBsYWJlbCgpIE9WRVJSSURF
IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVsaWFibGUoKSBPVkVSUklE
RSB7IHJldHVybiBtX3JlbGlhYmxlOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRS
YXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlz
dDsgfQorCitwcml2YXRlOgorICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKTsKKwor
ICAgIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhYmVsOworICAgIGJvb2wgbV9yZWxpYWJsZTsKKyAgICBX
ZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworfTsKKworI2VuZGlmIC8vIE1v
Y2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcAppbmRleCBjZmQ3NmRlNzRhY2Y3ZmI1OWMyZDU5M2ZjOWVjOWE3MDFjNGMzZTI5Li5iYmVj
MjViZDE2Yjk2NzBjNDFkNTZhN2QxYTA2ZWNlZDQ2MDcwYzU2IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgor
I2luY2x1ZGUgIk1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJUYXNr
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaD4KQEAgLTEyOCw4NCArMTI5LDQxIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3N1Y2NlZWRlZDsKIH07CiAKLWNsYXNzIFN0cmluZ0RhdGFUYXNr
IDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4g
ewotcHVibGljOgotICAgIFN0cmluZ0RhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCi0gICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCkKLSAgICAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hh
bm5lbC5kYXRhQXJyaXZlZChtX2RhdGEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENE
YXRhQ2hhbm5lbCBtX2RhdGFDaGFubmVsOwotICAgIFdlYlN0cmluZyBtX2RhdGE7Ci19OwotCi1j
bGFzcyBDaGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5u
ZWwmIGRhdGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0
KQotICAgICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCi0gICAgICAgICwgbV9sZW5n
dGgobGVuZ3RoKQotICAgIHsKLSAgICAgICAgbV9kYXRhID0gbmV3IGNoYXJbbV9sZW5ndGhdOwot
ICAgICAgICBtZW1jcHkobV9kYXRhLCBkYXRhLCBtX2xlbmd0aCk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hh
bm5lbC5kYXRhQXJyaXZlZChtX2RhdGEsIG1fbGVuZ3RoKTsKLSAgICAgICAgZGVsZXRlIFtdIG1f
ZGF0YTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDRGF0YUNoYW5uZWwgbV9kYXRhQ2hh
bm5lbDsKLSAgICBjaGFyKiBtX2RhdGE7Ci0gICAgc2l6ZV90IG1fbGVuZ3RoOwotfTsKLQotY2xh
c3MgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVh
ZHlTdGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPiB7CiBwdWJsaWM6Ci0gICAgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayhNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFu
bmVsJiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgc3RhdGUpCisg
ICAgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xp
ZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUp
CiAgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PihvYmplY3QpCi0gICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKKyAgICAgICAg
LCBtX2NsaWVudChjbGllbnQpCiAgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAgICB7CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAgIHsKLSAgICAg
ICAgbV9kYXRhQ2hhbm5lbC5yZWFkeVN0YXRlQ2hhbmdlZChtX3N0YXRlKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUobV9zdGF0ZSk7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIFdlYlJUQ0RhdGFDaGFubmVsIG1fZGF0YUNoYW5uZWw7Ci0gICAgV2ViUlRDRGF0YUNoYW5u
ZWw6OlJlYWR5U3RhdGUgbV9zdGF0ZTsKKyAgICBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqIG1fY2xpZW50OworICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6
UmVhZHlTdGF0ZSBtX3N0YXRlOwogfTsKIAotY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0
YXRlVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI+IHsKK2NsYXNzIFJlbW90ZURhdGFDaGFubmVsVGFzayA6IHB1YmxpYyBXZWJNZXRob2RU
YXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBSVENQ
ZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIqIG9iamVjdCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBS
ZW1vdGVEYXRhQ2hhbm5lbFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2Jq
ZWN0LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKICAgICAgICAg
OiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkK
ICAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAg
ICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAg
IHsKLSAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUobV9zdGF0ZSk7CisgICAg
ICAgIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogcmVtb3RlRGF0YUNoYW5uZWwgPSBuZXcgTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgdHJ1ZSk7
CisgICAgICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChyZW1vdGVEYXRhQ2hh
bm5lbCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogbV9jbGllbnQ7Ci0gICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
OjpSZWFkeVN0YXRlIG1fc3RhdGU7CiB9OwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTMy
Nyw0NiArMjg1LDE2IEBAIHZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Z2V0
U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0JiByZXF1ZXN0CiAgICAgcG9zdFRhc2sobmV3
IFJUQ1N0YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sodGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpKTsK
IH0KIAotdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKK1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlciogTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3Jl
YXRlRGF0YUNoYW5uZWwoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKIHsK
LSAgICBtX3N0b3BwZWQgPSB0cnVlOwotfQotCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6Om9wZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNo
YW5uZWwpCi17Ci0gICAgaWYgKG1fc3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgV2ViUlRDRGF0YUNoYW5uZWwgcmVtb3RlRGF0YUNoYW5uZWw7Ci0gICAgcmVtb3RlRGF0YUNo
YW5uZWwuaW5pdGlhbGl6ZSgiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgZGF0YUNoYW5uZWwucmVs
aWFibGUoKSk7Ci0gICAgcmVtb3RlRGF0YUNoYW5uZWwucmVhZHlTdGF0ZUNoYW5nZWQoV2ViUlRD
RGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVPcGVuKTsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3Rl
RGF0YUNoYW5uZWwocmVtb3RlRGF0YUNoYW5uZWwpOworICAgIHBvc3RUYXNrKG5ldyBSZW1vdGVE
YXRhQ2hhbm5lbFRhc2sodGhpcywgbV9jbGllbnQpKTsKIAotICAgIHBvc3RUYXNrKG5ldyBEYXRh
Q2hhbm5lbFJlYWR5U3RhdGVUYXNrKHRoaXMsIGRhdGFDaGFubmVsLCBXZWJSVENEYXRhQ2hhbm5l
bDo6UmVhZHlTdGF0ZU9wZW4pKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0Rh
dGFDaGFubmVsJiBkYXRhQ2hhbm5lbCkKLXsKLSAgICBwb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxS
ZWFkeVN0YXRlVGFzayh0aGlzLCBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGVDbG9zZWQpKTsKKyAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIobGFiZWwsIHJlbGlhYmxlKTsKIH0KIAotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5u
ZWwsIGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKLXsKLSAgICBpZiAobV9zdG9wcGVkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkYXRhQ2hhbm5lbC5kYXRhQXJyaXZlZChkYXRhKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
OjpzZW5kUmF3RGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OnN0b3AoKQogewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGRhdGFDaGFubmVsLmRhdGFBcnJpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggYTE1MjJm
NGZiZTZmZTNiNWZhNDQyMmQ1ZWQ3MDk4ZjBiMzI4YWMwNS4uOWQwZWQ3OTZkMWUzOTNiNjUxNmFl
NGIzNDA4NDZjYTA4MTE2MjQ5MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAt
MzQsNyArMzQsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJXZWJU
YXNrLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uUmVxdWVzdC5oPgpAQCAtNjEsMTMgKzYwLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBhZGRTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3ImLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKGNvbnN0IFdlYktp
dDo6V2ViUlRDU3RhdHNSZXF1ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciogY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChj
b25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWwmLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3
RGF0YShjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgY2hhciosIHNpemVf
dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoY29uc3QgV2Vi
S2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURFOwotCiAgICAgLy8gV2ViVGFzayByZWxh
dGVkIG1ldGhvZHMKICAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7
IHJldHVybiAmbV90YXNrTGlzdDsgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWVjYzdkODlkNWQwNTAwOTE4NTlkOTFk
ODcxMjQxNWFhNjFlNTI2Mi4uOTBmNTc4NmEzYTI4MzE2YTViMTE3YTY5ZGYyNWM1MGJjYTNiZGI2
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTEwICBUb21teSBXaWRlbmZseWNodCAg
PHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hhbmdlIHRo
ZSBkYXRhIGNoYW5uZWwgZGVzY3JpcHRvciBwYXR0ZXJuIHRvIGEgaGFuZGxlciBwYXR0ZXJuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ1NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRpbmcg
ZGF0YSBjaGFubmVscyB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbDoKKwogMjAxMi0xMi0w
OSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBb
UXRdIEdhcmRlbmluZyBhZnRlciByMTM3MDA2LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFu
bmVsLWV4cGVjdGVkLnR4dAppbmRleCA3NTk4OTRlMGFmZmJlNzNhZmVlNTUwNzNhY2Q0NmU1ODNj
MTU4ODBmLi4zYWFmYzZmMTU2YjM0MTQ2NjMwMTYwY2QxNTE4NDM0NDIwZmEyMjM0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFj
aGFubmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywxOCBA
QCBUZXN0cyBSVENEYXRhQ2hhbm5lbC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQ
QVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMSIpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgZGMucmVsaWFibGUgaXMgdHJ1ZQorUEFTUyBkYyA9IHBjLmNyZWF0ZURh
dGFDaGFubmVsKCJsYWJlbDIiLCB7fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBk
Yy5yZWxpYWJsZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVs
MyIsIHtyZWxpYWJsZTp0cnVlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBkYy5y
ZWxpYWJsZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIs
IHtyZWxpYWJsZTpmYWxzZX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgZGMucmVs
aWFibGUgaXMgZmFsc2UKIFBBU1MgcGNfb25vcGVuIHdhcyBjYWxsZWQKK1BBU1MgZGMgPSBwYy5j
cmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwiKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IGRjLnJlYWR5U3RhdGUgaXMgJ2Nvbm5lY3RpbmcnCiBQQVNTIHBjX29uZGF0YWNoYW5uZWwgd2Fz
IGNhbGxlZAotUEFTUyBldmVudC5jaGFubmVsLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNTIGRj
X29ub3BlbiB3YXMgY2FsbGVkCiBQQVNTIGRjLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNTIGRj
LmxhYmVsIGlzICdsYWJlbCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbAppbmRleCA0Mzc5
YTU5OWQ0YTA3MjgyNjdkNzQ5ODViYjQ5MjJkNzhiYjc4Y2Q1Li4yNDM1Y2NlYmJiZDUwYTVhZDNl
YTY1MTNiMDljMzc5MjBhNWViZWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sCkBA
IC03MCwyNSArNzAsMjMgQEAgZnVuY3Rpb24gZGNfb25vcGVuKCkgewogCiBmdW5jdGlvbiBwY19v
bmRhdGFjaGFubmVsKGUpIHsKICAgICB0ZXN0UGFzc2VkKCJwY19vbmRhdGFjaGFubmVsIHdhcyBj
YWxsZWQiKTsKLSAgICBldmVudCA9IGU7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmNoYW5uZWwucmVh
ZHlTdGF0ZSIsICInb3BlbiciKTsKIH0KIAogZnVuY3Rpb24gcGNfb25vcGVuKCkgewogICAgIHRl
c3RQYXNzZWQoInBjX29ub3BlbiB3YXMgY2FsbGVkIik7Ci0gICAgZGMgPSBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgibGFiZWwiKTsKKyAgICBzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgibGFiZWwiKTsnKTsKICAgICBzaG91bGRCZSgiZGMucmVhZHlTdGF0ZSIsICInY29u
bmVjdGluZyciKTsKICAgICBkYy5vbm9wZW4gPSBkY19vbm9wZW47CiB9CiAKIHBjID0gbmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOwotZGMgPSBwYy5jcmVhdGVEYXRhQ2hh
bm5lbCgibGFiZWwxIik7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5l
bCgibGFiZWwxIik7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAidHJ1ZSIpOwotZGMgPSBw
Yy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwyIiwge30pOworc2hvdWxkTm90VGhyb3coJ2RjID0g
cGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMiIsIHt9KTsnKTsKIHNob3VsZEJlKCJkYy5yZWxp
YWJsZSIsICJ0cnVlIik7Ci1kYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7cmVs
aWFibGU6dHJ1ZX0pOworc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwo
ImxhYmVsMyIsIHtyZWxpYWJsZTp0cnVlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAi
dHJ1ZSIpOwotZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlhYmxlOmZh
bHNlfSk7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwz
Iiwge3JlbGlhYmxlOmZhbHNlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAiZmFsc2Ui
KTsKIAogcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178534</attachid>
            <date>2012-12-10 06:29:48 -0800</date>
            <delta_ts>2012-12-11 02:19:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104543-20121210152709.patch</filename>
            <type>text/plain</type>
            <size>93576</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4NDk4YjNhNzhiZjUw
OWQxMzk5YjUxNGE3OGUwMDk1MGUzYWViNjNiLi5hMTk0NTBiNmUwOWI2MzA3ZTI1ZDlmMWY0MjUx
NjI5ZTAwM2UxNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMi0xMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBh
IGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMgcmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRs
ZXIvQ2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZp
eCBsaWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBw
b3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6fldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQ6On5XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0
YUNoYW5uZWwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwp
OgorCiAyMDEyLTEyLTA4ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5rIHJlbD1wcmVyZW5kZXI+IGVsZW1lbnRz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGZmMjIzMmMyYWEwMmFlNTdmMzQwYTczY2M4ZGYyNGUwM2Y2YWFmNjEu
LmNiZDY5MzgwZGU5MjBmZjQ0ZWNiODQwNzM5ZTYyMzFmMzA2MTA2MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4MSBAQAorMjAxMi0xMi0xMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFu
bmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMg
cmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRsZXIvQ2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAgIGluc3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0
dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZpeCBsaWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1
cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBwb3J0LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Rz
IGNvdmVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6On5SVENEYXRhQ2hhbm5lbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OnJlbGlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpidWZm
ZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6c2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNo
YW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNoYW5u
ZWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsSGFuZGxlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6flJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudDo6flJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjp+UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06
OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OnJlbGlhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkQ2hhbmdlUmVhZHlTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGF0
YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21p
dW06OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bTo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtKToKKwogMjAxMi0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gYWNjZXNzaWJpbGl0eS9wbGFjZWhvbGRlci5odG1s
IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGJjYzI0ZTAzZGZhM2Q4
NjUwMDJhZGI1YWNmNmEyMWZlYzk0ZjA2ZS4uMjAyNTQxOTVjYmNjZWQ4ZThhMGNlYWZmYzRiNGI4
YjBlMjhkMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0xMi0xMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3Ig
cGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisKIDIw
MTItMTItMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzcxMDMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CmluZGV4IGI5NzRkMzgwM2JhOWQ2Yzk2OTFmYWMwNGJlNDY0ZDI3ZmQyOTJkOWUuLjQ5NzdkOWZl
NGJjOWViNmJiZWQ3MWU2NTZkOTkxNjNlODUwN2FiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBA
IC0xMDEsNyArMTAxLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0
ZU93blB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0ci5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENJQ0VDYW5kaWRhdGUuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENEYXRhQ2hhbm5lbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGVm
YmRiYzlmOWY0YTI3MDViY2NkM2M1ODQ3NDBlYmRlMzVkMTc3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDRGF0YUNoYW5uZWxfaAotI2RlZmluZSBXZWJSVENE
YXRhQ2hhbm5lbF9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsIHsKLXB1YmxpYzoKLSAgICBjbGFzcyBFeHRyYURh
dGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9Ci0gICAg
fTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5n
ID0gMCwKLSAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAotICAgICAgICBSZWFkeVN0YXRlQ2xv
c2luZyA9IDIsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAotICAgIH07Ci0KLSAgICBX
ZWJSVENEYXRhQ2hhbm5lbCgpIHsgfQotICAgIFdlYlJUQ0RhdGFDaGFubmVsKGNvbnN0IFdlYlJU
Q0RhdGFDaGFubmVsJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYlJUQ0RhdGFD
aGFubmVsKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5lbCYgb3BlcmF0b3I9
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihv
dGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsK
LQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwm
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZWxpYWJs
ZSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVu
c2lnbmVkIGxvbmcpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlZChSZWFkeVN0YXRlKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGF0YUFycml2
ZWQoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRhdGFB
cnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBlcnJvcigpIGNvbnN0OwotCi0gICAgLy8gRXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhp
cyBXZWJSVENEYXRhQ2hhbm5lbC4KLSAgICAvLyBJZiBub24tbnVsbCwgdGhlIGV4dHJhIGRhdGEg
cG9pbnRlciB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4KLSAg
ICAvLyBTZXR0aW5nIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBjYXVzZSBhbnkgZXhpc3Rp
bmcgbm9uLW51bGwKLSAgICAvLyBleHRyYSBkYXRhIHBvaW50ZXIgdG8gYmUgZGVsZXRlZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgIFdlYlJUQ0RhdGFDaGFubmVsKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+Jik7Ci0gICAgV2ViUlRDRGF0YUNoYW5u
ZWwoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKik7Ci0gICAgb3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4oKSBjb25zdDsK
LSAgICBvcGVyYXRvciBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqKCkgY29uc3Q7
Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcj4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJSVENEYXRhQ2hhbm5lbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZDEyZGUzZDc5NjkzMzMzNDY1YzhmNDJlZjkwNzU4OGRkZjMyZWRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigp
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBsYWJlbCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVsaWFibGUoKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGJ1ZmZlcmVkQW1vdW50KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShj
b25zdCBXZWJTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmJhOWM3
OTM3OTRjMmU4ZThjZjUwOTZkODk4N2IxMWYwMmFjNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIGVudW0gUmVh
ZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5nID0gMCwKKyAgICAgICAgUmVh
ZHlTdGF0ZU9wZW4gPSAxLAorICAgICAgICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCisgICAgICAg
IFJlYWR5U3RhdGVDbG9zZWQgPSAzLAorICAgIH07CisKKyAgICB2aXJ0dWFsIH5XZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VS
ZWFkeVN0YXRlKFJlYWR5U3RhdGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YUFy
cml2ZWQoY29uc3QgV2ViU3RyaW5nJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRh
QXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGVycm9yKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgKaW5kZXggMzE3MDIxNDEyNDMwYjMzMWJhMzI1OTUwY2UyNDA1ODdiYzIzZGY4Yi4uMjdk
MGVlNjcwMTgzYWUwMmVjYWI1ZjQ4ZTMxY2EyNmZlNzg3YjFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
TWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIGNsYXNz
IFdlYlJUQ0NvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbDsKK2NsYXNzIFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNz
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFdlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjsKQEAgLTYyLDEzICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKICAgICAv
LyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBjbGllbnRzIGhhdmUg
Y2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1
ZXN0JikgeyB9CisgICAgdmlydHVhbCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURh
dGFDaGFubmVsKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFu
bmVsCi0gICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hh
bm5lbCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRh
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgV2ViU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgV2ViUlRDRGF0YUNoYW5u
ZWwmLCBjb25zdCBjaGFyKiwgc2l6ZV90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dC5oCmluZGV4IGNkMDZjMGU4NzlkMDliNzQ5ZDJlMjY1NjgzNDg0YjRjMDQ5MTkzMjMuLjU0YWMz
NzZjNDM2Zjc0ZmNmMjliYzJlYzcyYmM4MGM2ZGE1Nzc2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIFdlYlJUQ0RhdGFDaGFu
bmVsOworY2xhc3MgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2Fu
ZGlkYXRlOwogCiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewpAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlDRVN0YXRl
KElDRVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25z
dCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFD
aGFubmVsJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciopIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE4OGYzMTE0NTAzZjYxYzE2Mzc0NzQyZGRhODhjZWE5
MjMzMjYyYjIuLjYwZWM3ZmY0YmFmNjAzZDJiNWEzYTViZjc0Y2NmNjkzZjE4ZmU0YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xOTk2LDcgKzE5OTYsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKLSAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDFkNDJlYTMwMDAxMTM2MzZiNDYxOWNkMjAyOGQyMzgzMGY3YWVl
MzEuLmIyZDZmN2RkYmZmODhmMTU5MTcxMzRkYTM3Y2NhYjk4YzlkOTc4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTY2OCw5ICs1NjY4LDkgQEAgd2ViY29yZV9wbGF0Zm9y
bV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmNwcCBcCisgICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIFwKKyAgICAgICAgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggXAorICAgICAgICBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlw
dG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4
IDA3ZTI5MmVhMDVjYTAwYWQ1ZWE5M2NjYjIxOTZjOGQ1OWUzMGUyYmUuLjUxNmQzMTc0OTQwMjdk
NzgzZjMxMzQyYTU3YmM0NjNmOGEzZGQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgpAQCAtMzksNjAg
KzQwLDU3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgQVNTRVJUKGhhbmRsZXIpOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gZGF0YUNo
YW5uZWwgPSBjcmVhdGUoY29udGV4dCwgaGFuZGxlciwgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpjcmVhdGUobGFiZWwsIHJlbGlhYmxlKSk7Ci0gICAgaWYgKCFoYW5kbGVyLT5vcGVuRGF0YUNo
YW5uZWwoZGF0YUNoYW5uZWwtPmRlc2NyaXB0b3IoKSkpIHsKKyAgICBPd25QdHI8UlRDRGF0YUNo
YW5uZWxIYW5kbGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEYXRh
Q2hhbm5lbChsYWJlbCwgcmVsaWFibGUpOworICAgIGlmICghaGFuZGxlcikgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0
dXJuIGRhdGFDaGFubmVsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0Rh
dGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIucmVsZWFzZSgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGVzY3JpcHRvcikKK1Bhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKGhhbmRsZXIpOwotICAgIEFTU0VSVChkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIsIGRlc2NyaXB0
b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhh
bmRsZXIpKTsKIH0KIAotUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCitSVENEYXRh
Q2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiAgICAgOiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAg
ICwgbV9zdG9wcGVkKGZhbHNlKQotICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAg
LCBtX3JlYWR5U3RhdGUoUmVhZHlTdGF0ZUNvbm5lY3RpbmcpCiAgICAgLCBtX2JpbmFyeVR5cGUo
QmluYXJ5VHlwZUFycmF5QnVmZmVyKQotICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBt
X3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJlJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CisgICAg
bV9oYW5kbGVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsOjp+UlRDRGF0
YUNoYW5uZWwoKQogewotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOwogfQogCiBTdHJp
bmcgUlRDRGF0YUNoYW5uZWw6OmxhYmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT5sYWJlbCgpOworICAgIHJldHVybiBtX2hhbmRsZXItPmxhYmVsKCk7CiB9CiAKIGJvb2wg
UlRDRGF0YUNoYW5uZWw6OnJlbGlhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT5yZWxpYWJsZSgpOworICAgIHJldHVybiBtX2hhbmRsZXItPnJlbGlhYmxlKCk7CiB9CiAK
IFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNo
IChtX2Rlc2NyaXB0b3ItPnJlYWR5U3RhdGUoKSkgewotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ29ubmVjdGluZzoKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0
ZSkgeworICAgIGNhc2UgUmVhZHlTdGF0ZUNvbm5lY3Rpbmc6CiAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImNvbm5lY3RpbmciKTsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjo6UmVhZHlTdGF0ZU9wZW46CisgICAgY2FzZSBSZWFkeVN0YXRlT3BlbjoKICAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgib3BlbiIpOwotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yOjpSZWFkeVN0YXRlQ2xvc2luZzoKKyAgICBjYXNlIFJlYWR5U3RhdGVDbG9zaW5nOgogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zaW5nIik7Ci0gICAgY2FzZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgY2FzZSBSZWFkeVN0YXRlQ2xv
c2VkOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zZWQiKTsKICAgICB9CiAKQEAg
LTEwMiw3ICsxMDAsNyBAQCBTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25z
dAogCiB1bnNpZ25lZCBsb25nIFJUQ0RhdGFDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+YnVmZmVyZWRBbW91bnQoKTsKKyAgICByZXR1
cm4gbV9oYW5kbGVyLT5idWZmZXJlZEFtb3VudCgpOwogfQogCiBTdHJpbmcgUlRDRGF0YUNoYW5u
ZWw6OmJpbmFyeVR5cGUoKSBjb25zdApAQCAtMTI5LDExICsxMjcsMTEgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmIGJpbmFyeVR5cGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgZGF0
YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0
ZSgpICE9IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVPcGVuKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2hhbmRsZXIt
PnNlbmRTdHJpbmdEYXRhKGRlc2NyaXB0b3IoKSwgZGF0YSkpIHsKKyAgICBpZiAoIW1faGFuZGxl
ci0+c2VuZFN0cmluZ0RhdGEoZGF0YSkpIHsKICAgICAgICAgLy8gRklYTUU6IERlY2lkZSB3aGF0
IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwog
ICAgIH0KQEAgLTE0MSw3ICsxMzksNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OnNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcHJwRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpICE9IFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IFJl
YWR5U3RhdGVPcGVuKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xNTQsNyArMTUyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6
c2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwcnBEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IAogICAgIGNvbnN0IGNoYXIqIGRhdGFQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEtPmRhdGEoKSk7CiAKLSAgICBpZiAoIW1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGVzY3Jp
cHRvcigpLCBkYXRhUG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKKyAgICBpZiAoIW1faGFuZGxlci0+
c2VuZFJhd0RhdGEoZGF0YVBvaW50ZXIsIGRhdGFMZW5ndGgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBEZWNpZGUgd2hhdCB0aGUgcmlnaHQgZXhjZXB0aW9uIGhlcmUgaXMuCiAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICB9CkBAIC0xNzcsMTkgKzE3NSwyMSBAQCB2b2lkIFJUQ0RhdGFDaGFu
bmVsOjpjbG9zZSgpCiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9oYW5kbGVyLT5jbG9zZURhdGFDaGFubmVsKGRlc2NyaXB0b3IoKSk7CisgICAgbV9oYW5kbGVy
LT5jbG9zZSgpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCgp
Cit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUgbmV3
U3RhdGUpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCkKKyAgICBpZiAobV9zdG9wcGVkIHx8IG1fcmVh
ZHlTdGF0ZSA9PSBSZWFkeVN0YXRlQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0
Y2ggKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuOgorICAgIG1fcmVhZHlTdGF0ZSA9IG5ld1N0YXRl
OworCisgICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKKyAgICBjYXNlIFJlYWR5U3RhdGVPcGVu
OgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgY2FzZSBSZWFk
eVN0YXRlQ2xvc2VkOgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CkBAIC0yMzAsMTEgKzIzMCw2IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OmVycm9yKCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLVJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvciogUlRDRGF0YUNoYW5uZWw6OmRlc2NyaXB0b3IoKQotewotICAgIHJldHVybiBtX2Rl
c2NyaXB0b3IuZ2V0KCk7Ci19Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6
OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yUlRDRGF0YUNoYW5uZWw7CkBAIC0yNDgsOCArMjQzLDcgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogUlRDRGF0YUNoYW5uZWw6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
dm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiB7CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKLSAg
ICBtX2hhbmRsZXIgPSAwOwotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOworICAgIG1f
aGFuZGxlci0+c2V0Q2xpZW50KDApOwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaAppbmRleCBiZTkyY2JlNTI3MmFjYmI1Yzk3ZGI3ZmJiNTgzYzAzMWJmYjFmNTRk
Li41YWJjMGE4M2ZiNDEzMTZmOTZiMjJjMGFjMTczZWE1OWYyOWI3N2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC0y
NywyOCArMjcsMjYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBCbG9iOworY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogCi1jbGFzcyBS
VENEYXRhQ2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50IHsKK2Ns
YXNzIFJUQ0RhdGFDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
Pik7CiAgICAgflJUQ0RhdGFDaGFubmVsKCk7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsK
LQogICAgIGJvb2wgcmVsaWFibGUoKSBjb25zdDsKLQogICAgIFN0cmluZyByZWFkeVN0YXRlKCkg
Y29uc3Q7Ci0KICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwpAQCAtNjYsNyArNjQsNiBAQCBwdWJsaWM6CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKIAotICAgIFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvciogZGVzY3JpcHRvcigpOwogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKQEAgLTc3LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRD
RGF0YUNoYW5uZWw+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENEYXRhQ2hhbm5lbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KTsKKyAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2
b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEYXRhQ2hhbm5lbD4qKTsKQEAg
LTkwLDI0ICs4NywyMyBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKLSAgICAvLyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyCi0gICAgdmly
dHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgLy8gUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUo
UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBj
aGFyKiwgc2l6ZV90KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSBPVkVSUklE
RTsKIAorICAgIE93blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IG1faGFuZGxlcjsKKwogICAg
IGJvb2wgbV9zdG9wcGVkOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IG1f
ZGVzY3JpcHRvcjsKIAorICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIGVudW0gQmlu
YXJ5VHlwZSB7CiAgICAgICAgIEJpbmFyeVR5cGVCbG9iLAogICAgICAgICBCaW5hcnlUeXBlQXJy
YXlCdWZmZXIKICAgICB9OwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwogCi0gICAgLy8g
Tm90IG93bmVkIGJ5IHRoaXMgY2xhc3MuCi0gICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBt
X2hhbmRsZXI7Ci0KICAgICBUaW1lcjxSVENEYXRhQ2hhbm5lbD4gbV9zY2hlZHVsZWRFdmVudFRp
bWVyOwogICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9zY2hlZHVsZWRFdmVudHM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCA3NjIzOTAwN2I5MTk4MDUxZDQ4YjU3YjllMmRhMzk2YjZmYjIx
ZGExLi40NDk2NmNjNGUzY2Y1YzZjMzliMTg3YTMzYTA4MWZhMWIwYjBiZjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZl
bnQuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJSVENF
cnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAi
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgpAQCAtNTM5LDE0ICs1NDAsMTQgQEAgdm9pZCBS
VENQZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtRGVzY3IKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNl
LCBzdHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFk
ZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBj
aGFubmVsRGVzY3JpcHRvcikKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBoYW5kbGVyKQogewog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
IAogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNsb3NlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsID0gUlRDRGF0YUNoYW5u
ZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGVlckhhbmRsZXIuZ2V0KCks
IGNoYW5uZWxEZXNjcmlwdG9yKTsKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwg
PSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaGFuZGxl
cik7CiAgICAgbV9kYXRhQ2hhbm5lbHMuYXBwZW5kKGNoYW5uZWwpOwogCiAgICAgc2NoZWR1bGVE
aXNwYXRjaEV2ZW50KFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBjaGFubmVsLnJlbGVhc2UoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oCmluZGV4IGMzMWVkMWE1OWE1ZDdlMjU4MDA0OTA1OWVhMGRmZDEyZjkwYzFkZTMuLjFkZDA4
NTc3YjFlNzQxYzUyMmYxMDhjYWI3NmVmZTFkNThiYWZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTEx
NCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRl
KEljZVN0YXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
KSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBmNDU2MWJkNzNiNzUzOWQzM2Q0NjM3OWUzZmJlZWFjNDE2MmI2NjQ3Li45YWViM2FmYTc5
MTZiNDI1MzZkNWJhNjdkNTRhMjZhMGY5YzQzMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MzA1
LDggKzQzMDUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRv
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaCcsCkBAIC00MzE4LDYgKzQzMTgsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1ZvaWRSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNo
cm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
bWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suY3BwJywKQEAgLTcxMjMs
NyArNzEyNSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0NvbmZpZ3VyYXRpb24uY3BwJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVsLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENJQ0VDYW5kaWRhdGUuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1Nlc3Npb25EZXNj
cmlwdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVs
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNjkxMmMxNTQ2ZThkYzUzODM5
NzE4ODYyNTBhMGQyNWM1OThhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJU
Q0RhdGFDaGFubmVsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+Ci0KLSNpbmNsdWRlICJSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBFeHRyYURhdGFDb250YWluZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpFeHRyYURhdGEgewotcHVibGljOgotICAgIEV4
dHJhRGF0YUNvbnRhaW5lcihXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhKiBleHRyYURhdGEp
IDogbV9leHRyYURhdGEoV1RGOjphZG9wdFB0cihleHRyYURhdGEpKSB7IH0KLQotICAgIFdlYlJU
Q0RhdGFDaGFubmVsOjpFeHRyYURhdGEqIGV4dHJhRGF0YSgpIHsgcmV0dXJuIG1fZXh0cmFEYXRh
LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPFdlYlJUQ0RhdGFDaGFubmVsOjpFeHRy
YURhdGE+IG1fZXh0cmFEYXRhOwotfTsKLQotV2ViUlRDRGF0YUNoYW5uZWw6OldlYlJUQ0RhdGFD
aGFubmVsKGNvbnN0IFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiYgZGF0YUNo
YW5uZWwpCi0gICAgOiBtX3ByaXZhdGUoZGF0YUNoYW5uZWwpCi17Ci19Ci0KLVdlYlJUQ0RhdGFD
aGFubmVsOjpXZWJSVENEYXRhQ2hhbm5lbChSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqIGRhdGFD
aGFubmVsKQotICAgIDogbV9wcml2YXRlKGRhdGFDaGFubmVsKQotewotfQotCi12b2lkIFdlYlJU
Q0RhdGFDaGFubmVsOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVs
aWFibGUpCi17Ci0gICAgbV9wcml2YXRlID0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVh
dGUobGFiZWwsIHJlbGlhYmxlKTsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6YXNzaWdu
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikKLXsKLSAgICBtX3ByaXZhdGUgPSBvdGhl
ci5tX3ByaXZhdGU7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OnJlc2V0KCkKLXsKLSAg
ICBtX3ByaXZhdGUucmVzZXQoKTsKLX0KLQotV2ViUlRDRGF0YUNoYW5uZWw6Om9wZXJhdG9yIFBh
c3NSZWZQdHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKLX0KLQotV2ViUlRDRGF0YUNoYW5uZWw6Om9wZXJh
dG9yIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciooKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpFeHRyYURhdGEq
IFdlYlJUQ0RhdGFDaGFubmVsOjpleHRyYURhdGEoKSBjb25zdAotewotICAgIFJlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OkV4dHJhRGF0YT4gZGF0YSA9IG1fcHJpdmF0ZS0+ZXh0cmFE
YXRhKCk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RXh0cmFEYXRhQ29udGFpbmVyKj4oZGF0YS5nZXQoKSktPmV4dHJhRGF0YSgpOwot
fQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpzZXRFeHRyYURhdGEoRXh0cmFEYXRhKiBleHRy
YURhdGEpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRFeHRyYURhdGEoYWRvcHRSZWYobmV3IEV4dHJh
RGF0YUNvbnRhaW5lcihleHRyYURhdGEpKSk7Ci19Ci0KLVdlYlN0cmluZyBXZWJSVENEYXRhQ2hh
bm5lbDo6bGFiZWwoKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIHJldHVy
biBtX3ByaXZhdGUtPmxhYmVsKCk7Ci19Ci0KLWJvb2wgV2ViUlRDRGF0YUNoYW5uZWw6OnJlbGlh
YmxlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5yZWxpYWJsZSgpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpzZXRCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBjb25zdAotewotICAgIEFTU0VS
VCghaXNOdWxsKCkpOwotICAgIG1fcHJpdmF0ZS0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRB
bW91bnQpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZChS
ZWFkeVN0YXRlIHN0YXRlKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1f
cHJpdmF0ZS0+cmVhZHlTdGF0ZUNoYW5nZWQoc3RhdGljX2Nhc3Q8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpSZWFkeVN0YXRlPihzdGF0ZSkpOwotfQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVs
OjpkYXRhQXJyaXZlZChjb25zdCBXZWJTdHJpbmcmIGRhdGEpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFpc051bGwoKSk7Ci0gICAgbV9wcml2YXRlLT5kYXRhQXJyaXZlZChkYXRhKTsKLX0KLQotdm9p
ZCBXZWJSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc051bGwoKSk7Ci0gICAgbV9wcml2
YXRlLT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKLX0KLQotdm9pZCBXZWJSVENEYXRh
Q2hhbm5lbDo6ZXJyb3IoKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1f
cHJpdmF0ZS0+ZXJyb3IoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE1NmQ2NmM0NWExNjBjYzAxZGRmZWQ2NmUy
NWIxNzJkMGNlNGRjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGxhYmVsLCBy
ZWxpYWJsZSkpOwotfQotCi1SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotICAgIDogbV9j
bGllbnQoMCkKLSAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgLCBtX3JlbGlhYmxlKHJlbGlhYmxl
KQotICAgICwgbV9yZWFkeVN0YXRlKFJlYWR5U3RhdGVDb25uZWN0aW5nKQotICAgICwgbV9idWZm
ZXJlZEFtb3VudCgwKQotewotfQotCi1SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6On5SVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IoKQotewotfQotCi12b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQotewotICAgIEFTU0VS
VChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0
ZSAhPSByZWFkeVN0YXRlKSB7Ci0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7Ci0g
ICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZWFkeVN0YXRlQ2hh
bmdlZCgpOwotICAgIH0KLX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmRhdGFB
cnJpdmVkKGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9
IFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRhdGFBcnJpdmVkKGRhdGEpOwotfQotCi12b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6
ZGF0YUFycml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gICAg
QVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKLX0K
LQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKCkKLXsKLSAgICBBU1NFUlQo
bV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX2NsaWVudCkKLSAg
ICAgICAgbV9jbGllbnQtPmVycm9yKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWNiNGFjM2JjZTllNjVmNTFkODBkMjc3
OWZkMDJkYzI5ODk2MDNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JfaAotI2RlZmluZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3JfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFN0
cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNp
emVfdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpID0gMDsKLX07Ci0KLWNsYXNzIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcj4gewotcHVibGljOgotICAgIGNsYXNzIEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPEV4dHJhRGF0YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFE
YXRhKCkgeyB9Ci0gICAgfTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIFJlYWR5
U3RhdGVDb25uZWN0aW5nID0gMCwKLSAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAotICAgICAg
ICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAot
ICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsKLSAgICB2aXJ0dWFs
IH5SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoKTsKLQotICAgIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lk
IHNldENsaWVudChSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFiZWw7IH0KLSAgICBib29sIHJlbGlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxp
YWJsZTsgfQotCi0gICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkeVN0YXRlOyB9Ci0KLSAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXJlZEFtb3VudDsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnQo
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgeyBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVy
ZWRBbW91bnQ7IH0KLQotICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSk7Ci0g
ICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRhdGFBcnJpdmVk
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgZXJyb3IoKTsKLQotICAgIFBhc3NSZWZQ
dHI8RXh0cmFEYXRhPiBleHRyYURhdGEoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhRGF0YTsgfQot
ICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsg
bV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KLQotcHJpdmF0ZToKLSAgICBSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7Ci0KLSAgICBS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX2xh
YmVsOwotICAgIGJvb2wgbV9yZWxpYWJsZTsKLSAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
LSAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7Ci0gICAgUmVmUHRyPEV4dHJhRGF0
YT4gbV9leHRyYURhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc2YWIyM2FiMDI2NDRlZDA3
NTk0ZmFhODEyNjkzMTE4ZmRiMjcyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKyNk
ZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRGF0YUNoYW5uZWxIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGxhYmVsKCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZWxpYWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEo
Y29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBj
aGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxODJmMjU1MmU1YmU1ZmIxNjMyODgxYzJkNDM1ZjEz
NTM3ODFiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVm
aW5lIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlT
dGF0ZUNvbm5lY3RpbmcgPSAwLAorICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAg
IFJlYWR5U3RhdGVDbG9zaW5nID0gMiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisg
ICAgfTsKKworICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXJyb3IoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IDg1MDlm
MmU5NDI3NTY4YmE2Mjc5OTgwZGEzNjBjNjFmMWE0NWM0NTMuLjkwMGIwNDBmZjliNGFlYjhjYjVl
NDg0MWFhOGY2ZmYzOTA4MThiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApA
QCAtMzQsMTM0ICszNCwxNCBAQAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgiCiAKLSNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50OwogCi0vLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgYmVsb3cgZm9yIHBv
cnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0LgotCi1j
bGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSA6IHB1YmxpYyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIgewotcHVibGljOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
KFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotICAgIHZpcnR1YWwgflJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4p
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBhc3NSZWZQ
dHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24o
UGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IHJl
bW90ZURlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZUljZShQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBh
ZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVs
LgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0Rh
dGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4pIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1QYXNzT3duUHRyPFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teShjbGllbnQpKTsKLX0KLQotUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyRHVtbXk6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewot
ICAgIEFTU0VSVChtX2NsaWVudCk7Ci19Ci0KLVJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
Ojp+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoKQotewotfQotCi1ib29sIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpjcmVhdGVPZmZlcihQ
YXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KQotewotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
OjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Piwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJEdW1teTo6c2V0TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRS
ZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikKLXsK
LX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0UmVtb3RlRGVzY3Jp
cHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcj4pCi17Ci19Ci0KLVBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmxvY2FsRGVz
Y3JpcHRpb24oKQotewotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpyZW1v
dGVEZXNjcmlwdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyRHVtbXk6OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpyZW1vdmVTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KQotewotfQotCi1ib29sIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15Ojp1cGRhdGVJY2UoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0
aW9uPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmFkZEljZUNhbmRpZGF0
ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KQotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6Z2V0U3RhdHMo
UGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KQotewotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckR1bW15OjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJEdW1teTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyRHVtbXk6OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmNs
b3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KQorUGFz
c093blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cjo6Y3JlYXRlKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopCiB7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgKaW5kZXggZmJhNDU4ODdlNjc5OTY1NmYyNjYzN2U0ZWZkZWE0ZTk2NTY2MDMyZC4u
ZDhmOTZkMzBmMzFlNmQxOTU5N2UzOGY1MWZiOWI5ODQ3MDU3MjdlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKLWNsYXNzIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNs
YXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQ7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOwpAQCAt
NjksMTEgKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVm
UHRyPFJUQ1N0YXRzUmVxdWVzdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsK
IAotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5u
ZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
PiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKyAgICAvLyBSVENEYXRhQ2hhbm5lbAorICAgIHZpcnR1
YWwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaAppbmRleCBhNjdhNGI4ZTBlYjNiYWEyOTcyMGIwMmU5NGEwMTY5ZDFjMjkx
ODhkLi5iZGI4ZTYyOGVhOWM5NDVmOTdkYTA4YmNkYzc3ODZmZmZhNDEzNDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CiBjbGFz
cyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogCiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQgewpAQCAtODYsOSArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUljZVN0YXRlKEljZVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciopID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgdm9pZCBkaWRB
ZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc093blB0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJv
bWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTQyMjJiZDczMGI3OGZjODYxMDQyMGIzMWU3YmViOTJlNGIyNTIx
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcApAQCAtMCwwICsxLDEx
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgi
CisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVs
SGFuZGxlcj4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZShXZWJLaXQ6Oldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxlcikKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKHdlYkhhbmRsZXIpKTsKK30KKwor
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiB3ZWJIYW5kbGVyKQorICAgIDog
bV93ZWJIYW5kbGVyKGFkb3B0UHRyKHdlYkhhbmRsZXIpKQorICAgICwgbV9jbGllbnQoMCkKK3sK
K30KKworUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06On5SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06
OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3dlYkhhbmRsZXItPnNldENsaWVudChtX2NsaWVudCA/
IHRoaXMgOiAwKTsKK30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjps
YWJlbCgpCit7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+bGFiZWwoKTsKK30KKworYm9vbCBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6cmVsaWFibGUoKQoreworICAgIHJldHVybiBt
X3dlYkhhbmRsZXItPnJlbGlhYmxlKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2hyb21pdW06OmJ1ZmZlcmVkQW1vdW50KCkKK3sKKyAgICByZXR1cm4gbV93ZWJI
YW5kbGVyLT5idWZmZXJlZEFtb3VudCgpOworfQorCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtOjpzZW5kU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgcmV0
dXJuIG1fd2ViSGFuZGxlci0+c2VuZFN0cmluZ0RhdGEoZGF0YSk7Cit9CisKK2Jvb2wgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQoreworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGEs
IHNpemUpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjbG9zZSgp
Cit7CisgICAgbV93ZWJIYW5kbGVyLT5jbG9zZSgpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNocm9taXVtOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKFdlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBzdGF0ZSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKHN0YXRpY19jYXN0PFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZT4oc3RhdGUpKTsKK30KKwordm9pZCBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGF0YUFycml2ZWQoY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIGRhdGEpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZGF0YUFycml2ZWQoZGF0YSk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2hyb21pdW06OmRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSBjb25z
dAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRhdGFBcnJpdmVkKGRh
dGEsIHNpemUpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjplcnJv
cigpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZXJyb3Io
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk2YzYwMDhlMGVmMmQ5MThlMmE2NWU5NzY5ZDcyNGRiNWU0Yzg3
NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW1f
aAorI2RlZmluZSBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bV9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCisjaW5j
bHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIFdlYktpdDo6V2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZShXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlciopOworICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVsaWFibGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxvbmcgYnVmZmVyZWRBbW91bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0
cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRS
YXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJlYWR5
U3RhdGUoUmVhZHlTdGF0ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRhdGFB
cnJpdmVkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKFdlYktpdDo6V2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyKik7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+IG1fd2ViSGFuZGxlcjsKKyAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNo
cm9taXVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcAppbmRleCBmNDkwZTM0ODBiNWUzN2EzODgwZGE3MGU5OTUzZDdmOGVk
MDgxMDMxLi41N2ZhMGZkZTZhOTVmZWQ2Mzk3MGI0YjMzMDAyN2UzOWJiYWRlMGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0u
Y3BwCkBAIC0zNiw3ICszNiw4IEBACiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAj
aW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgiCisj
aW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUlRDSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIK
QEAgLTQ3LDcgKzQ4LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+CkBAIC0xNDgsMjQgKzE0OSwxMyBAQCB2b2lkIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0
YXRzUmVxdWVzdD4gcmVxdQogICAgIG1fd2ViSGFuZGxlci0+Z2V0U3RhdHMocmVxdWVzdCk7CiB9
CiAKLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hhbm5l
bChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwpCitQYXNz
T3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFi
bGUpCiB7Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+b3BlbkRhdGFDaGFubmVsKGRhdGFDaGFu
bmVsKTsKLX0KLQotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0
cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVs
LCBjb25zdCBTdHJpbmcmIGRhdGEpCi17Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+c2VuZFN0
cmluZ0RhdGEoZGF0YUNoYW5uZWwsIGRhdGEpOwotfQotCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQotewotICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNlbmRSYXdEYXRhKGRhdGFDaGFubmVsLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKLX0KKyAgICBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ciogd2ViSGFuZGxlciA9IG1fd2ViSGFuZGxlci0+Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIHJl
bGlhYmxlKTsKKyAgICBpZiAoIXdlYkhhbmRsZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjbG9zZURhdGFDaGFubmVs
KFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCkKLXsKLSAg
ICByZXR1cm4gbV93ZWJIYW5kbGVyLT5jbG9zZURhdGFDaGFubmVsKGRhdGFDaGFubmVsKTsKKyAg
ICByZXR1cm4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVy
KTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c3RvcCgpCkBA
IC0yMDgsOSArMTk4LDEwIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06
OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lCiAgICAgbV9jbGllbnQt
PmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwogfQogCi12
b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpkaWRBZGRSZW1vdGVEYXRhQ2hh
bm5lbChjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCkKK3ZvaWQg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmRpZEFkZFJlbW90ZURhdGFDaGFubmVs
KFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiB3ZWJIYW5kbGVyKQogewotICAgIG1f
Y2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCk7CisgICAgQVNTRVJU
KHdlYkhhbmRsZXIpOworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKHdlYkhhbmRsZXIpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXggYjUyYjdiMTZiZjMwNjU4MWQzNzRjNzJhNTZl
ZmYyNDczMWEwYjBlNS4uZDU5Y2VkMzNhNjM4OWI2OTQwOGM3MGVhYWEzM2IxY2E5MmI3ZmU2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJv
bWl1bS5oCkBAIC00MiwxMiArNDIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbDsKIGNsYXNz
IFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBS
VENEYXRhQ2hhbm5lbEhhbmRsZXI7CisKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtIDogcHVibGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciwgcHVibGljIFdlYktpdDo6
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bShSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQqKTsKQEAgLTY4LDEzICs2OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFD
aGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkRh
dGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IHNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3Qg
Y2hhciosIHNpemVfdCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5u
ZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLQogICAg
IC8vIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0
aW9uLgogICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlhdGlvbk5lZWRlZCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZUlDRUNhbmRpZGF0ZShjb25zdCBXZWJLaXQ6OldlYlJU
Q0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOwpAQCAtODMsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZUlDRVN0YXRlKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEFkZFJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3Qg
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hh
bm5lbCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5l
bChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciopIE9WRVJSSURFOwogCiAgICAgc3Rh
dGljIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiB0b1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCAyM2Q2
NmJkMWNkYWU5MThiOTM2NTg5NTlmYWE5YWUxZWUzNmQzOTNhLi5mYmE0OTJmZDQ0MmM2N2JhYWVl
MWU5MTAyNjJiNzMxMzU5Yjg2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjUsNyArNjUsNyBAQAogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAj
aW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgog
I2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJl
ZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTE4LDgg
KzExOCw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3Ry
ZWFtU291cmNlLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlJlZmVycmVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhci5oPgpAQCAt
NTg2LDEwICs1ODUsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRVN0YXRlTmV3LCBSVEMKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0
ZUdhdGhlcmluZywgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJY2VTdGF0ZUdhdGhl
cmluZyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudDo6SUNFU3RhdGVXYWl0aW5nLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQ6OkljZVN0YXRlV2FpdGluZyk7CiAKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDb25uZWN0aW5nLCBSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0aW5nKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDbG9zaW5nLCBSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OlJlYWR5U3RhdGVDbG9zaW5nKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDbG9zZWQsIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcjo6UmVhZHlTdGF0ZUNsb3NlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNvbm5lY3RpbmcsIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNvbm5lY3RpbmcpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5
U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50OjpSZWFkeVN0YXRlQ2xvc2luZywgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFk
eVN0YXRlQ2xvc2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NlZCwgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2VkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNDUklQ
VEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA4OTlmZDgxMGNhYzJiZjZkNWEyMjcwMjUyZjU3NDc2YjhjNTU3NDdhLi41ZmExZmI4
ZGUzZjUxZTgyNDRmNGEzNmRhMjM2YjMzNTU0MmMxN2M0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMTItMTAg
IFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
dHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRhdGEgY2hhbm5lbCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8g
YSBoYW5kbGVyIHBhdHRlcm4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGluZyBtb2NrcyB0byBiZSBhYmxlIHRvIHRlc3QgdGhpcyByZWZhY3Rvcmlu
Zy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayk6CisgICAg
ICAgIChEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrOjpEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNr
KToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmJ1ZmZl
cmVkQW1vdW50KToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRT
dHJpbmdEYXRhKToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRS
YXdEYXRhKToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6
CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjp0YXNrTGlzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHA6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrOjpSVENQ
ZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKFJlbW90ZURhdGFDaGFubmVs
VGFzazo6UmVtb3RlRGF0YUNoYW5uZWxUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3ApOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorCiAyMDEyLTEyLTA5ICBKb2FubWFyaWUgRGln
Z3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBhY2Nlc3NpYmlsaXR5L3Bs
YWNlaG9sZGVyLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKaW5kZXggZDM3MmZhY2ZjYzIxMTYwODBlZGI3ZmJjN2Y0MDMwNzliZTYxMDI2ZC4u
ZDYzMzlkYTE4ZDdjYzY3MGE3MDAyOWRjMDVkZGY5NmJjODJlN2U4YiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0yNCw2ICsyNCw4IEBACiAgICAgICAgICAg
ICAnY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCcsCisgICAgICAg
ICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAnLAorICAgICAg
ICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJlY29nbml6ZXIuY3BwJywKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI0NWUyZjJjMzcwYzkwMTc3OWU5MDE3MTBhYzUz
OGQ4YWQzZjljNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorCisjaW5jbHVk
ZSAiVGFzay5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOworCitjbGFzcyBEYXRhQ2hhbm5lbFJlYWR5U3Rh
dGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cj4geworcHVibGljOgorICAgIERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlciogb2JqZWN0LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQq
IGRhdGFDaGFubmVsQ2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5
U3RhdGUgc3RhdGUpCisgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9kYXRhQ2hhbm5lbENsaWVudChkYXRhQ2hh
bm5lbENsaWVudCkKKyAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2Rh
dGFDaGFubmVsQ2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRlKG1fc3RhdGUpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fZGF0YUNoYW5u
ZWxDbGllbnQ7CisgICAgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRl
IG1fc3RhdGU7Cit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcjo6TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcihXZWJTdHJpbmcgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV9sYWJlbChsYWJl
bCkKKyAgICAsIG1fcmVsaWFibGUocmVsaWFibGUpCit7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCogY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgcG9zdFRhc2sobmV3IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sodGhpcywgbV9j
bGllbnQsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZU9wZW4pKTsK
K30KKwordW5zaWduZWQgbG9uZyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpidWZmZXJl
ZEFtb3VudCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQoreworICAg
IGFzc2VydChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPmRhdGFBcnJpdmVkKGRhdGEpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGFzc2VydCht
X2NsaWVudCk7CisgICAgbV9jbGllbnQtPmRhdGFBcnJpdmVkKGRhdGEsIHNpemUpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3Nl
KCkKK3sKKyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5l
bFJlYWR5U3RhdGVUYXNrKHRoaXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQ6OlJlYWR5U3RhdGVDbG9zZWQpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4NDgzNDRhN2M4ZTk4
NGFmODE0YTNiNWZiYjUzMWIzOTFkYTA3YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXJfaAorI2RlZmluZSBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKworI2luY2x1
ZGUgIldlYlRhc2suaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorCitjbGFzcyBNb2NrV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyIDogcHVibGljIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
IHsKK3B1YmxpYzoKKyAgICBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKFdlYktpdDo6V2Vi
U3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGll
bnQoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGxhYmVsKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9s
YWJlbDsgfQorICAgIHZpcnR1YWwgYm9vbCByZWxpYWJsZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1f
cmVsaWFibGU7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3Qg
Y2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJ
REU7CisKKyAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisKK3ByaXZh
dGU6CisgICAgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigpOworCisgICAgV2ViS2l0OjpX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYktpdDo6V2Vi
U3RyaW5nIG1fbGFiZWw7CisgICAgYm9vbCBtX3JlbGlhYmxlOworICAgIFdlYlRlc3RSdW5uZXI6
OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Cit9OworCisjZW5kaWYgLy8gTW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IGNm
ZDc2ZGU3NGFjZjdmYjU5YzJkNTkzZmM5ZWM5YTcwMWM0YzNlMjkuLmJiZWMyNWJkMTZiOTY3MGM0
MWQ1NmE3ZDFhMDZlY2VkNDYwNzBjNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oIgogCiAjaW5jbHVkZSAiTW9ja0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRp
YVN0cmVhbUNvbXBvbmVudC5oPgpAQCAtMTI4LDg0ICsxMjksNDEgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3VjY2VlZGVkOwogfTsKIAotY2xhc3MgU3RyaW5nRGF0YVRhc2sgOiBwdWJsaWMgV2Vi
TWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0g
ICAgU3RyaW5nRGF0YVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0
LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IFdlYlN0cmluZyYg
ZGF0YSkKLSAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI+KG9iamVjdCkKLSAgICAgICAgLCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQotICAg
ICAgICAsIG1fZGF0YShkYXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVu
SWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX2RhdGFDaGFubmVsLmRhdGFBcnJp
dmVkKG1fZGF0YSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYlJUQ0RhdGFDaGFubmVsIG1f
ZGF0YUNoYW5uZWw7Ci0gICAgV2ViU3RyaW5nIG1fZGF0YTsKLX07Ci0KLWNsYXNzIENoYXJQdHJE
YXRhVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI+IHsKLXB1YmxpYzoKLSAgICBDaGFyUHRyRGF0YVRhc2soTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlciogb2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5u
ZWwsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi0gICAgICAgIDogV2ViTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCi0gICAgICAgICwg
bV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0g
ICAgewotICAgICAgICBtX2RhdGEgPSBuZXcgY2hhclttX2xlbmd0aF07Ci0gICAgICAgIG1lbWNw
eShtX2RhdGEsIGRhdGEsIG1fbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVu
SWZWYWxpZCgpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX2RhdGFDaGFubmVsLmRhdGFBcnJp
dmVkKG1fZGF0YSwgbV9sZW5ndGgpOwotICAgICAgICBkZWxldGUgW10gbV9kYXRhOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBXZWJSVENEYXRhQ2hhbm5lbCBtX2RhdGFDaGFubmVsOwotICAgIGNo
YXIqIG1fZGF0YTsKLSAgICBzaXplX3QgbV9sZW5ndGg7Ci19OwotCi1jbGFzcyBEYXRhQ2hhbm5l
bFJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4geworY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayA6
IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsK
IHB1YmxpYzoKLSAgICBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFu
bmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBSVENQZWVyQ29u
bmVjdGlvblJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9i
amVjdCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIFdlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICAgICAgOiBX
ZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKLSAg
ICAgICAgLCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQorICAgICAgICAsIG1fY2xpZW50KGNs
aWVudCkKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCiAgICAgewotICAgICAgICBtX2RhdGFDaGFu
bmVsLnJlYWR5U3RhdGVDaGFuZ2VkKG1fc3RhdGUpOworICAgICAgICBtX2NsaWVudC0+ZGlkQ2hh
bmdlUmVhZHlTdGF0ZShtX3N0YXRlKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2ViUlRDRGF0
YUNoYW5uZWwgbV9kYXRhQ2hhbm5lbDsKLSAgICBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0
ZSBtX3N0YXRlOworICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGll
bnQ7CisgICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIG1f
c3RhdGU7CiB9OwogCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrIDogcHVi
bGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworY2xh
c3MgUmVtb3RlRGF0YUNoYW5uZWxUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAgIFJUQ1BlZXJDb25uZWN0aW9u
UmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQorICAgIFJlbW90ZURhdGFDaGFu
bmVsVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQogICAgICAgICA6IFdlYk1ldGhvZFRh
c2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQogICAgICAgICAsIG1f
Y2xpZW50KGNsaWVudCkKLSAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQogICAgIHsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCiAgICAgewotICAgICAgICBt
X2NsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShtX3N0YXRlKTsKKyAgICAgICAgV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyKiByZW1vdGVEYXRhQ2hhbm5lbCA9IG5ldyBNb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyKCJNb2NrUmVtb3RlRGF0YUNoYW5uZWwiLCB0cnVlKTsKKyAgICAgICAgbV9j
bGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKHJlbW90ZURhdGFDaGFubmVsKTsKICAgICB9
CiAKIHByaXZhdGU6CiAgICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2Ns
aWVudDsKLSAgICBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUg
bV9zdGF0ZTsKIH07CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMzI3LDQ2ICsyODUsMTYg
QEAgdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpnZXRTdGF0cyhjb25zdCBX
ZWJSVENTdGF0c1JlcXVlc3QmIHJlcXVlc3QKICAgICBwb3N0VGFzayhuZXcgUlRDU3RhdHNSZXF1
ZXN0U3VjY2VlZGVkVGFzayh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi12b2lkIE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3AoKQorV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyKiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEYXRhQ2hhbm5l
bChjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQogewotICAgIG1fc3RvcHBl
ZCA9IHRydWU7Ci19Ci0KLWJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6b3Bl
bkRhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCkKLXsKLSAg
ICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBXZWJSVENEYXRh
Q2hhbm5lbCByZW1vdGVEYXRhQ2hhbm5lbDsKLSAgICByZW1vdGVEYXRhQ2hhbm5lbC5pbml0aWFs
aXplKCJNb2NrUmVtb3RlRGF0YUNoYW5uZWwiLCBkYXRhQ2hhbm5lbC5yZWxpYWJsZSgpKTsKLSAg
ICByZW1vdGVEYXRhQ2hhbm5lbC5yZWFkeVN0YXRlQ2hhbmdlZChXZWJSVENEYXRhQ2hhbm5lbDo6
UmVhZHlTdGF0ZU9wZW4pOwotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChy
ZW1vdGVEYXRhQ2hhbm5lbCk7CisgICAgcG9zdFRhc2sobmV3IFJlbW90ZURhdGFDaGFubmVsVGFz
ayh0aGlzLCBtX2NsaWVudCkpOwogCi0gICAgcG9zdFRhc2sobmV3IERhdGFDaGFubmVsUmVhZHlT
dGF0ZVRhc2sodGhpcywgZGF0YUNoYW5uZWwsIFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRl
T3BlbikpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI6OmNsb3NlRGF0YUNoYW5uZWwoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsKQotewotICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNr
KHRoaXMsIGRhdGFDaGFubmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZUNsb3NlZCkp
OworICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcihsYWJlbCwgcmVs
aWFibGUpOwogfQogCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnNlbmRT
dHJpbmdEYXRhKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgV2Vi
U3RyaW5nJiBkYXRhKQotewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGRhdGFDaGFubmVsLmRhdGFBcnJpdmVkKGRhdGEpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnNlbmRSYXdEYXRh
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKK3ZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3Rv
cCgpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ZGF0YUNoYW5uZWwuZGF0YUFycml2ZWQoZGF0YSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICBtX3N0b3BwZWQgPSB0cnVlOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCBhMTUyMmY0ZmJlNmZlM2I1ZmE0
NDIyZDVlZDcwOThmMGIzMjhhYzA1Li45ZDBlZDc5NmQxZTM5M2I2NTE2YWU0YjM0MDg0NmNhMDgx
MTYyNDkwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zNCw3ICszNCw2IEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIldlYlRhc2suaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0Lmg+CkBAIC02MSwxMyArNjAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFk
ZFN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYsIGNvbnN0IFdl
YktpdDo6V2ViTWVkaWFDb25zdHJhaW50cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1JlcXVlc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkRhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6
V2ViUlRDRGF0YUNoYW5uZWwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmlu
Z0RhdGEoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKGNvbnN0IFdl
YktpdDo6V2ViUlRDRGF0YUNoYW5uZWwmLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlJUQ0Rh
dGFDaGFubmVsJikgT1ZFUlJJREU7Ci0KICAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcwog
ICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rh
c2tMaXN0OyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1ZWNjN2Q4OWQ1ZDA1MDA5MTg1OWQ5MWQ4NzEyNDE1YWE2MWU1
MjYyLi45MGY1Nzg2YTNhMjgzMTZhNWIxMTdhNjlkZjI1YzUwYmNhM2JkYjY4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMTItMTAgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2ds
ZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRhdGEgY2hhbm5l
bCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8gYSBoYW5kbGVyIHBhdHRlcm4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGluZyBkYXRhIGNoYW5uZWxz
IHRlc3RzLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1k
YXRhY2hhbm5lbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sOgorCiAyMDEyLTEyLTA5ICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtRdF0gR2FyZGVuaW5n
IGFmdGVyIHIxMzcwMDYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQu
dHh0CmluZGV4IDc1OTg5NGUwYWZmYmU3M2FmZWU1NTA3M2FjZDQ2ZTU4M2MxNTg4MGYuLjNhYWZj
NmYxNTZiMzQxNDY2MzAxNjBjZDE1MTg0MzQ0MjBmYTIyMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0CkBAIC0zLDE0ICszLDE4IEBAIFRlc3RzIFJUQ0Rh
dGFDaGFubmVsLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BBU1MgZGMgPSBwYy5j
cmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwxIik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFT
UyBkYy5yZWxpYWJsZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxh
YmVsMiIsIHt9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGRjLnJlbGlhYmxlIGlz
IHRydWUKK1BBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlhYmxl
OnRydWV9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGRjLnJlbGlhYmxlIGlzIHRy
dWUKK1BBU1MgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlhYmxlOmZh
bHNlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBkYy5yZWxpYWJsZSBpcyBmYWxz
ZQogUEFTUyBwY19vbm9wZW4gd2FzIGNhbGxlZAorUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFu
bmVsKCJsYWJlbCIpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgZGMucmVhZHlTdGF0
ZSBpcyAnY29ubmVjdGluZycKIFBBU1MgcGNfb25kYXRhY2hhbm5lbCB3YXMgY2FsbGVkCi1QQVNT
IGV2ZW50LmNoYW5uZWwucmVhZHlTdGF0ZSBpcyAnb3BlbicKIFBBU1MgZGNfb25vcGVuIHdhcyBj
YWxsZWQKIFBBU1MgZGMucmVhZHlTdGF0ZSBpcyAnb3BlbicKIFBBU1MgZGMubGFiZWwgaXMgJ2xh
YmVsJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sCmluZGV4IDQzNzlhNTk5ZDRhMDcyODI2
N2Q3NDk4NWJiNDkyMmQ3OGJiNzhjZDUuLjI0MzVjY2ViYmJkNTBhNWFkM2VhNjUxM2IwOWMzNzky
MGE1ZWJlZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwKQEAgLTcwLDI1ICs3MCwy
MyBAQCBmdW5jdGlvbiBkY19vbm9wZW4oKSB7CiAKIGZ1bmN0aW9uIHBjX29uZGF0YWNoYW5uZWwo
ZSkgewogICAgIHRlc3RQYXNzZWQoInBjX29uZGF0YWNoYW5uZWwgd2FzIGNhbGxlZCIpOwotICAg
IGV2ZW50ID0gZTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY2hhbm5lbC5yZWFkeVN0YXRlIiwgIidv
cGVuJyIpOwogfQogCiBmdW5jdGlvbiBwY19vbm9wZW4oKSB7CiAgICAgdGVzdFBhc3NlZCgicGNf
b25vcGVuIHdhcyBjYWxsZWQiKTsKLSAgICBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJl
bCIpOworICAgIHNob3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJl
bCIpOycpOwogICAgIHNob3VsZEJlKCJkYy5yZWFkeVN0YXRlIiwgIidjb25uZWN0aW5nJyIpOwog
ICAgIGRjLm9ub3BlbiA9IGRjX29ub3BlbjsKIH0KIAogcGMgPSBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24obnVsbCwgbnVsbCk7Ci1kYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDEi
KTsKK3Nob3VsZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDEiKTsn
KTsKIHNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0cnVlIik7Ci1kYyA9IHBjLmNyZWF0ZURhdGFD
aGFubmVsKCJsYWJlbDIiLCB7fSk7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgibGFiZWwyIiwge30pOycpOwogc2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgInRydWUi
KTsKLWRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIsIHtyZWxpYWJsZTp0cnVlfSk7
CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3Jl
bGlhYmxlOnRydWV9KTsnKTsKIHNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0cnVlIik7Ci1kYyA9
IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7cmVsaWFibGU6ZmFsc2V9KTsKK3Nob3Vs
ZE5vdFRocm93KCdkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7cmVsaWFibGU6
ZmFsc2V9KTsnKTsKIHNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJmYWxzZSIpOwogCiBwYyA9IG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178753</attachid>
            <date>2012-12-11 02:09:51 -0800</date>
            <delta_ts>2012-12-12 02:16:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104543-20121211110712.patch</filename>
            <type>text/plain</type>
            <size>95119</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhN2MxZGZiMzNhNDZk
YzY2ODI4OTQ1MWM2ZWY1NTcwYjI5MzE4YTIwLi45ODNjNWIyZjE5NzNiY2IwNGU4MTY3ZmM4OWZl
YTQ5NzAxOTRlOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMi0xMSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBh
IGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMgcmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRs
ZXIvQ2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAg
IGluc3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZp
eCBsaWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBw
b3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6fldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQ6On5XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0
YUNoYW5uZWwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwp
OgorCiAyMDEyLTEyLTEwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFdlYkNvbXBvc2l0b3JGcmFtZShBY2spIGFzIHRoZXNl
IGNsYXNzZXMgYXJlIG5vdCBuZWVkZWQgbm93IHRoYXQgdGhleSBhcmUgcGFzc2VkIHRocm91Z2gg
Y2M6Ok91dHB1dFN1cmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc3YzBmYzAzNTY2NWY5ZDY0ODI0ZGI4
YzgyMGYxNWJhYjU4NmQ4Yy4uYjc1MDZhY2QyZTBmMWNkZmU0MjNlOWEwNTJjMjk4ODM2NWE5OGYx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTExICBUb21teSBXaWRlbmZs
eWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hh
bmdlIHRoZSBkYXRhIGNoYW5uZWwgZGVzY3JpcHRvciBwYXR0ZXJuIHRvIGEgaGFuZGxlciBwYXR0
ZXJuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ1
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBz
aG9ydCB0aGUgY29kZSBpcyByZWZhY3R1cmVkIHRvIHVzZSB0aGUgSGFuZGxlci9DbGllbnQgcGF0
dGVybiAoc2VlIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcikKKyAgICAgICAgaW5zdGVhZCBvZiB0
aGUgRGVzY3JpcHRvciBwYXR0ZXJuLgorICAgICAgICBUaGlzIHdpbGwgZml4IGxpZmV0aW1lL21l
bW9yeS9jb2RlIHN0cnVjdHVyZSBpc3N1ZXMgaW4gdGhlIGNocm9taXVtIHBvcnQuCisKKyAgICAg
ICAgRXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpS
VENEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6flJUQ0Rh
dGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpsYWJlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6cmVsaWFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWREZXRlY3RFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6c3RvcCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChSVENEYXRhQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlk
QWRkUmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJS
VENEYXRhQ2hhbm5lbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5j
cHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RhdGFDaGFubmVsSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXI6On5SVENEYXRhQ2hhbm5l
bEhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6flJUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjp+
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmlzUmVsaWFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmJ1ZmZlcmVkQW1vdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpzZW5kU3RyaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6
c2VuZFJhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNo
cm9taXVtOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNocm9taXVtOjpkaWRSZWNlaXZlU3RyaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkUmVjZWl2ZVJhd0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmRpZERl
dGVjdEVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bTo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtKToKKwogMjAxMi0xMi0xMSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMzcyNDMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk0YjFkMjYwMDQxNmI5NTZjN2ZkMTkwNzM5
YTgzMGRkMjM0NzA1YzQuLjUyOGNhMzFiNzQzMzQ5YzU4YTlkMzQ0MzYzOGRlOTZmNzBiYTI0MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMTEg
IFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
dHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRhdGEgY2hhbm5lbCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8g
YSBoYW5kbGVyIHBhdHRlcm4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorCiAyMDEyLTEyLTEwICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVtb3ZlIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlIGltcGxlbWVudGF0aW9ucyBmcm9tIERS
VApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA5YWRhNzg2YTIwZmUzMjM0Y2UwYzIwODhmNTg4MjY4
YWRhZTdmYWVjLi4wNGE4NWUzNjNjMTYwMWQ5ZTY2NTc1MjU5YzY5Y2EwNzYzZDA0MDYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vUGxhdGZvcm0uZ3lwaQpAQCAtMTAwLDcgKzEwMCw4IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlByaXZhdGVPd25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJU
Q0NvbmZpZ3VyYXRpb24uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0Rh
dGFDaGFubmVsLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDSUNFQ2FuZGlkYXRlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGRlZmJkYmM5ZjlmNGEyNzA1YmNjZDNjNTg0NzQwZWJkZTM1ZDE3Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ0RhdGFDaGFubmVs
X2gKLSNkZWZpbmUgV2ViUlRDRGF0YUNoYW5uZWxfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgi
Ci0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbCB7Ci1wdWJsaWM6
Ci0gICAgY2xhc3MgRXh0cmFEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4
dHJhRGF0YSgpIHsgfQotICAgIH07Ci0KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBS
ZWFkeVN0YXRlQ29ubmVjdGluZyA9IDAsCi0gICAgICAgIFJlYWR5U3RhdGVPcGVuID0gMSwKLSAg
ICAgICAgUmVhZHlTdGF0ZUNsb3NpbmcgPSAyLAotICAgICAgICBSZWFkeVN0YXRlQ2xvc2VkID0g
MywKLSAgICB9OwotCi0gICAgV2ViUlRDRGF0YUNoYW5uZWwoKSB7IH0KLSAgICBXZWJSVENEYXRh
Q2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsg
fQotICAgIH5XZWJSVENEYXRhQ2hhbm5lbCgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViUlRDRGF0
YUNoYW5uZWwmIG9wZXJhdG9yPShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgb3RoZXIpCi0gICAg
ewotICAgICAgICBhc3NpZ24ob3RoZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJl
bCwgYm9vbCByZWxpYWJsZSk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0
IFdlYlJUQ0RhdGFDaGFubmVsJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
LSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQot
Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgcmVsaWFibGUoKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgZXJyb3IoKSBjb25zdDsKLQotICAgIC8vIEV4dHJhIGRhdGEg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViUlRDRGF0YUNoYW5uZWwuCi0gICAgLy8gSWYgbm9uLW51
bGwsIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIG9iamVj
dCBpcyBkZXN0cm95ZWQuCi0gICAgLy8gU2V0dGluZyB0aGUgZXh0cmEgZGF0YSBwb2ludGVyIHdp
bGwgY2F1c2UgYW55IGV4aXN0aW5nIG5vbi1udWxsCi0gICAgLy8gZXh0cmEgZGF0YSBwb2ludGVy
IHRvIGJlIGRlbGV0ZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJSVENEYXRhQ2hhbm5lbChjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiYpOwot
ICAgIFdlYlJUQ0RhdGFDaGFubmVsKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciop
OwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+KCkgY29uc3Q7Ci0gICAgb3BlcmF0b3IgV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yKigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0
cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IG1fcHJpdmF0ZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUlRDRGF0YUNoYW5uZWxfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjExZDhhYzk2ZTA2YjE5MzJkNGE1ZDdkNzA5ZmFh
YmQwMmNmYjE3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAorI2RlZmluZSBXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDsKKworY2xhc3Mg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBXZWJTdHJp
bmcgbGFiZWwoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSA9IDA7CisgICAg
dmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MmFiNGZmNDUxOWEwZTA3ODBiNjYxYzFiZDkyNzY4MTNmOWI2OGE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQgewor
cHVibGljOgorICAgIGVudW0gUmVhZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVDb25uZWN0
aW5nID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAorICAgICAgICBSZWFkeVN0YXRl
Q2xvc2luZyA9IDIsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAorICAgIH07CisKKyAg
ICB2aXJ0dWFsIH5XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgV2ViU3RyaW5nJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmF3RGF0YShjb25zdCBjaGFyKiwg
c2l6ZV90KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgY29u
c3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXgg
MzE3MDIxNDEyNDMwYjMzMWJhMzI1OTUwY2UyNDA1ODdiYzIzZGY4Yi4uMjdkMGVlNjcwMTgzYWUw
MmVjYWI1ZjQ4ZTMxY2EyNmZlNzg3YjFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTWVkaWFDb25zdHJh
aW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIGNsYXNzIFdlYlJUQ0NvbmZp
Z3VyYXRpb247Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbDsKK2NsYXNzIFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNzIFdlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsK
QEAgLTYyLDEzICs2Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFt
KGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKICAgICAvLyBGSVhNRTogUmVt
b3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBjbGllbnRzIGhhdmUgY2hhbmdlZC4KICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0JikgeyB9Cisg
ICAgdmlydHVhbCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURhdGFDaGFubmVsKGNv
bnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVsCi0gICAgdmly
dHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYlJU
Q0RhdGFDaGFubmVsJiwgY29uc3QgV2ViU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmLCBjb25zdCBj
aGFyKiwgc2l6ZV90KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZURh
dGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJikgeyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCmluZGV4IGNk
MDZjMGU4NzlkMDliNzQ5ZDJlMjY1NjgzNDg0YjRjMDQ5MTkzMjMuLjU0YWMzNzZjNDM2Zjc0ZmNm
MjliYzJlYzcyYmM4MGM2ZGE1Nzc2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsOworY2xhc3Mg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlOwogCiBj
bGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewpAQCAtODEsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlDRVN0YXRlKElDRVN0YXRlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0
cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlciopIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGYzZGNhNGE3NGQ2MWE5ZDVmZTM2NjA4NmE1ZjllNzI4N2E1NTEwOGUuLmM1
MmJjMDJhNDg0YjY1NzFhZGFmZGI0ODFiZGQ3MTIwZTM2ZGU1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xOTkzLDcgKzE5OTMsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKLSAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDEwMDlhMjdlOTZlZjM4ZWIxOGY2MjcwOTc1OTJmZGZiZGFlZTViYjMuLmYwNTI3NjJj
MWVkYjAxNjVhN2YyMDI5Y2E5YmFiYmNhMmRjYTg2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNTY2MCw5ICs1NjYwLDkgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZXNRdWVyeUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENDb25maWd1cmF0aW9uLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCBc
CisgICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIFwKKyAgICAgICAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggXAorICAgICAgICBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDA3ZTI5MmVhMDVj
YTAwYWQ1ZWE5M2NjYjIxOTZjOGQ1OWUzMGUyYmUuLmNiMDgwZjVlZTQxZTVhYjRmMGI4ZDMyNmUw
MDMwODgzMzZjODhmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2
ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgpAQCAtMzksNjAgKzQwLDU3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRDRGF0
YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVs
aWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRD
RGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgYm9vbCByZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJU
KGhhbmRsZXIpOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gZGF0YUNoYW5uZWwgPSBjcmVh
dGUoY29udGV4dCwgaGFuZGxlciwgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUobGFi
ZWwsIHJlbGlhYmxlKSk7Ci0gICAgaWYgKCFoYW5kbGVyLT5vcGVuRGF0YUNoYW5uZWwoZGF0YUNo
YW5uZWwtPmRlc2NyaXB0b3IoKSkpIHsKKyAgICBPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
PiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEYXRhQ2hhbm5lbChsYWJl
bCwgcmVsaWFibGUpOworICAgIGlmICghaGFuZGxlcikgewogICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIGRhdGFDaGFu
bmVsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNv
bnRleHQsIGhhbmRsZXIucmVsZWFzZSgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVmUHRyPFJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcj4gZGVzY3JpcHRvcikKK1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KGhhbmRsZXIpOwotICAgIEFTU0VSVChkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIsIGRlc2NyaXB0b3IpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIpKTsKIH0K
IAotUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwgUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCitSVENEYXRhQ2hhbm5lbDo6UlRD
RGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKKyAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAgICwgbV9zdG9wcGVk
KGZhbHNlKQotICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBtX3JlYWR5U3Rh
dGUoUmVhZHlTdGF0ZUNvbm5lY3RpbmcpCiAgICAgLCBtX2JpbmFyeVR5cGUoQmluYXJ5VHlwZUFy
cmF5QnVmZmVyKQotICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBtX3NjaGVkdWxlZEV2
ZW50VGltZXIodGhpcywgJlJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQp
CiB7Ci0gICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9oYW5kbGVyLT5z
ZXRDbGllbnQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsOjp+UlRDRGF0YUNoYW5uZWwoKQog
ewotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOwogfQogCiBTdHJpbmcgUlRDRGF0YUNo
YW5uZWw6OmxhYmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5sYWJlbCgp
OworICAgIHJldHVybiBtX2hhbmRsZXItPmxhYmVsKCk7CiB9CiAKIGJvb2wgUlRDRGF0YUNoYW5u
ZWw6OnJlbGlhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5yZWxpYWJs
ZSgpOworICAgIHJldHVybiBtX2hhbmRsZXItPmlzUmVsaWFibGUoKTsKIH0KIAogU3RyaW5nIFJU
Q0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fZGVzY3Jp
cHRvci0+cmVhZHlTdGF0ZSgpKSB7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6
OlJlYWR5U3RhdGVDb25uZWN0aW5nOgorICAgIHN3aXRjaCAobV9yZWFkeVN0YXRlKSB7CisgICAg
Y2FzZSBSZWFkeVN0YXRlQ29ubmVjdGluZzoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
Y29ubmVjdGluZyIpOwotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0
YXRlT3BlbjoKKyAgICBjYXNlIFJlYWR5U3RhdGVPcGVuOgogICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJvcGVuIik7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5
U3RhdGVDbG9zaW5nOgorICAgIGNhc2UgUmVhZHlTdGF0ZUNsb3Npbmc6CiAgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImNsb3NpbmciKTsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcjo6UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICBjYXNlIFJlYWR5U3RhdGVDbG9zZWQ6CiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImNsb3NlZCIpOwogICAgIH0KIApAQCAtMTAyLDcgKzEw
MCw3IEBAIFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHVuc2ln
bmVkIGxvbmcgUlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9kZXNjcmlwdG9yLT5idWZmZXJlZEFtb3VudCgpOworICAgIHJldHVybiBtX2hhbmRs
ZXItPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKIFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6YmluYXJ5
VHlwZSgpIGNvbnN0CkBAIC0xMjksMTEgKzEyNywxMSBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpz
ZXRCaW5hcnlUeXBlKGNvbnN0IFN0cmluZyYgYmluYXJ5VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkgIT0gUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3BlbikgeworICAgIGlmIChtX3JlYWR5
U3RhdGUgIT0gUmVhZHlTdGF0ZU9wZW4pIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1faGFuZGxlci0+c2VuZFN0cmlu
Z0RhdGEoZGVzY3JpcHRvcigpLCBkYXRhKSkgeworICAgIGlmICghbV9oYW5kbGVyLT5zZW5kU3Ry
aW5nRGF0YShkYXRhKSkgewogICAgICAgICAvLyBGSVhNRTogRGVjaWRlIHdoYXQgdGhlIHJpZ2h0
IGV4Y2VwdGlvbiBoZXJlIGlzLgogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgfQpAQCAt
MTQxLDcgKzEzOSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBk
YXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBwcnBEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkgIT0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpSZWFkeVN0YXRlT3BlbikgeworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZU9w
ZW4pIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE1NCw3ICsxNTIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IHBycERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgY29u
c3QgY2hhciogZGF0YVBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS0+ZGF0
YSgpKTsKIAotICAgIGlmICghbV9oYW5kbGVyLT5zZW5kUmF3RGF0YShkZXNjcmlwdG9yKCksIGRh
dGFQb2ludGVyLCBkYXRhTGVuZ3RoKSkgeworICAgIGlmICghbV9oYW5kbGVyLT5zZW5kUmF3RGF0
YShkYXRhUG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKICAgICAgICAgLy8gRklYTUU6IERlY2lkZSB3
aGF0IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogICAgIH0KQEAgLTE3NywxOSArMTc1LDIxIEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmNsb3Nl
KCkKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2hhbmRsZXIt
PmNsb3NlRGF0YUNoYW5uZWwoZGVzY3JpcHRvcigpKTsKKyAgICBtX2hhbmRsZXItPmNsb3NlKCk7
CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUlRD
RGF0YUNoYW5uZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSBuZXdTdGF0ZSkKIHsK
LSAgICBpZiAobV9zdG9wcGVkKQorICAgIGlmIChtX3N0b3BwZWQgfHwgbV9yZWFkeVN0YXRlID09
IFJlYWR5U3RhdGVDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAobV9kZXNj
cmlwdG9yLT5yZWFkeVN0YXRlKCkpIHsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjo6UmVhZHlTdGF0ZU9wZW46CisgICAgbV9yZWFkeVN0YXRlID0gbmV3U3RhdGU7CisKKyAgICBz
d2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgUmVhZHlTdGF0ZU9wZW46CiAgICAgICAg
IHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICBjYXNlIFJlYWR5U3RhdGVDbG9z
ZWQ6CiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRl
Q2hhbmdlZCgpCiAgICAgfQogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJyaXZlZChj
b25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlU3RyaW5n
RGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRhdGFBcnJp
dmVkKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUodGV4dCkpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJy
aXZlZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgUlRDRGF0YUNo
YW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJyaXZlZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6ZXJyb3IoKQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlkRGV0ZWN0
RXJyb3IoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMCwx
MSArMjMwLDYgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZXJyb3IoKQogICAgIHNjaGVkdWxlRGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKIH0KIAotUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBSVENEYXRhQ2hhbm5lbDo6
ZGVzY3JpcHRvcigpCi17Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsKLX0KLQogY29u
c3QgQXRvbWljU3RyaW5nJiBSVENEYXRhQ2hhbm5lbDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JSVENEYXRhQ2hhbm5lbDsKQEAg
LTI0OCw4ICsyNDMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEYXRhQ2hhbm5lbDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzdG9w
KCkKIHsKICAgICBtX3N0b3BwZWQgPSB0cnVlOwotICAgIG1faGFuZGxlciA9IDA7Ci0gICAgbV9k
ZXNjcmlwdG9yLT5zZXRDbGllbnQoMCk7CisgICAgbV9oYW5kbGVyLT5zZXRDbGllbnQoMCk7CiAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IGJlOTJjYmU1
MjcyYWNiYjVjOTdkYjdmYmI1ODNjMDMxYmZiMWY1NGQuLmY4NTVjOTBlNDE5NmU1MmIxOTBhNTk4
MDg1M2IzZjEwNmEzMTBhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTI3LDI4ICsyNywyNiBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgi
CisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CisKIGNsYXNzIEJsb2I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CiBjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKLWNsYXNzIFJUQ0RhdGFDaGFubmVsIDogcHVibGljIFJl
ZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQgeworY2xhc3MgUlRDRGF0YUNoYW5uZWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVs
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ciosIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KTsKICAgICB+UlRDRGF0YUNoYW5uZWwo
KTsKIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotCiAgICAgYm9vbCByZWxpYWJsZSgpIGNv
bnN0OwotCiAgICAgU3RyaW5nIHJlYWR5U3RhdGUoKSBjb25zdDsKLQogICAgIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIAogICAgIFN0cmluZyBiaW5hcnlUeXBlKCkgY29u
c3Q7CkBAIC02Niw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGNsb3NlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1l
c3NhZ2UpOwogCi0gICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKCk7CiAg
ICAgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldApAQCAtNzcsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD46OmRlcmVmOwogCiBw
cml2YXRlOgotICAgIFJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cj4pOworICAgIFJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3du
UHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOwogCiAgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZp
cmVkKFRpbWVyPFJUQ0RhdGFDaGFubmVsPiopOwpAQCAtOTAsMjQgKzg3LDIzIEBAIHByaXZhdGU6
CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIC8vIFJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6T3duZXIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5n
ZWQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBz
aXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIE9WRVJSSURFOworICAg
IC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICBPd25QdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPiBtX2hhbmRsZXI7CiAKICAgICBib29sIG1fc3RvcHBlZDsKLSAg
ICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CiAKKyAgICBS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBlbnVtIEJpbmFyeVR5cGUgewogICAgICAgICBC
aW5hcnlUeXBlQmxvYiwKICAgICAgICAgQmluYXJ5VHlwZUFycmF5QnVmZmVyCiAgICAgfTsKICAg
ICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKIAotICAgIC8vIE5vdCBvd25lZCBieSB0aGlzIGNs
YXNzLgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogbV9oYW5kbGVyOwotCiAgICAgVGlt
ZXI8UlRDRGF0YUNoYW5uZWw+IG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsKICAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50PiA+IG1fc2NoZWR1bGVkRXZlbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NzYyMzkwMDdiOTE5ODA1MWQ0OGI1N2I5ZTJkYTM5NmI2ZmIyMWRhMS4uNDQ5NjZjYzRlM2NmNWM2
YzM5YjE4N2EzM2EwODFmYTFiMGIwYmY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNo
YW5uZWwuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEV2ZW50LmgiCisjaW5jbHVkZSAiUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRDRXJyb3JDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IuaCIKQEAgLTUzOSwxNCArNTQwLDE0IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRp
ZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyCiAg
ICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkp
OwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQ
YXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gY2hhbm5lbERlc2NyaXB0b3IpCit2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzT3duUHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gaGFuZGxlcikKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAobV9yZWFkeVN0
YXRlID09IFJlYWR5U3RhdGVDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxS
VENEYXRhQ2hhbm5lbD4gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5kbGVyLmdldCgpLCBjaGFubmVsRGVzY3JpcHRvcik7
CisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fZGF0YUNoYW5u
ZWxzLmFwcGVuZChjaGFubmVsKTsKIAogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChSVENEYXRh
Q2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIGZhbHNl
LCBmYWxzZSwgY2hhbm5lbC5yZWxlYXNlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCBjMzFlZDFhNTlh
NWQ3ZTI1ODAwNDkwNTllYTBkZmQxMmY5MGMxZGUzLi4xZGQwODU3N2IxZTc0MWM1MjJmMTA4Y2Fi
NzZlZmUxZDU4YmFmYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1v
dGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFu
bmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPikgT1ZFUlJJREU7CiAKICAgICAv
LyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGMwMjE4YWE2MTU1Y2U0
NjczZDJkOGIxMjM0YWViODFkNzQzMzUzOC4uNDY4ZmFjYTljNWEzMWJlNGNhN2JjOGNjZjMyZGQ1
ZDk1MWU3MjI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDMwMyw4ICs0MzAzLDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApAQCAtNDMx
Niw2ICs0MzE2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENWb2lk
UmVxdWVzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9N
ZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJD
aHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbW9jay9E
ZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcCcsCkBAIC03MTEzLDcgKzcxMTUsNiBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVx
dWVzdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUHJl
cmVuZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJS
VENDb25maWd1cmF0aW9uLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViUlRDSUNFQ2FuZGlkYXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlv
blJlcXVlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM5YTY5MTJjMTU0NmU4ZGM1MzgzOTcxODg2MjUwYTBkMjVjNTk4YTEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbC5oPgotCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgRXh0cmFEYXRhQ29udGFpbmVyIDogcHVibGljIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcjo6RXh0cmFEYXRhIHsKLXB1YmxpYzoKLSAgICBFeHRyYURhdGFDb250YWluZXIoV2Vi
UlRDRGF0YUNoYW5uZWw6OkV4dHJhRGF0YSogZXh0cmFEYXRhKSA6IG1fZXh0cmFEYXRhKFdURjo6
YWRvcHRQdHIoZXh0cmFEYXRhKSkgeyB9Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFE
YXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4dHJhRGF0YS5nZXQoKTsgfQotCi1wcml2YXRl
OgotICAgIE93blB0cjxXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhPiBtX2V4dHJhRGF0YTsK
LX07Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpXZWJSVENEYXRhQ2hhbm5lbChjb25zdCBQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4mIGRhdGFDaGFubmVsKQotICAgIDogbV9wcml2
YXRlKGRhdGFDaGFubmVsKQotewotfQotCi1XZWJSVENEYXRhQ2hhbm5lbDo6V2ViUlRDRGF0YUNo
YW5uZWwoUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBkYXRhQ2hhbm5lbCkKLSAgICA6IG1fcHJp
dmF0ZShkYXRhQ2hhbm5lbCkKLXsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6aW5pdGlh
bGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotewotICAgIG1fcHJp
dmF0ZSA9IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3JlYXRlKGxhYmVsLCByZWxpYWJsZSk7
Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmFzc2lnbihjb25zdCBXZWJSVENEYXRhQ2hh
bm5lbCYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwotfQotCi12
b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpyZXNldCgpCi17Ci0gICAgbV9wcml2YXRlLnJlc2V0KCk7
Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcj4oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpvcGVyYXRvciBXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
OwotfQotCi1XZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhKiBXZWJSVENEYXRhQ2hhbm5lbDo6
ZXh0cmFEYXRhKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpFeHRyYURhdGE+IGRhdGEgPSBtX3ByaXZhdGUtPmV4dHJhRGF0YSgpOwotICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4dHJhRGF0YUNv
bnRhaW5lcio+KGRhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsKLX0KLQotdm9pZCBXZWJSVENEYXRh
Q2hhbm5lbDo6c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0cmFEYXRhKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBFeHRyYURhdGFDb250YWluZXIoZXh0cmFE
YXRhKSkpOwotfQotCi1XZWJTdHJpbmcgV2ViUlRDRGF0YUNoYW5uZWw6OmxhYmVsKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5sYWJlbCgp
OwotfQotCi1ib29sIFdlYlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFpc051bGwoKSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVsaWFibGUoKTsKLX0K
LQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6c2V0QnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9u
ZyBidWZmZXJlZEFtb3VudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICBt
X3ByaXZhdGUtPnNldEJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKLX0KLQotdm9pZCBX
ZWJSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSBzdGF0ZSkgY29u
c3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICBtX3ByaXZhdGUtPnJlYWR5U3RhdGVD
aGFuZ2VkKHN0YXRpY19jYXN0PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZT4o
c3RhdGUpKTsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQoY29uc3Qg
V2ViU3RyaW5nJiBkYXRhKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1f
cHJpdmF0ZS0+ZGF0YUFycml2ZWQoZGF0YSk7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6
OmRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKSBjb25zdAot
ewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1fcHJpdmF0ZS0+ZGF0YUFycml2ZWQoZGF0
YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmVycm9yKCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICBtX3ByaXZhdGUtPmVycm9yKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQxNTZkNjZjNDVhMTYwY2MwMWRkZmVkNjZlMjViMTcyZDBjZTRkY2YuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcj4gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcihsYWJlbCwgcmVsaWFibGUpKTsKLX0KLQotUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoY29uc3QgU3Ry
aW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKLSAgICA6IG1fY2xpZW50KDApCi0gICAgLCBtX2xh
YmVsKGxhYmVsKQotICAgICwgbV9yZWxpYWJsZShyZWxpYWJsZSkKLSAgICAsIG1fcmVhZHlTdGF0
ZShSZWFkeVN0YXRlQ29ubmVjdGluZykKLSAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKLXsKLX0K
LQotUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKCkK
LXsKLX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnJlYWR5U3RhdGVDaGFuZ2Vk
KFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9IFJl
YWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gcmVhZHlTdGF0ZSkgewot
ICAgICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwotICAgICAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgICAgICBtX2NsaWVudC0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKLSAgICB9Ci19Ci0K
LXZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcm
IGRhdGEpCi17Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsK
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhQXJyaXZlZChkYXRhKTsK
LX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmRhdGFBcnJpdmVkKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAgIEFTU0VSVChtX3JlYWR5U3RhdGUg
IT0gUmVhZHlTdGF0ZUNsb3NlZCk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+ZGF0YUFycml2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLXZvaWQgUlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yOjplcnJvcigpCi17Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFk
eVN0YXRlQ2xvc2VkKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5lcnJv
cigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWFjYjRhYzNiY2U5ZTY1ZjUxZDgwZDI3NzlmZDAyZGMyOTg5NjAzZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yX2gKLSNkZWZpbmUgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yX2gKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JD
bGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvckNs
aWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZXJyb3IoKSA9IDA7Ci19OwotCi1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IHsKLXB1Ymxp
YzoKLSAgICBjbGFzcyBFeHRyYURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxFeHRyYURhdGE+IHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07Ci0K
LSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBSZWFkeVN0YXRlQ29ubmVjdGluZyA9IDAs
Ci0gICAgICAgIFJlYWR5U3RhdGVPcGVuID0gMSwKLSAgICAgICAgUmVhZHlTdGF0ZUNsb3Npbmcg
PSAyLAotICAgICAgICBSZWFkeVN0YXRlQ2xvc2VkID0gMywKLSAgICB9OwotCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7Ci0gICAgdmlydHVhbCB+UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yKCk7Ci0KLSAgICBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoUlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLQot
ICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAg
Ym9vbCByZWxpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsaWFibGU7IH0KLQotICAgIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotCi0gICAg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWRB
bW91bnQ7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQpIHsgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OyB9Ci0KLSAgICB2
b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3RhdGUpOwotICAgIHZvaWQgZGF0YUFycml2ZWQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90
KTsKLSAgICB2b2lkIGVycm9yKCk7Ci0KLSAgICBQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYURhdGE7IH0KLSAgICB2b2lkIHNldEV4dHJhRGF0
YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0gZXh0cmFE
YXRhOyB9Ci0KLXByaXZhdGU6Ci0gICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpOwotCi0gICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yQ2xpZW50KiBtX2NsaWVudDsKLSAgICBTdHJpbmcgbV9sYWJlbDsKLSAgICBib29sIG1fcmVs
aWFibGU7Ci0gICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgdW5zaWduZWQgbG9uZyBt
X2J1ZmZlcmVkQW1vdW50OwotICAgIFJlZlB0cjxFeHRyYURhdGE+IG1fZXh0cmFEYXRhOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKLQotI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1NDgxYjAyMjY1NDMwZjBjZTNiMzI5ZDg4ZjE1Nzg2ZGRkYTg3
YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCisjZGVmaW5lIFJUQ0RhdGFDaGFubmVs
SGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlcigpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSA9IDA7CisK
KyAgICB2aXJ0dWFsIFN0cmluZyBsYWJlbCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWxp
YWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5N2EwMzI2OTM3ZDRjYWI0ODA2Yzk2Y2VhNTQwMjliODQyNTY4YWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitwdWJsaWM6
CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAw
LAorICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zaW5n
ID0gMiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisgICAgfTsKKworICAgIHZpcnR1
YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4
IDg1MDlmMmU5NDI3NTY4YmE2Mjc5OTgwZGEzNjBjNjFmMWE0NWM0NTMuLjkwMGIwNDBmZjliNGFl
YjhjYjVlNDg0MWFhOGY2ZmYzOTA4MThiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcApAQCAtMzQsMTM0ICszNCwxNCBAQAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgiCiAKLSNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIK
LSNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogCi0vLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMgYmVsb3cg
Zm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBkZWZhdWx0
LgotCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSA6IHB1YmxpYyBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIgewotcHVibGljOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckR1bW15KFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotICAgIHZpcnR1YWwgflJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlh
bGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+KSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBh
c3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3Jp
cHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I+IHJlbW90ZURlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0
ZUljZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkSWNlQ2FuZGlkYXRlKFBhc3NS
ZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIFJUQ0RhdGFD
aGFubmVsLgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0
cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1QYXNzT3duUHRyPFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teShjbGllbnQpKTsKLX0KLQotUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyRHVtbXk6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQoY2xpZW50
KQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci19Ci0KLVJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckR1bW15Ojp+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoKQotewotfQotCi1ib29sIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29u
ZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpjcmVhdGVP
ZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+KQotewotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckR1bW15OjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLX0KLQotdm9pZCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJU
Q1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
PikKLXsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0UmVtb3Rl
RGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pCi17Ci19Ci0KLVBhc3NSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6Omxv
Y2FsRGVzY3JpcHRpb24oKQotewotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
OjpyZW1vdGVEZXNjcmlwdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpyZW1vdmVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KQotewotfQotCi1ib29sIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojp1cGRhdGVJY2UoUGFzc1JlZlB0cjxSVENDb25m
aWd1cmF0aW9uPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmFkZEljZUNh
bmRpZGF0ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KQotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6Z2V0
U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KQotewotfQotCi12b2lkIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15OjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJEdW1teTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yPikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRSYXdEYXRhKFBhc3NS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVt
bXk6OmNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
KQorUGFzc093blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6Y3JlYXRlKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopCiB7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKaW5kZXggZmJhNDU4ODdlNjc5OTY1NmYyNjYzN2U0ZWZkZWE0ZTk2NTY2
MDMyZC4uZDhmOTZkMzBmMzFlNmQxOTU5N2UzOGY1MWZiOWI5ODQ3MDU3MjdlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKLWNs
YXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxl
cjsKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7CiBjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
OwpAQCAtNjksMTEgKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQ
YXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
ID0gMDsKIAotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0
YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0
YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IGNoYXIqLCBzaXpl
X3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKyAgICAvLyBSVENEYXRhQ2hhbm5lbAorICAg
IHZpcnR1YWwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFu
bmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpID0gMDsKIAogcHJvdGVjdGVk
OgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaAppbmRleCBhNjdhNGI4ZTBlYjNiYWEyOTcyMGIwMmU5NGEwMTY5
ZDFjMjkxODhkLi5iZGI4ZTYyOGVhOWM5NDVmOTdkYTA4YmNkYzc3ODZmZmZhNDEzNDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFz
cyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7
CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogCiBjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQgewpAQCAtODYsOSArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKEljZVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciopID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFz
c093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJD
aHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzMDE3YTM1ZDYxZjVmNzM3MWMxYWM0M2Y0YWEwNjBm
MDJkZDliNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcApAQCAtMCww
ICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtLmgiCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZShXZWJL
aXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKHdlYkhhbmRsZXIpKTsK
K30KKworUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiB3ZWJIYW5kbGVyKQor
ICAgIDogbV93ZWJIYW5kbGVyKGFkb3B0UHRyKHdlYkhhbmRsZXIpKQorICAgICwgbV9jbGllbnQo
MCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06On5SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3dlYkhhbmRsZXItPnNldENsaWVudChtX2Ns
aWVudCA/IHRoaXMgOiAwKTsKK30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9t
aXVtOjpsYWJlbCgpCit7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+bGFiZWwoKTsKK30KKwor
Ym9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6aXNSZWxpYWJsZSgpCit7CisgICAg
cmV0dXJuIG1fd2ViSGFuZGxlci0+aXNSZWxpYWJsZSgpOworfQorCit1bnNpZ25lZCBsb25nIFJU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpidWZmZXJlZEFtb3VudCgpCit7CisgICAgcmV0
dXJuIG1fd2ViSGFuZGxlci0+YnVmZmVyZWRBbW91bnQoKTsKK30KKworYm9vbCBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiBkYXRhKQor
eworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNlbmRTdHJpbmdEYXRhKGRhdGEpOworfQorCiti
b29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5zZW5kUmF3
RGF0YShkYXRhLCBzaXplKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1
bTo6Y2xvc2UoKQoreworICAgIG1fd2ViSGFuZGxlci0+Y2xvc2UoKTsKK30KKwordm9pZCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpIGNvbnN0Cit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShzdGF0aWNf
Y2FzdDxSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGU+KHN0YXRlKSk7Cit9
CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmRpZFJlY2VpdmVTdHJpbmdE
YXRhKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRhKSBjb25zdAoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKGRhdGEpOworfQor
Cit2b2lkIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsKK30KKwor
dm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkRGV0ZWN0RXJyb3IoKSBjb25z
dAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZERldGVjdEVycm9y
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMzY0OTczY2ExZThlOWIwMmI4NDlmYTRmM2ViMDI0YWE0MDMw
ZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVt
X2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW1faAorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgorI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bSA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBXZWJLaXQ6OldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bSgp
OworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU3RyaW5nIGxhYmVsKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVJl
YWR5U3RhdGUoUmVhZHlTdGF0ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpIGNv
bnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNocm9taXVtKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKik7CisKKyAgICBP
d25QdHI8V2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IG1fd2ViSGFuZGxlcjsKKyAg
ICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlm
IC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAppbmRleCBmNDkwZTM0
ODBiNWUzN2EzODgwZGE3MGU5OTUzZDdmOGVkMDgxMDMxLi41N2ZhMGZkZTZhOTVmZWQ2Mzk3MGI0
YjMzMDAyN2UzOWJiYWRlMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0zNiw3ICszNiw4IEBACiAKICNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgot
I2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0RhdGFD
aGFubmVsSGFuZGxlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgogI2luY2x1
ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAKICNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5o
PgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDSUNF
Q2FuZGlkYXRlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg+CkBA
IC0xNDgsMjQgKzE0OSwxMyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4gcmVxdQogICAgIG1fd2ViSGFu
ZGxlci0+Z2V0U3RhdHMocmVxdWVzdCk7CiB9CiAKLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4gZGF0YUNoYW5uZWwpCitQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4g
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0
IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCiB7Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxl
ci0+b3BlbkRhdGFDaGFubmVsKGRhdGFDaGFubmVsKTsKLX0KLQotYm9vbCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsLCBjb25zdCBTdHJpbmcmIGRhdGEpCi17Ci0gICAg
cmV0dXJuIG1fd2ViSGFuZGxlci0+c2VuZFN0cmluZ0RhdGEoZGF0YUNoYW5uZWwsIGRhdGEpOwot
fQotCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShQ
YXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAgIHJldHVybiBtX3dlYkhhbmRsZXIt
PnNlbmRSYXdEYXRhKGRhdGFDaGFubmVsLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLX0KKyAgICBXZWJL
aXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxlciA9IG1fd2ViSGFuZGxlci0+
Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIHJlbGlhYmxlKTsKKyAgICBpZiAoIXdlYkhhbmRsZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtOjpjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPiBkYXRhQ2hhbm5lbCkKLXsKLSAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5jbG9zZURh
dGFDaGFubmVsKGRhdGFDaGFubmVsKTsKKyAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVyKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bTo6c3RvcCgpCkBAIC0yMDgsOSArMTk4LDEwIEBAIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBX
ZWJLaXQ6OldlYk1lCiAgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFD
aGFubmVsJiBkYXRhQ2hhbm5lbCkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21p
dW06OmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKiB3ZWJIYW5kbGVyKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5l
bChkYXRhQ2hhbm5lbCk7CisgICAgQVNTRVJUKHdlYkhhbmRsZXIpOworICAgIG1fY2xpZW50LT5k
aWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6Y3Jl
YXRlKHdlYkhhbmRsZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXgg
YjUyYjdiMTZiZjMwNjU4MWQzNzRjNzJhNTZlZmYyNDczMWEwYjBlNS4uZDU5Y2VkMzNhNjM4OWI2
OTQwOGM3MGVhYWEzM2IxY2E5MmI3ZmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9S
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC00MiwxMiArNDIsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFz
cyBXZWJSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CisKIGNsYXNz
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtIDogcHVibGljIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciwgcHVibGljIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJv
bWl1bShSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKQEAgLTY4LDEzICs2OSw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJU
Q1N0YXRzUmVxdWVzdD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc093blB0cjxSVENEYXRh
Q2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJv
b2wgcmVsaWFibGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdE
YXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+KSBPVkVSUklERTsKLQogICAgIC8vIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlh
dGlvbk5lZWRlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZUlDRUNh
bmRpZGF0ZShjb25zdCBXZWJLaXQ6OldlYlJUQ0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOwpAQCAt
ODMsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlDRVN0YXRl
KFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6
OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwo
Y29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlciopIE9WRVJSSURFOwogCiAgICAgc3RhdGljIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyKiB0b1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAppbmRleCAyM2Q2NmJkMWNkYWU5MThiOTM2NTg5NTlmYWE5YWUxZWUz
NmQzOTNhLi5mYmE0OTJmZDQ0MmM2N2JhYWVlMWU5MTAyNjJiNzMxMzU5Yjg2ZmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApA
QCAtNjUsNyArNjUsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5o
IgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgpAQCAtMTE4LDggKzExOCw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dl
YkZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmg+Ci0jaW5jbHVkZSA8cHVibGlj
L1dlYlJUQ0RhdGFDaGFubmVsLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlZmVycmVyUG9saWN5Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlNjcm9sbGJhci5oPgpAQCAtNTg2LDEwICs1ODUsMTAgQEAgQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRVN0
YXRlTmV3LCBSVEMKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZUdhdGhlcmluZywgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50OjpJY2VTdGF0ZUdhdGhlcmluZyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFU3RhdGVXYWl0aW5n
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OkljZVN0YXRlV2FpdGluZyk7CiAKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVD
b25uZWN0aW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0aW5n
KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuKTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVD
bG9zaW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zaW5nKTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVD
bG9zZWQsIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6
UmVhZHlTdGF0ZUNvbm5lY3RpbmcsIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlT
dGF0ZUNvbm5lY3RpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2luZywgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2luZyk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0
ZUNsb3NlZCwgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2VkKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZTJjYTA5OTU2ZDYzNzU2OGU3ZWE5
Mjg2MTdiNzk2YWNjZjJiODZhLi42MmVmYWQyMjA2MmQ3ZmVmNTk3YWUxNTViYmY0MGU5ZDc5MmZm
NjRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTItMTItMTEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRhdGEgY2hh
bm5lbCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8gYSBoYW5kbGVyIHBhdHRlcm4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBtb2NrcyB0byBiZSBh
YmxlIHRvIHRlc3QgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoRGF0YUNo
YW5uZWxSZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNr
OjpEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIpOgorICAgICAgICAoTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKE1vY2tXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChSVENQZWVyQ29u
bmVjdGlvblJlYWR5U3RhdGVUYXNrOjpSVENQZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrKToK
KyAgICAgICAgKFJlbW90ZURhdGFDaGFubmVsVGFzazo6UmVtb3RlRGF0YUNoYW5uZWxUYXNrKToK
KyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFDaGFu
bmVsKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3ApOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgor
CiAyMDEyLTEyLTEwICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE1lbW9yeSBpbnN0cnVtZW50YXRpb246IG1ha2Ugc3VyZSBlYWNoIGVkZ2UgaXMgcmVw
b3J0ZWQgb25seSBvbmNlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpp
bmRleCBiNmEwM2EwNzMyZDkyZmE5NTZhNTFhY2JkNWY3OGUyYzgyNDMzZjIxLi4zYmUzZjJjYzcy
MTAwOWFhN2FjYmZjZWQ4NzY5ODc1ZTMwMjQwNDVmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTI0LDYgKzI0LDggQEAKICAgICAgICAgICAgICdjaHJvbWl1
bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9N
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9Nb2NrV2ViU3BlZWNoUmVjb2duaXplci5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjg0ZDg1ZGU3ZjhlMmYzY2M0Y2IwZTIyMDdmYjVkNmZhMjYxOGFk
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJUYXNrLmgi
CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXI7CisKK2NsYXNzIERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sgOiBw
dWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPiB7CitwdWJs
aWM6CisgICAgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayhNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyKiBvYmplY3QsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogZGF0YUNoYW5u
ZWxDbGllbnQsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBzdGF0
ZSkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
KG9iamVjdCkKKyAgICAgICAgLCBtX2RhdGFDaGFubmVsQ2xpZW50KGRhdGFDaGFubmVsQ2xpZW50
KQorICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fZGF0YUNoYW5uZWxD
bGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUobV9zdGF0ZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9kYXRhQ2hhbm5lbENsaWVudDsK
KyAgICBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgbV9zdGF0ZTsK
K307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKFdlYlN0cmluZyBsYWJlbCwgYm9vbCBy
ZWxpYWJsZSkKKyAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX2xhYmVsKGxhYmVsKQorICAgICwg
bV9yZWxpYWJsZShyZWxpYWJsZSkKK3sKK30KKwordm9pZCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBw
b3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayh0aGlzLCBtX2NsaWVudCwgV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlT3BlbikpOworfQorCit1bnNp
Z25lZCBsb25nIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmJ1ZmZlcmVkQW1vdW50KCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJTdHJpbmcmIGRhdGEpCit7CisgICAgYXNzZXJ0KG1f
Y2xpZW50KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoZGF0YSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2Vu
ZFJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgYXNzZXJ0KG1f
Y2xpZW50KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YSwgc2l6ZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2xvc2UoKQoreworICAgIGFzc2VydChtX2NsaWVudCk7CisgICAgcG9zdFRhc2sobmV3IERhdGFD
aGFubmVsUmVhZHlTdGF0ZVRhc2sodGhpcywgbV9jbGllbnQsIFdlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudDo6UmVhZHlTdGF0ZUNsb3NlZCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGZmZTdjNWJh
ZDgzOTdjNzI0YzQxZDYxZmEyOTlkM2FiNDk5Y2JlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9ja1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcl9oCisjZGVmaW5lIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAorCisj
aW5jbHVkZSAiV2ViVGFzay5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisKK2NsYXNzIE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIgeworcHVibGljOgorICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoV2ViS2l0
OjpXZWJTdHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUpOworCisgICAgdmlydHVhbCB2b2lkIHNl
dENsaWVudChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgbGFiZWwoKSBPVkVSUklERSB7IHJldHVy
biBtX2xhYmVsOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERSB7IHJl
dHVybiBtX3JlbGlhYmxlOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRh
KGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgp
IE9WRVJSSURFOworCisgICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQor
Citwcml2YXRlOgorICAgIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIoKTsKKworICAgIFdl
YktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJL
aXQ6OldlYlN0cmluZyBtX2xhYmVsOworICAgIGJvb2wgbV9yZWxpYWJsZTsKKyAgICBXZWJUZXN0
UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworfTsKKworI2VuZGlmIC8vIE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApp
bmRleCBjZmQ3NmRlNzRhY2Y3ZmI1OWMyZDU5M2ZjOWVjOWE3MDFjNGMzZTI5Li5iYmVjMjViZDE2
Yjk2NzBjNDFkNTZhN2QxYTA2ZWNlZDQ2MDcwYzU2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgIk1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJUYXNrLmgiCiAj
aW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaD4KQEAgLTEyOCw4NCArMTI5LDQxIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N1Y2NlZWRlZDsKIH07CiAKLWNsYXNzIFN0cmluZ0RhdGFUYXNrIDogcHVi
bGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewotcHVi
bGljOgotICAgIFN0cmluZ0RhdGFUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIq
IG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGEpCi0gICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPihvYmplY3QpCi0gICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5l
bCkKLSAgICAgICAgLCBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hhbm5lbC5k
YXRhQXJyaXZlZChtX2RhdGEpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJSVENEYXRhQ2hh
bm5lbCBtX2RhdGFDaGFubmVsOwotICAgIFdlYlN0cmluZyBtX2RhdGE7Ci19OwotCi1jbGFzcyBD
aGFyUHRyRGF0YVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyPiB7Ci1wdWJsaWM6Ci0gICAgQ2hhclB0ckRhdGFUYXNrKE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRh
dGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotICAgICAgICA6IFdl
Yk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAg
ICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCi0gICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQotICAgIHsKLSAgICAgICAgbV9kYXRhID0gbmV3IGNoYXJbbV9sZW5ndGhdOwotICAgICAg
ICBtZW1jcHkobV9kYXRhLCBkYXRhLCBtX2xlbmd0aCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgbV9kYXRhQ2hhbm5lbC5k
YXRhQXJyaXZlZChtX2RhdGEsIG1fbGVuZ3RoKTsKLSAgICAgICAgZGVsZXRlIFtdIG1fZGF0YTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDRGF0YUNoYW5uZWwgbV9kYXRhQ2hhbm5lbDsK
LSAgICBjaGFyKiBtX2RhdGE7Ci0gICAgc2l6ZV90IG1fbGVuZ3RoOwotfTsKLQotY2xhc3MgRGF0
YUNoYW5uZWxSZWFkeVN0YXRlVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0
ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyPiB7CiBwdWJsaWM6Ci0gICAgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayhNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBk
YXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgUlRD
UGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50LCBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAg
ICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmpl
Y3QpCi0gICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCkKKyAgICAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiAgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAgICB7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgbV9k
YXRhQ2hhbm5lbC5yZWFkeVN0YXRlQ2hhbmdlZChtX3N0YXRlKTsKKyAgICAgICAgbV9jbGllbnQt
PmRpZENoYW5nZVJlYWR5U3RhdGUobV9zdGF0ZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdl
YlJUQ0RhdGFDaGFubmVsIG1fZGF0YUNoYW5uZWw7Ci0gICAgV2ViUlRDRGF0YUNoYW5uZWw6OlJl
YWR5U3RhdGUgbV9zdGF0ZTsKKyAgICBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQq
IG1fY2xpZW50OworICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlT
dGF0ZSBtX3N0YXRlOwogfTsKIAotY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFz
ayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+
IHsKK2NsYXNzIFJlbW90ZURhdGFDaGFubmVsVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBSVENQZWVyQ29u
bmVjdGlvblJlYWR5U3RhdGVUYXNrKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9i
amVjdCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIFdlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBSZW1vdGVE
YXRhQ2hhbm5lbFRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCkKICAgICAgICAgOiBXZWJN
ZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKICAgICAg
ICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAgICB7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQogICAgIHsKLSAg
ICAgICAgbV9jbGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUobV9zdGF0ZSk7CisgICAgICAgIFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlciogcmVtb3RlRGF0YUNoYW5uZWwgPSBuZXcgTW9ja1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcigiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgdHJ1ZSk7CisgICAg
ICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChyZW1vdGVEYXRhQ2hhbm5lbCk7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCogbV9jbGllbnQ7Ci0gICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpSZWFk
eVN0YXRlIG1fc3RhdGU7CiB9OwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTMyNyw0NiAr
Mjg1LDE2IEBAIHZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Z2V0U3RhdHMo
Y29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0JiByZXF1ZXN0CiAgICAgcG9zdFRhc2sobmV3IFJUQ1N0
YXRzUmVxdWVzdFN1Y2NlZWRlZFRhc2sodGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAot
dm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKK1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlciogTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0
YUNoYW5uZWwoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKIHsKLSAgICBt
X3N0b3BwZWQgPSB0cnVlOwotfQotCi1ib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6Om9wZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwp
Ci17Ci0gICAgaWYgKG1fc3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgV2Vi
UlRDRGF0YUNoYW5uZWwgcmVtb3RlRGF0YUNoYW5uZWw7Ci0gICAgcmVtb3RlRGF0YUNoYW5uZWwu
aW5pdGlhbGl6ZSgiTW9ja1JlbW90ZURhdGFDaGFubmVsIiwgZGF0YUNoYW5uZWwucmVsaWFibGUo
KSk7Ci0gICAgcmVtb3RlRGF0YUNoYW5uZWwucmVhZHlTdGF0ZUNoYW5nZWQoV2ViUlRDRGF0YUNo
YW5uZWw6OlJlYWR5U3RhdGVPcGVuKTsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNo
YW5uZWwocmVtb3RlRGF0YUNoYW5uZWwpOworICAgIHBvc3RUYXNrKG5ldyBSZW1vdGVEYXRhQ2hh
bm5lbFRhc2sodGhpcywgbV9jbGllbnQpKTsKIAotICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5l
bFJlYWR5U3RhdGVUYXNrKHRoaXMsIGRhdGFDaGFubmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVh
ZHlTdGF0ZU9wZW4pKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyOjpjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFu
bmVsJiBkYXRhQ2hhbm5lbCkKLXsKLSAgICBwb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFkeVN0
YXRlVGFzayh0aGlzLCBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVD
bG9zZWQpKTsKKyAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIobGFi
ZWwsIHJlbGlhYmxlKTsKIH0KIAotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
OjpzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNv
bnN0IFdlYlN0cmluZyYgZGF0YSkKLXsKLSAgICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBkYXRhQ2hhbm5lbC5kYXRhQXJyaXZlZChkYXRhKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZW5k
UmF3RGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6OnN0b3AoKQogewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGRhdGFDaGFubmVsLmRhdGFBcnJpdmVkKGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggYTE1MjJmNGZiZTZm
ZTNiNWZhNDQyMmQ1ZWQ3MDk4ZjBiMzI4YWMwNS4uOWQwZWQ3OTZkMWUzOTNiNjUxNmFlNGIzNDA4
NDZjYTA4MTE2MjQ5MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMzQsNyAr
MzQsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJXZWJUYXNrLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdC5oPgpAQCAtNjEsMTMgKzYwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBhZGRTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBj
b25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKGNvbnN0IFdlYktpdDo6V2Vi
UlRDU3RhdHNSZXF1ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlciogY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChjb25zdCBX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNl
bmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWwmLCBjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShj
b25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpX
ZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURFOwotCiAgICAgLy8gV2ViVGFzayByZWxhdGVkIG1l
dGhvZHMKICAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVy
biAmbV90YXNrTGlzdDsgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWFiMzU3MGMwYjg5M2NmMzk5MTYwYTFmODc4MGU3
NjZmMWUyYzgzYS4uOTVjZDY2MTY0NzA1YmMwNmYwOTIxN2NlODM2Njc3NzRkZmZmNTJhNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTExICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15
d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hhbmdlIHRoZSBkYXRh
IGNoYW5uZWwgZGVzY3JpcHRvciBwYXR0ZXJuIHRvIGEgaGFuZGxlciBwYXR0ZXJuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ1NDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRpbmcgZGF0YSBj
aGFubmVscyB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tZGF0YWNoYW5uZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbDoKKwogMjAxMi0xMi0xMCAgTm9l
bCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBV
bnJldmlld2VkIGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVj
dGVkLnR4dAppbmRleCA3NTk4OTRlMGFmZmJlNzNhZmVlNTUwNzNhY2Q0NmU1ODNjMTU4ODBmLi4z
YWFmYzZmMTU2YjM0MTQ2NjMwMTYwY2QxNTE4NDM0NDIwZmEyMjM0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywxOCBAQCBUZXN0cyBS
VENEYXRhQ2hhbm5lbC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIGRjID0g
cGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMSIpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
IFBBU1MgZGMucmVsaWFibGUgaXMgdHJ1ZQorUEFTUyBkYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVs
KCJsYWJlbDIiLCB7fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBkYy5yZWxpYWJs
ZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIsIHtyZWxp
YWJsZTp0cnVlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBkYy5yZWxpYWJsZSBp
cyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIsIHtyZWxpYWJs
ZTpmYWxzZX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgZGMucmVsaWFibGUgaXMg
ZmFsc2UKIFBBU1MgcGNfb25vcGVuIHdhcyBjYWxsZWQKK1BBU1MgZGMgPSBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgibGFiZWwiKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGRjLnJlYWR5
U3RhdGUgaXMgJ2Nvbm5lY3RpbmcnCiBQQVNTIHBjX29uZGF0YWNoYW5uZWwgd2FzIGNhbGxlZAot
UEFTUyBldmVudC5jaGFubmVsLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNTIGRjX29ub3BlbiB3
YXMgY2FsbGVkCiBQQVNTIGRjLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNTIGRjLmxhYmVsIGlz
ICdsYWJlbCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbAppbmRleCA0Mzc5YTU5OWQ0YTA3
MjgyNjdkNzQ5ODViYjQ5MjJkNzhiYjc4Y2Q1Li4yNDM1Y2NlYmJiZDUwYTVhZDNlYTY1MTNiMDlj
Mzc5MjBhNWViZWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sCkBAIC03MCwyNSAr
NzAsMjMgQEAgZnVuY3Rpb24gZGNfb25vcGVuKCkgewogCiBmdW5jdGlvbiBwY19vbmRhdGFjaGFu
bmVsKGUpIHsKICAgICB0ZXN0UGFzc2VkKCJwY19vbmRhdGFjaGFubmVsIHdhcyBjYWxsZWQiKTsK
LSAgICBldmVudCA9IGU7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmNoYW5uZWwucmVhZHlTdGF0ZSIs
ICInb3BlbiciKTsKIH0KIAogZnVuY3Rpb24gcGNfb25vcGVuKCkgewogICAgIHRlc3RQYXNzZWQo
InBjX29ub3BlbiB3YXMgY2FsbGVkIik7Ci0gICAgZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgi
bGFiZWwiKTsKKyAgICBzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgi
bGFiZWwiKTsnKTsKICAgICBzaG91bGRCZSgiZGMucmVhZHlTdGF0ZSIsICInY29ubmVjdGluZyci
KTsKICAgICBkYy5vbm9wZW4gPSBkY19vbm9wZW47CiB9CiAKIHBjID0gbmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOwotZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFi
ZWwxIik7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwx
Iik7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAidHJ1ZSIpOwotZGMgPSBwYy5jcmVhdGVE
YXRhQ2hhbm5lbCgibGFiZWwyIiwge30pOworc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRl
RGF0YUNoYW5uZWwoImxhYmVsMiIsIHt9KTsnKTsKIHNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0
cnVlIik7Ci1kYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7cmVsaWFibGU6dHJ1
ZX0pOworc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIs
IHtyZWxpYWJsZTp0cnVlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAidHJ1ZSIpOwot
ZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlhYmxlOmZhbHNlfSk7Citz
aG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlh
YmxlOmZhbHNlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAiZmFsc2UiKTsKIAogcGMg
PSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7Cg==
</data>
<flag name="review"
          id="195372"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="195375"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179006</attachid>
            <date>2012-12-12 02:15:13 -0800</date>
            <delta_ts>2012-12-12 02:43:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104543-20121212111233.patch</filename>
            <type>text/plain</type>
            <size>94903</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZTQ1MTljMGExYjY1
YTVjZmRlMjlhZjk4ZTg0NDEwMjA5ZTMyNzdiLi40MTVmYjNmNTA1MTBhMDZjZmVjZTA5MjA0ZDZm
Njk2ODAwNDVlZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMi0xMSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3IgcGF0dGVybiB0byBh
IGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAg
ICAgICAgSW4gc2hvcnQgdGhlIGNvZGUgaXMgcmVmYWN0dXJlZCB0byB1c2UgdGhlIEhhbmRsZXIv
Q2xpZW50IHBhdHRlcm4gKHNlZSBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpCisgICAgICAgIGlu
c3RlYWQgb2YgdGhlIERlc2NyaXB0b3IgcGF0dGVybi4KKyAgICAgICAgVGhpcyB3aWxsIGZpeCBs
aWZldGltZS9tZW1vcnkvY29kZSBzdHJ1Y3R1cmUgaXNzdWVzIGluIHRoZSBjaHJvbWl1bSBwb3J0
LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViUlRDRGF0YUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6fldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6
On5XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0YUNo
YW5uZWwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwpOgor
CiAyMDEyLTEyLTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBSZW1vdmUgZGVwcmVjYXRlZCBXZWJHcmFwaGljc0NvbnRleHQzRCBl
bnRyeSBwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjA5NmM0YzVjOTdlMzJlYjIxMmQ1MDcxZDRlMzI3
YTllMzU3ZjZiLi44N2ZlOWU5YjEzZjk3NmJlZjRlZDJlOThkNTVkODNhNmY1OGU3MDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTItMTItMTEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgdGhl
IGRhdGEgY2hhbm5lbCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8gYSBoYW5kbGVyIHBhdHRlcm4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIEluIHNob3J0IHRoZSBj
b2RlIGlzIHJlZmFjdHVyZWQgdG8gdXNlIHRoZSBIYW5kbGVyL0NsaWVudCBwYXR0ZXJuIChzZWUg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBEZXNjcmlw
dG9yIHBhdHRlcm4uCisgICAgICAgIFRoaXMgd2lsbCBmaXggbGlmZXRpbWUvbWVtb3J5L2NvZGUg
c3RydWN0dXJlIGlzc3VlcyBpbiB0aGUgY2hyb21pdW0gcG9ydC4KKworICAgICAgICBFeGlzdGlu
ZyB0ZXN0cyBjb3ZlciB0aGlzIHBhdGNoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFu
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjp+UlRDRGF0YUNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmxhYmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OnNl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRDaGFuZ2VSZWFkeVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlU3RyaW5nRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZERldGVjdEVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsOjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RhdGFD
aGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVE
YXRhQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5oOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFu
bmVsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6flJUQ0RhdGFDaGFubmVsSGFuZGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50Ojp+UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06On5SVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNocm9taXVtOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bTo6aXNSZWxpYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OnNlbmRTdHJpbmdEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmRp
ZENoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2hyb21pdW06OmRpZFJlY2VpdmVTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpkaWRSZWNlaXZlUmF3RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkRGV0ZWN0RXJyb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVs
SGFuZGxlckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNyZWF0ZURh
dGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21p
dW0pOgorCiAyMDEyLTExLTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhlYXAgc25hcHNob3QgY3Jhc2hlcyBvbiBhbnkg
cGFnZSBpbiBNYWNPUyBDYW5hcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzIwZmQ0
NzIyYTdhMmQ5ZTgzNDllOWM0NmYwN2U4YTMyODEwODcyNS4uMjgwODRiNGI5Y2Y3NmExNDU3YjBh
MzRkMDYxNjI1MzUwMGUwZmFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMi0xMi0xMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRl
c2NyaXB0b3IgcGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6
CisKIDIwMTItMTItMTEgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgQVg6IE1ha2UgaXNBY3Rpb25TdXBwb3J0ZWQgY3Jvc3MtcGxhdGZvcm0uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCmluZGV4IDlhZGE3ODZhMjBmZTMyMzRjZTBjMjA4OGY1ODgyNjhhZGFlN2Zh
ZWMuLjA0YTg1ZTM2M2MxNjAxZDllNjY1NzUyNTljNjljYTA3NjNkMDQwNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0
Zm9ybS5neXBpCkBAIC0xMDAsNyArMTAwLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUHJpdmF0ZU93blB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UHJpdmF0ZVB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmln
dXJhdGlvbi5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5u
ZWwuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENJQ0VD
YW5kaWRhdGUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZGVmYmRiYzlmOWY0YTI3MDViY2NkM2M1ODQ3NDBlYmRlMzVkMTc3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDRGF0YUNoYW5uZWxfaAotI2Rl
ZmluZSBXZWJSVENEYXRhQ2hhbm5lbF9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNs
dWRlICJXZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsIHsKLXB1YmxpYzoKLSAgICBj
bGFzcyBFeHRyYURhdGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRh
KCkgeyB9Ci0gICAgfTsKLQotICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIFJlYWR5U3Rh
dGVDb25uZWN0aW5nID0gMCwKLSAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAotICAgICAgICBS
ZWFkeVN0YXRlQ2xvc2luZyA9IDIsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAotICAg
IH07Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5lbCgpIHsgfQotICAgIFdlYlJUQ0RhdGFDaGFubmVs
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAg
fldlYlJUQ0RhdGFDaGFubmVsKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5l
bCYgb3BlcmF0b3I9KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBvdGhlcikKLSAgICB7Ci0gICAg
ICAgIGFzc2lnbihvdGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29s
IHJlbGlhYmxlKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViUlRD
RGF0YUNoYW5uZWwmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCByZWxpYWJsZSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJ1ZmZl
cmVkQW1vdW50KHVuc2lnbmVkIGxvbmcpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZWFkeVN0YXRlQ2hhbmdlZChSZWFkeVN0YXRlKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgZGF0YUFycml2ZWQoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBlcnJvcigpIGNvbnN0OwotCi0gICAgLy8gRXh0cmEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBXZWJSVENEYXRhQ2hhbm5lbC4KLSAgICAvLyBJZiBub24tbnVsbCwgdGhl
IGV4dHJhIGRhdGEgcG9pbnRlciB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRl
c3Ryb3llZC4KLSAgICAvLyBTZXR0aW5nIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBjYXVz
ZSBhbnkgZXhpc3Rpbmcgbm9uLW51bGwKLSAgICAvLyBleHRyYSBkYXRhIHBvaW50ZXIgdG8gYmUg
ZGVsZXRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlJUQ0RhdGFDaGFubmVsKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+Jik7Ci0gICAgV2Vi
UlRDRGF0YUNoYW5uZWwoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKik7Ci0gICAg
b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cj4oKSBjb25zdDsKLSAgICBvcGVyYXRvciBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3IqKCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJSVENEYXRhQ2hhbm5lbF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMTFkOGFjOTZlMDZiMTkzMmQ0YTVkN2Q3MDlmYWFiZDAyY2Zi
MTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBsYWJl
bCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWxpYWJsZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNl
bmRTdHJpbmdEYXRhKGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQyYWI0ZmY0NTE5YTBlMDc4MGI2NjFjMWJkOTI3NjgxM2Y5YjY4YTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitwdWJsaWM6
CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAw
LAorICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zaW5n
ID0gMiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisgICAgfTsKKworICAgIHZpcnR1
YWwgfldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBXZWJTdHJpbmcmKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSBjb25zdCA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCAzMTcwMjE0
MTI0MzBiMzMxYmEzMjU5NTBjZTI0MDU4N2JjMjNkZjhiLi4yN2QwZWU2NzAxODNhZTAyZWNhYjVm
NDhlMzFjYTI2ZmU3ODdiMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNZWRpYUNvbnN0cmFpbnRzOwog
Y2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogY2xhc3MgV2ViUlRDQ29uZmlndXJhdGlv
bjsKLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsOworY2xhc3MgV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOwogY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlOwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50OwogY2xhc3MgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOwpAQCAtNjIs
MTMgKzYyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oY29uc3Qg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgPSAwOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiB3aGVuIGNsaWVudHMgaGF2ZSBjaGFuZ2VkLgogICAgIHZpcnR1
YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBXZWJSVENTdGF0c1JlcXVlc3QmKSB7IH0KKyAgICB2aXJ0
dWFsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgV2Vi
U3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCkgPSAwOwotCi0gICAgLy8gUlRDRGF0YUNoYW5uZWwKLSAgICB2aXJ0dWFsIGJv
b2wgb3BlbkRhdGFDaGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJikgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgV2ViUlRDRGF0YUNo
YW5uZWwmLCBjb25zdCBXZWJTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBzZW5kUmF3RGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBz
aXplX3QpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5u
ZWwoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKaW5kZXggY2QwNmMwZTg3
OWQwOWI3NDlkMmUyNjU2ODM0ODRiNGMwNDkxOTMyMy4uNTRhYzM3NmM0MzZmNzRmY2YyOWJjMmVj
NzJiYzgwYzZkYTU3NzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5o
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOwotY2xhc3MgV2ViUlRDRGF0YUNoYW5uZWw7CitjbGFzcyBXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI7CiBjbGFzcyBXZWJSVENJQ0VDYW5kaWRhdGU7CiAKIGNsYXNzIFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCB7CkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSUNFU3RhdGUoSUNFU3RhdGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNv
bnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkUmVtb3RlRGF0YUNoYW5uZWwoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggZTNjYTljOWU4YTg3ZDVkZDRmYThiZmRmOWI5MzBjNDNhYTg3YzU1OS4uODcyYzI1MGI0
YjJiNTRiMjQ5ODQwMWE2ZmFjMjE0ZTA4MTMwNThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE5OTQsNyArMTk5NCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmNwcAotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MjM3ZTcyM2I4MDYwZGZkMGI0OWY3MmNhMGY4ZGQxZmRhMDNkNDdmNi4uNWExODU4NTk2MzkwN2E2
OTk4MWVkMjVjNmFiZGRhZGJjOTBiNDExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC01Njc1LDggKzU2NzUsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Nv
bmZpZ3VyYXRpb24uaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDA3ZTI5
MmVhMDVjYTAwYWQ1ZWE5M2NjYjIxOTZjOGQ1OWUzMGUyYmUuLmNiMDgwZjVlZTQxZTVhYjRmMGI4
ZDMyNmUwMDMwODgzMzZjODhmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgpAQCAtMzksNjAgKzQwLDU3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4g
UlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGJv
b2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5l
bD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
QVNTRVJUKGhhbmRsZXIpOwotICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gZGF0YUNoYW5uZWwg
PSBjcmVhdGUoY29udGV4dCwgaGFuZGxlciwgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVh
dGUobGFiZWwsIHJlbGlhYmxlKSk7Ci0gICAgaWYgKCFoYW5kbGVyLT5vcGVuRGF0YUNoYW5uZWwo
ZGF0YUNoYW5uZWwtPmRlc2NyaXB0b3IoKSkpIHsKKyAgICBPd25QdHI8UlRDRGF0YUNoYW5uZWxI
YW5kbGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEYXRhQ2hhbm5l
bChsYWJlbCwgcmVsaWFibGUpOworICAgIGlmICghaGFuZGxlcikgewogICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIGRh
dGFDaGFubmVsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFu
bmVsKGNvbnRleHQsIGhhbmRsZXIucmVsZWFzZSgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVmUHRyPFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGVzY3JpcHRvcikKK1Bhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKGhhbmRsZXIpOwotICAgIEFTU0VSVChkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIsIGRlc2NyaXB0b3IpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIp
KTsKIH0KIAotUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwgUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCitSVENEYXRhQ2hhbm5l
bDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiAgICAgOiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1faGFuZGxlcihoYW5kbGVyKQogICAgICwgbV9z
dG9wcGVkKGZhbHNlKQotICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBtX3Jl
YWR5U3RhdGUoUmVhZHlTdGF0ZUNvbm5lY3RpbmcpCiAgICAgLCBtX2JpbmFyeVR5cGUoQmluYXJ5
VHlwZUFycmF5QnVmZmVyKQotICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBtX3NjaGVk
dWxlZEV2ZW50VGltZXIodGhpcywgJlJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZWRFdmVudFRpbWVy
RmlyZWQpCiB7Ci0gICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9oYW5k
bGVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKIFJUQ0RhdGFDaGFubmVsOjp+UlRDRGF0YUNoYW5u
ZWwoKQogewotICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOwogfQogCiBTdHJpbmcgUlRD
RGF0YUNoYW5uZWw6OmxhYmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5s
YWJlbCgpOworICAgIHJldHVybiBtX2hhbmRsZXItPmxhYmVsKCk7CiB9CiAKIGJvb2wgUlRDRGF0
YUNoYW5uZWw6OnJlbGlhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5y
ZWxpYWJsZSgpOworICAgIHJldHVybiBtX2hhbmRsZXItPmlzUmVsaWFibGUoKTsKIH0KIAogU3Ry
aW5nIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1f
ZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0aW5nOgorICAgIHN3aXRjaCAobV9yZWFkeVN0YXRlKSB7
CisgICAgY2FzZSBSZWFkeVN0YXRlQ29ubmVjdGluZzoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiY29ubmVjdGluZyIpOwotICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpS
ZWFkeVN0YXRlT3BlbjoKKyAgICBjYXNlIFJlYWR5U3RhdGVPcGVuOgogICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJvcGVuIik7Ci0gICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6
OlJlYWR5U3RhdGVDbG9zaW5nOgorICAgIGNhc2UgUmVhZHlTdGF0ZUNsb3Npbmc6CiAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoImNsb3NpbmciKTsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICBjYXNlIFJlYWR5U3RhdGVDbG9zZWQ6
CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImNsb3NlZCIpOwogICAgIH0KIApAQCAtMTAy
LDcgKzEwMCw3IEBAIFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAK
IHVuc2lnbmVkIGxvbmcgUlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5idWZmZXJlZEFtb3VudCgpOworICAgIHJldHVybiBt
X2hhbmRsZXItPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKIFN0cmluZyBSVENEYXRhQ2hhbm5lbDo6
YmluYXJ5VHlwZSgpIGNvbnN0CkBAIC0xMjksMTEgKzEyNywxMSBAQCB2b2lkIFJUQ0RhdGFDaGFu
bmVsOjpzZXRCaW5hcnlUeXBlKGNvbnN0IFN0cmluZyYgYmluYXJ5VHlwZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBkYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkg
IT0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3BlbikgeworICAgIGlmICht
X3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZU9wZW4pIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1faGFuZGxlci0+c2Vu
ZFN0cmluZ0RhdGEoZGVzY3JpcHRvcigpLCBkYXRhKSkgeworICAgIGlmICghbV9oYW5kbGVyLT5z
ZW5kU3RyaW5nRGF0YShkYXRhKSkgewogICAgICAgICAvLyBGSVhNRTogRGVjaWRlIHdoYXQgdGhl
IHJpZ2h0IGV4Y2VwdGlvbiBoZXJlIGlzLgogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAg
fQpAQCAtMTQxLDcgKzEzOSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3QgU3Ry
aW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBSVENEYXRhQ2hhbm5lbDo6c2Vu
ZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwcnBEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkgIT0gUlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpSZWFkeVN0YXRlT3BlbikgeworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gUmVhZHlT
dGF0ZU9wZW4pIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE1NCw3ICsxNTIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5k
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBycERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAg
ICAgY29uc3QgY2hhciogZGF0YVBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YS0+ZGF0YSgpKTsKIAotICAgIGlmICghbV9oYW5kbGVyLT5zZW5kUmF3RGF0YShkZXNjcmlwdG9y
KCksIGRhdGFQb2ludGVyLCBkYXRhTGVuZ3RoKSkgeworICAgIGlmICghbV9oYW5kbGVyLT5zZW5k
UmF3RGF0YShkYXRhUG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKICAgICAgICAgLy8gRklYTUU6IERl
Y2lkZSB3aGF0IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KICAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOwogICAgIH0KQEAgLTE3NywxOSArMTc1LDIxIEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6
OmNsb3NlKCkKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2hh
bmRsZXItPmNsb3NlRGF0YUNoYW5uZWwoZGVzY3JpcHRvcigpKTsKKyAgICBtX2hhbmRsZXItPmNs
b3NlKCk7CiB9CiAKLXZvaWQgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3Zv
aWQgUlRDRGF0YUNoYW5uZWw6OmRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSBuZXdTdGF0
ZSkKIHsKLSAgICBpZiAobV9zdG9wcGVkKQorICAgIGlmIChtX3N0b3BwZWQgfHwgbV9yZWFkeVN0
YXRlID09IFJlYWR5U3RhdGVDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAo
bV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkpIHsKLSAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW46CisgICAgbV9yZWFkeVN0YXRlID0gbmV3U3RhdGU7CisK
KyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0ZSkgeworICAgIGNhc2UgUmVhZHlTdGF0ZU9wZW46CiAg
ICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5v
cGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICBjYXNlIFJlYWR5U3Rh
dGVDbG9zZWQ6CiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpyZWFk
eVN0YXRlQ2hhbmdlZCgpCiAgICAgfQogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJy
aXZlZChjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZl
U3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRh
dGFBcnJpdmVkKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUodGV4dCkpOwogfQogCi12b2lkIFJUQ0RhdGFDaGFubmVsOjpk
YXRhQXJyaXZlZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgUlRD
RGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJyaXZlZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZXJyb3IoKQordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGlk
RGV0ZWN0RXJyb3IoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIzMCwxMSArMjMwLDYgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6ZXJyb3IoKQogICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKIH0KIAotUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBSVENEYXRhQ2hh
bm5lbDo6ZGVzY3JpcHRvcigpCi17Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsKLX0K
LQogY29uc3QgQXRvbWljU3RyaW5nJiBSVENEYXRhQ2hhbm5lbDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JSVENEYXRhQ2hhbm5l
bDsKQEAgLTI0OCw4ICsyNDMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEYXRhQ2hh
bm5lbDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB2b2lkIFJUQ0RhdGFDaGFubmVs
OjpzdG9wKCkKIHsKICAgICBtX3N0b3BwZWQgPSB0cnVlOwotICAgIG1faGFuZGxlciA9IDA7Ci0g
ICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQoMCk7CisgICAgbV9oYW5kbGVyLT5zZXRDbGllbnQo
MCk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IGJl
OTJjYmU1MjcyYWNiYjVjOTdkYjdmYmI1ODNjMDMxYmZiMWY1NGQuLmY4NTVjOTBlNDE5NmU1MmIx
OTBhNTk4MDg1M2IzZjEwNmEzMTBhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTI3LDI4ICsyNywyNiBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIGNsYXNzIEJsb2I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CiBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKLWNsYXNzIFJUQ0RhdGFDaGFubmVsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1Ymxp
YyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQgeworY2xhc3MgUlRDRGF0YUNoYW5uZWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCBy
ZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFD
aGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlciosIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KTsKICAgICB+UlRDRGF0YUNo
YW5uZWwoKTsKIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotCiAgICAgYm9vbCByZWxpYWJs
ZSgpIGNvbnN0OwotCiAgICAgU3RyaW5nIHJlYWR5U3RhdGUoKSBjb25zdDsKLQogICAgIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIAogICAgIFN0cmluZyBiaW5hcnlUeXBl
KCkgY29uc3Q7CkBAIC02Niw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKG1lc3NhZ2UpOwogCi0gICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldApAQCAtNzcsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD46OmRlcmVm
OwogCiBwcml2YXRlOgotICAgIFJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4pOworICAgIFJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOwogCiAgICAgdm9pZCBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRU
aW1lckZpcmVkKFRpbWVyPFJUQ0RhdGFDaGFubmVsPiopOwpAQCAtOTAsMjQgKzg3LDIzIEBAIHBy
aXZhdGU6CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotICAgIC8vIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6T3duZXIKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0
ZUNoYW5nZWQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNo
YXIqLCBzaXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIE9WRVJSSURF
OworICAgIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICBPd25Q
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBtX2hhbmRsZXI7CiAKICAgICBib29sIG1fc3RvcHBl
ZDsKLSAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CiAK
KyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBlbnVtIEJpbmFyeVR5cGUgewogICAg
ICAgICBCaW5hcnlUeXBlQmxvYiwKICAgICAgICAgQmluYXJ5VHlwZUFycmF5QnVmZmVyCiAgICAg
fTsKICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKIAotICAgIC8vIE5vdCBvd25lZCBieSB0
aGlzIGNsYXNzLgotICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogbV9oYW5kbGVyOwotCiAg
ICAgVGltZXI8UlRDRGF0YUNoYW5uZWw+IG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsKICAgICBWZWN0
b3I8UmVmUHRyPEV2ZW50PiA+IG1fc2NoZWR1bGVkRXZlbnRzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNzYyMzkwMDdiOTE5ODA1MWQ0OGI1N2I5ZTJkYTM5NmI2ZmIyMWRhMS4uNDQ5NjZjYzRl
M2NmNWM2YzM5YjE4N2EzM2EwODFmYTFiMGIwYmY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUlRD
RGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEV2ZW50LmgiCisjaW5jbHVk
ZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUlRDRXJyb3JDYWxsYmFjay5o
IgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0
ZURlc2NyaXB0b3IuaCIKQEAgLTUzOSwxNCArNTQwLDE0IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURl
c2NyCiAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVh
c2UoKSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVEYXRhQ2hh
bm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gY2hhbm5lbERlc2NyaXB0
b3IpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNz
T3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gaGFuZGxlcikKIHsKICAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAobV9y
ZWFkeVN0YXRlID09IFJlYWR5U3RhdGVDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5kbGVyLmdldCgpLCBjaGFubmVsRGVzY3Jp
cHRvcik7CisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsID0gUlRDRGF0YUNoYW5u
ZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fZGF0
YUNoYW5uZWxzLmFwcGVuZChjaGFubmVsKTsKIAogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChS
VENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQs
IGZhbHNlLCBmYWxzZSwgY2hhbm5lbC5yZWxlYXNlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCBjMzFl
ZDFhNTlhNWQ3ZTI1ODAwNDkwNTllYTBkZmQxMmY5MGMxZGUzLi4xZGQwODU3N2IxZTc0MWM1MjJm
MTA4Y2FiNzZlZmUxZDU4YmFmYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0xMTQsNyArMTE0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURh
dGFDaGFubmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPikgT1ZFUlJJREU7CiAK
ICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2M5NDRmNTA0
Zjk5MTNmMDdkM2NlNDVkNWY0MWIzYzBlYzVkZDRhNC4uOGUxNGNiOGY5OTNjM2U3NjYyMGVjMTYx
NzE5ZTlhNzg0ZTI5OTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDI5OSw4ICs0Mjk5LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApA
QCAtNDMxMiw2ICs0MzEyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENWb2lkUmVxdWVzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJv
bWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
bW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNwcCcsCkBAIC03MTA5LDcgKzcxMTEsNiBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViUHJlcmVuZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJSVENDb25maWd1cmF0aW9uLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDSUNFQ2FuZGlkYXRlLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTY5MTJjMTU0NmU4ZGM1MzgzOTcxODg2MjUwYTBkMjVj
NTk4YTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHB1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgotCi0jaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgRXh0cmFEYXRhQ29udGFpbmVyIDogcHVibGljIFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcjo6RXh0cmFEYXRhIHsKLXB1YmxpYzoKLSAgICBFeHRyYURhdGFDb250YWlu
ZXIoV2ViUlRDRGF0YUNoYW5uZWw6OkV4dHJhRGF0YSogZXh0cmFEYXRhKSA6IG1fZXh0cmFEYXRh
KFdURjo6YWRvcHRQdHIoZXh0cmFEYXRhKSkgeyB9Ci0KLSAgICBXZWJSVENEYXRhQ2hhbm5lbDo6
RXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4dHJhRGF0YS5nZXQoKTsgfQotCi1w
cml2YXRlOgotICAgIE93blB0cjxXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhPiBtX2V4dHJh
RGF0YTsKLX07Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpXZWJSVENEYXRhQ2hhbm5lbChjb25zdCBQ
YXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4mIGRhdGFDaGFubmVsKQotICAgIDog
bV9wcml2YXRlKGRhdGFDaGFubmVsKQotewotfQotCi1XZWJSVENEYXRhQ2hhbm5lbDo6V2ViUlRD
RGF0YUNoYW5uZWwoUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBkYXRhQ2hhbm5lbCkKLSAgICA6
IG1fcHJpdmF0ZShkYXRhQ2hhbm5lbCkKLXsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6
aW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKQotewotICAg
IG1fcHJpdmF0ZSA9IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3JlYXRlKGxhYmVsLCByZWxp
YWJsZSk7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmFzc2lnbihjb25zdCBXZWJSVENE
YXRhQ2hhbm5lbCYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwot
fQotCi12b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpyZXNldCgpCi17Ci0gICAgbV9wcml2YXRlLnJl
c2V0KCk7Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4oKSBjb25zdAotewotICAgIHJldHVybiBtX3By
aXZhdGUuZ2V0KCk7Ci19Ci0KLVdlYlJUQ0RhdGFDaGFubmVsOjpvcGVyYXRvciBXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOwotfQotCi1XZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhKiBXZWJSVENEYXRhQ2hh
bm5lbDo6ZXh0cmFEYXRhKCkgY29uc3QKLXsKLSAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpFeHRyYURhdGE+IGRhdGEgPSBtX3ByaXZhdGUtPmV4dHJhRGF0YSgpOwotICAgIGlm
ICghZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4dHJh
RGF0YUNvbnRhaW5lcio+KGRhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsKLX0KLQotdm9pZCBXZWJS
VENEYXRhQ2hhbm5lbDo6c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0cmFEYXRhKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBFeHRyYURhdGFDb250YWluZXIo
ZXh0cmFEYXRhKSkpOwotfQotCi1XZWJTdHJpbmcgV2ViUlRDRGF0YUNoYW5uZWw6OmxhYmVsKCkg
Y29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5s
YWJlbCgpOwotfQotCi1ib29sIFdlYlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKCFpc051bGwoKSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVsaWFibGUo
KTsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6c2V0QnVmZmVyZWRBbW91bnQodW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsK
LSAgICBtX3ByaXZhdGUtPnNldEJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKLX0KLQot
dm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSBzdGF0
ZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICBtX3ByaXZhdGUtPnJlYWR5
U3RhdGVDaGFuZ2VkKHN0YXRpY19jYXN0PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlT
dGF0ZT4oc3RhdGUpKTsKLX0KLQotdm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQo
Y29uc3QgV2ViU3RyaW5nJiBkYXRhKSBjb25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwot
ICAgIG1fcHJpdmF0ZS0+ZGF0YUFycml2ZWQoZGF0YSk7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNo
YW5uZWw6OmRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKSBj
b25zdAotewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotICAgIG1fcHJpdmF0ZS0+ZGF0YUFycml2
ZWQoZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLXZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmVycm9y
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLSAgICBtX3ByaXZhdGUtPmVycm9y
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQxNTZkNjZjNDVhMTYwY2MwMWRkZmVkNjZlMjViMTcyZDBjZTRkY2Yu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcihsYWJlbCwgcmVsaWFibGUpKTsKLX0K
LQotUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoY29u
c3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkKLSAgICA6IG1fY2xpZW50KDApCi0gICAg
LCBtX2xhYmVsKGxhYmVsKQotICAgICwgbV9yZWxpYWJsZShyZWxpYWJsZSkKLSAgICAsIG1fcmVh
ZHlTdGF0ZShSZWFkeVN0YXRlQ29ubmVjdGluZykKLSAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkK
LXsKLX0KLQotUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yKCkKLXsKLX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnJlYWR5U3RhdGVD
aGFuZ2VkKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBBU1NFUlQobV9yZWFkeVN0YXRl
ICE9IFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gcmVhZHlTdGF0
ZSkgewotICAgICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwotICAgICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZChjb25zdCBT
dHJpbmcmIGRhdGEpCi17Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xv
c2VkKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhQXJyaXZlZChk
YXRhKTsKLX0KLQotdm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmRhdGFBcnJpdmVkKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAgIEFTU0VSVChtX3JlYWR5
U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+ZGF0YUFycml2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLXZvaWQgUlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjplcnJvcigpCi17Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAh
PSBSZWFkeVN0YXRlQ2xvc2VkKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5lcnJvcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWFjYjRhYzNiY2U5ZTY1ZjUxZDgwZDI3NzlmZDAyZGMyOTg5NjAz
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yX2gKLSNkZWZpbmUgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
X2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3JDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSA9IDA7Ci19OwotCi1jbGFzcyBSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IHsK
LXB1YmxpYzoKLSAgICBjbGFzcyBFeHRyYURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxFeHRyYURh
dGE+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAg
IH07Ci0KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBSZWFkeVN0YXRlQ29ubmVjdGlu
ZyA9IDAsCi0gICAgICAgIFJlYWR5U3RhdGVPcGVuID0gMSwKLSAgICAgICAgUmVhZHlTdGF0ZUNs
b3NpbmcgPSAyLAotICAgICAgICBSZWFkeVN0YXRlQ2xvc2VkID0gMywKLSAgICB9OwotCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7Ci0gICAgdmlydHVhbCB+UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yKCk7Ci0KLSAgICBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIGNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KLQotICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9
Ci0gICAgYm9vbCByZWxpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsaWFibGU7IH0KLQotICAg
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQot
Ci0gICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyZWRBbW91bnQ7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQpIHsgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OyB9Ci0K
LSAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3RhdGUpOwotICAgIHZvaWQgZGF0YUFy
cml2ZWQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICB2b2lkIGVycm9yKCk7Ci0KLSAgICBQYXNzUmVmUHRyPEV4dHJhRGF0YT4g
ZXh0cmFEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYURhdGE7IH0KLSAgICB2b2lkIHNldEV4
dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0g
ZXh0cmFEYXRhOyB9Ci0KLXByaXZhdGU6Ci0gICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpOwotCi0gICAgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAgICBTdHJpbmcgbV9sYWJlbDsKLSAgICBib29s
IG1fcmVsaWFibGU7Ci0gICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgdW5zaWduZWQg
bG9uZyBtX2J1ZmZlcmVkQW1vdW50OwotICAgIFJlZlB0cjxFeHRyYURhdGE+IG1fZXh0cmFEYXRh
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1NDgxYjAyMjY1NDMwZjBjZTNiMzI5ZDg4ZjE1Nzg2
ZGRkYTg3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCisjZGVmaW5lIFJUQ0RhdGFD
aGFubmVsSGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIg
eworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlcigpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBsYWJlbCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNSZWxpYWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8v
IFJUQ0RhdGFDaGFubmVsSGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ5N2EwMzI2OTM3ZDRjYWI0ODA2Yzk2Y2VhNTQwMjliODQyNTY4YWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7Citw
dWJsaWM6CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3Rp
bmcgPSAwLAorICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAgIFJlYWR5U3RhdGVD
bG9zaW5nID0gMiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisgICAgfTsKKworICAg
IHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CmluZGV4IDg1MDlmMmU5NDI3NTY4YmE2Mjc5OTgwZGEzNjBjNjFmMWE0NWM0NTMuLjkwMGIwNDBm
ZjliNGFlYjhjYjVlNDg0MWFhOGY2ZmYzOTA4MThiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcApAQCAtMzQsMTM0ICszNCwxNCBAQAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgiCiAKLSNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogCi0vLyBEdW1teSBpbXBsZW1lbnRhdGlvbnMg
YmVsb3cgZm9yIHBvcnRzIHRoYXQgYnVpbGQgd2l0aCBNRURJQV9TVFJFQU0gZW5hYmxlZCBieSBk
ZWZhdWx0LgotCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSA6IHB1YmxpYyBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgewotcHVibGljOgotICAgIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15KFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwotICAgIHZpcnR1
YWwgflJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQ
YXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBh
c3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0
aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3Rl
RGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I+IHJlbW90ZURlc2NyaXB0aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IHVwZGF0ZUljZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkSWNlQ2FuZGlkYXRl
KFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0Pikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIFJU
Q0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25z
dCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1QYXNzT3duUHRyPFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teShjbGllbnQpKTsKLX0KLQotUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15
KFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQo
Y2xpZW50KQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci19Ci0KLVJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15Ojp+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoKQotewotfQotCi1i
b29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0aWFsaXplKFBhc3NSZWZQdHI8
UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojpj
cmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQotewotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15OjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLX0KLQotdm9pZCBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVm
UHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yPikKLXsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2V0
UmVtb3RlRGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pCi17Ci19Ci0KLVBhc3NSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVt
bXk6OmxvY2FsRGVzY3JpcHRpb24oKQotewotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckR1bW15OjpyZW1vdGVEZXNjcmlwdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojpy
ZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KQotewotfQotCi1i
b29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojp1cGRhdGVJY2UoUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmFk
ZEljZUNhbmRpZGF0ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KQotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1t
eTo6Z2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KQotewotfQotCi12b2lkIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJEdW1teTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yPikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRSYXdEYXRh
KFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVf
dCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyRHVtbXk6OmNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I+KQorUGFzc093blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6Y3JlYXRlKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopCiB7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggZmJhNDU4ODdlNjc5OTY1NmYyNjYzN2U0ZWZkZWE0
ZTk2NTY2MDMyZC4uZDhmOTZkMzBmMzFlNmQxOTU5N2UzOGY1MWZiOWI5ODQ3MDU3MjdlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUlRDQ29uZmlndXJhdGlv
bjsKLWNsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKK2NsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlcjsKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7CiBjbGFzcyBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yOwpAQCAtNjksMTEgKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRT
dGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpID0gMDsKIAotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1YWwgYm9vbCBv
cGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5k
UmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IGNoYXIq
LCBzaXplX3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKyAgICAvLyBSVENEYXRhQ2hhbm5l
bAorICAgIHZpcnR1YWwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURh
dGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpID0gMDsKIAogcHJv
dGVjdGVkOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAppbmRleCBhNjdhNGI4ZTBlYjNiYWEyOTcyMGIwMmU5
NGEwMTY5ZDFjMjkxODhkLi5iZGI4ZTYyOGVhOWM5NDVmOTdkYTA4YmNkYzc3ODZmZmZhNDEzNDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzgsNyArMzgs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7
Ci1jbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbEhh
bmRsZXI7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogCiBjbGFzcyBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewpAQCAtODYsOSArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKEljZVN0YXRlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRv
cj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopID0gMDsKLQotICAgIC8vIFJUQ0RhdGFDaGFubmVsLgotICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5u
ZWwoUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzMDE3YTM1ZDYxZjVmNzM3MWMxYWM0M2Y0
YWEwNjBmMDJkZDliNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcApA
QCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0
ZShXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxlcikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtKHdlYkhhbmRs
ZXIpKTsKK30KKworUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OlJUQ0RhdGFDaGFubmVs
SGFuZGxlckNocm9taXVtKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiB3ZWJIYW5k
bGVyKQorICAgIDogbV93ZWJIYW5kbGVyKGFkb3B0UHRyKHdlYkhhbmRsZXIpKQorICAgICwgbV9j
bGllbnQoMCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06On5SVENEYXRh
Q2hhbm5lbEhhbmRsZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2hyb21pdW06OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX3dlYkhhbmRsZXItPnNldENsaWVu
dChtX2NsaWVudCA/IHRoaXMgOiAwKTsKK30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNocm9taXVtOjpsYWJlbCgpCit7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+bGFiZWwoKTsK
K30KKworYm9vbCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6aXNSZWxpYWJsZSgpCit7
CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+aXNSZWxpYWJsZSgpOworfQorCit1bnNpZ25lZCBs
b25nIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpidWZmZXJlZEFtb3VudCgpCit7Cisg
ICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+YnVmZmVyZWRBbW91bnQoKTsKK30KKworYm9vbCBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiBk
YXRhKQoreworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPnNlbmRTdHJpbmdEYXRhKGRhdGEpOwor
fQorCitib29sIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5z
ZW5kUmF3RGF0YShkYXRhLCBzaXplKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
aHJvbWl1bTo6Y2xvc2UoKQoreworICAgIG1fd2ViSGFuZGxlci0+Y2xvc2UoKTsKK30KKwordm9p
ZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlUmVhZHlTdGF0ZShz
dGF0aWNfY2FzdDxSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGU+KHN0YXRl
KSk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmRpZFJlY2VpdmVT
dHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkYXRhKSBjb25zdAoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKGRhdGEp
OworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtOjpkaWRSZWNlaXZlUmF3
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLCBzaXplKTsK
K30KKwordm9pZCBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bTo6ZGlkRGV0ZWN0RXJyb3Io
KSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZERldGVj
dEVycm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzY0OTczY2ExZThlOWIwMmI4NDlmYTRmM2ViMDI0
YWE0MDMwZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaApAQCAtMCww
ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNo
cm9taXVtX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW1faAorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
IgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDaHJvbWl1bSA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBXZWJLaXQ6
OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU3RyaW5nIGxhYmVsKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGlzUmVsaWFibGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHNlbmRSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIq
LCBzaXplX3QpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJv
cigpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNocm9taXVtKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKik7CisK
KyAgICBPd25QdHI8V2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IG1fd2ViSGFuZGxl
cjsKKyAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAppbmRleCBm
NDkwZTM0ODBiNWUzN2EzODgwZGE3MGU5OTUzZDdmOGVkMDgxMDMxLi41N2ZhMGZkZTZhOTVmZWQ2
Mzk3MGI0YjMzMDAyN2UzOWJiYWRlMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0zNiw3ICszNiw4IEBACiAK
ICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlv
bi5oIgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJU
Q1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAKICNpbmNs
dWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDQ29uZmlndXJh
dGlvbi5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
UlRDSUNFQ2FuZGlkYXRlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlw
dGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
Lmg+CkBAIC0xNDgsMjQgKzE0OSwxMyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtOjpnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4gcmVxdQogICAgIG1f
d2ViSGFuZGxlci0+Z2V0U3RhdHMocmVxdWVzdCk7CiB9CiAKLWJvb2wgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwpCitQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFu
ZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNyZWF0ZURhdGFDaGFubmVs
KGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCiB7Ci0gICAgcmV0dXJuIG1fd2Vi
SGFuZGxlci0+b3BlbkRhdGFDaGFubmVsKGRhdGFDaGFubmVsKTsKLX0KLQotYm9vbCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsLCBjb25zdCBTdHJpbmcmIGRhdGEpCi17
Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+c2VuZFN0cmluZ0RhdGEoZGF0YUNoYW5uZWwsIGRh
dGEpOwotfQotCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kUmF3
RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAgIHJldHVybiBtX3dlYkhh
bmRsZXItPnNlbmRSYXdEYXRhKGRhdGFDaGFubmVsLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLX0KKyAg
ICBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogd2ViSGFuZGxlciA9IG1fd2ViSGFu
ZGxlci0+Y3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIHJlbGlhYmxlKTsKKyAgICBpZiAoIXdlYkhh
bmRsZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtOjpjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCkKLXsKLSAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5j
bG9zZURhdGFDaGFubmVsKGRhdGFDaGFubmVsKTsKKyAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVyKTsKIH0KIAogdm9pZCBSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c3RvcCgpCkBAIC0yMDgsOSArMTk4LDEwIEBAIHZvaWQg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShj
b25zdCBXZWJLaXQ6OldlYk1lCiAgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtOjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlJU
Q0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCkKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2hyb21pdW06OmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKiB3ZWJIYW5kbGVyKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRh
Q2hhbm5lbChkYXRhQ2hhbm5lbCk7CisgICAgQVNTRVJUKHdlYkhhbmRsZXIpOworICAgIG1fY2xp
ZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1
bTo6Y3JlYXRlKHdlYkhhbmRsZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgK
aW5kZXggYjUyYjdiMTZiZjMwNjU4MWQzNzRjNzJhNTZlZmYyNDczMWEwYjBlNS4uZDU5Y2VkMzNh
NjM4OWI2OTQwOGM3MGVhYWEzM2IxY2E5MmI3ZmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJv
bWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC00MiwxMiArNDIsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7
Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CisK
IGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtIDogcHVibGljIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciwgcHVibGljIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bShSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKQEAgLTY4LDEzICs2
OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVm
UHRyPFJUQ1N0YXRzUmVxdWVzdD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc093blB0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRT
dHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKLQogICAgIC8vIFdlYktpdDo6V2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBu
ZWdvdGlhdGlvbk5lZWRlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0
ZUlDRUNhbmRpZGF0ZShjb25zdCBXZWJLaXQ6OldlYlJUQ0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURF
OwpAQCAtODMsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlD
RVN0YXRlKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25zdCBX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNo
YW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlciopIE9WRVJSSURFOwogCiAgICAgc3RhdGljIFdlYktpdDo6V2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiB0b1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCAyM2Q2NmJkMWNkYWU5MThiOTM2NTg5NTlmYWE5
YWUxZWUzNmQzOTNhLi5mYmE0OTJmZDQ0MmM2N2JhYWVlMWU5MTAyNjJiNzMxMzU5Yjg2ZmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcApAQCAtNjUsNyArNjUsNyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgotI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTE4LDggKzExOCw3IEBACiAjaW5jbHVkZSA8cHVi
bGljL1dlYkZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmg+Ci0jaW5jbHVkZSA8
cHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlZmVycmVyUG9saWN5Lmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlNjcm9sbGJhci5oPgpAQCAtNTg2LDEwICs1ODUsMTAgQEAgQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6
OklDRVN0YXRlTmV3LCBSVEMKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZUdhdGhlcmluZywgUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50OjpJY2VTdGF0ZUdhdGhlcmluZyk7CiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6SUNFU3RhdGVX
YWl0aW5nLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OkljZVN0YXRlV2FpdGluZyk7
CiAKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGVDb25uZWN0aW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDb25u
ZWN0aW5nKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6
OlJlYWR5U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVu
KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGVDbG9zaW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zaW5n
KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5
U3RhdGVDbG9zZWQsIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudDo6UmVhZHlTdGF0ZUNvbm5lY3RpbmcsIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6
UmVhZHlTdGF0ZUNvbm5lY3RpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGVPcGVuKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2luZywg
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xvc2luZyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDo6UmVh
ZHlTdGF0ZUNsb3NlZCwgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlQ2xv
c2VkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4N2M5ZjBhNTE0MzgxNWQx
MTkyNTE2N2VlOWFkMDM4YzM1MDZjZDBiLi5hYWNlY2VlZDBkZDRjNzY0ZjBhMWJmOTAyZjM5YTRl
YTlmZjM0YWI5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMTItMTEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRh
dGEgY2hhbm5lbCBkZXNjcmlwdG9yIHBhdHRlcm4gdG8gYSBoYW5kbGVyIHBhdHRlcm4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIEFkZGluZyBtb2NrcyB0byBi
ZSBhYmxlIHRvIHRlc3QgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoRGF0
YUNoYW5uZWxSZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChEYXRhQ2hhbm5lbFJlYWR5U3RhdGVU
YXNrOjpEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXI6Ok1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIpOgorICAgICAgICAo
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKE1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKE1vY2tX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKE1vY2tXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAo
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcik6CisgICAgICAgIChNb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjp0YXNrTGlzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChSVENQZWVy
Q29ubmVjdGlvblJlYWR5U3RhdGVUYXNrOjpSVENQZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNr
KToKKyAgICAgICAgKFJlbW90ZURhdGFDaGFubmVsVGFzazo6UmVtb3RlRGF0YUNoYW5uZWxUYXNr
KToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFD
aGFubmVsKToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3Ap
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIp
OgorCiAyMDEyLTEyLTEyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nIG9mIHRoZSB1bml0IHRlc3RzLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggYjZhMDNhMDczMmQ5MmZh
OTU2YTUxYWNiZDVmNzhlMmM4MjQzM2YyMS4uM2JlM2YyY2M3MjEwMDlhYTdhY2JmY2VkODc2OTg3
NWUzMDI0MDQ1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBA
IC0yNCw2ICsyNCw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmlu
Z1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaFJl
Y29nbml6ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY4
NGQ4NWRlN2Y4ZTJmM2NjNGNiMGUyMjA3ZmI1ZDZmYTI2MThhZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oIgorCisjaW5jbHVkZSAiVGFzay5oIgorI2luY2x1ZGUgPGFzc2VydC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyOwor
CitjbGFzcyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8
TW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4geworcHVibGljOgorICAgIERhdGFDaGFubmVs
UmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogb2JqZWN0LCBXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGRhdGFDaGFubmVsQ2xpZW50LCBXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgICAgIDogV2ViTWV0
aG9kVGFzazxNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihvYmplY3QpCisgICAgICAgICwg
bV9kYXRhQ2hhbm5lbENsaWVudChkYXRhQ2hhbm5lbENsaWVudCkKKyAgICAgICAgLCBtX3N0YXRl
KHN0YXRlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9W
RVJSSURFCisgICAgeworICAgICAgICBtX2RhdGFDaGFubmVsQ2xpZW50LT5kaWRDaGFuZ2VSZWFk
eVN0YXRlKG1fc3RhdGUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQqIG1fZGF0YUNoYW5uZWxDbGllbnQ7CisgICAgV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIG1fc3RhdGU7Cit9OworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKworTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6TW9ja1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcihXZWJTdHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUpCisgICAgOiBtX2Ns
aWVudCgwKQorICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICAsIG1fcmVsaWFibGUocmVsaWFibGUp
Cit7Cit9CisKK3ZvaWQgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFdl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50ID0g
Y2xpZW50OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgcG9zdFRhc2sobmV3IERhdGFDaGFu
bmVsUmVhZHlTdGF0ZVRhc2sodGhpcywgbV9jbGllbnQsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudDo6UmVhZHlTdGF0ZU9wZW4pKTsKK30KKwordW5zaWduZWQgbG9uZyBNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpidWZmZXJlZEFtb3VudCgpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKK2Jvb2wgTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29u
c3QgV2ViU3RyaW5nJiBkYXRhKQoreworICAgIGFzc2VydChtX2NsaWVudCk7CisgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVTdHJpbmdEYXRhKGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGFzc2VydChtX2NsaWVudCk7CisgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNsb3NlKCkKK3sKKyAgICBhc3Nl
cnQobV9jbGllbnQpOworICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNr
KHRoaXMsIG1fY2xpZW50LCBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ6OlJlYWR5U3Rh
dGVDbG9zZWQpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThmZmU3YzViYWQ4Mzk3YzcyNGM0MWQ2MWZhMjk5
ZDNhYjQ5OWNiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaAorI2RlZmlu
ZSBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKKworI2luY2x1ZGUgIldlYlRhc2suaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlN0cmluZy5oPgorCitjbGFzcyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
IDogcHVibGljIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyIHsKK3B1YmxpYzoKKyAg
ICBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKFdlYktpdDo6V2ViU3RyaW5nIGxhYmVsLCBi
b29sIHJlbGlhYmxlKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViS2l0OjpXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViU3RyaW5nIGxhYmVsKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlbGlhYmxlKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9yZWxpYWJsZTsgfQor
ICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKworICAgIC8v
IFdlYlRhc2sgcmVsYXRlZCBtZXRob2RzCisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qq
IHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKworcHJpdmF0ZToKKyAgICBNb2Nr
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKCk7CisKKyAgICBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYWJl
bDsKKyAgICBib29sIG1fcmVsaWFibGU7CisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Qg
bV90YXNrTGlzdDsKK307CisKKyNlbmRpZiAvLyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggY2ZkNzZkZTc0YWNmN2Zi
NTljMmQ1OTNmYzllYzlhNzAxYzRjM2UyOS4uYmJlYzI1YmQxNmI5NjcwYzQxZDU2YTdkMWEwNmVj
ZWQ0NjA3MGM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAK
ICNpbmNsdWRlICJNb2NrQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGFzay5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJN
ZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtQ29tcG9u
ZW50Lmg+CkBAIC0xMjgsODQgKzEyOSw0MSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdWNjZWVk
ZWQ7CiB9OwogCi1jbGFzcyBTdHJpbmdEYXRhVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdEYXRh
VGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJU
Q0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgV2ViU3RyaW5nJiBkYXRhKQotICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0
KQotICAgICAgICAsIG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCi0gICAgICAgICwgbV9kYXRh
KGRhdGEpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZF
UlJJREUKLSAgICB7Ci0gICAgICAgIG1fZGF0YUNoYW5uZWwuZGF0YUFycml2ZWQobV9kYXRhKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUlRDRGF0YUNoYW5uZWwgbV9kYXRhQ2hhbm5lbDsK
LSAgICBXZWJTdHJpbmcgbV9kYXRhOwotfTsKLQotY2xhc3MgQ2hhclB0ckRhdGFUYXNrIDogcHVi
bGljIFdlYk1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewotcHVi
bGljOgotICAgIENoYXJQdHJEYXRhVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBvYmplY3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKLSAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+KG9iamVjdCkKLSAgICAgICAgLCBtX2RhdGFDaGFubmVs
KGRhdGFDaGFubmVsKQotICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICB7Ci0gICAgICAg
IG1fZGF0YSA9IG5ldyBjaGFyW21fbGVuZ3RoXTsKLSAgICAgICAgbWVtY3B5KG1fZGF0YSwgZGF0
YSwgbV9sZW5ndGgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZF
UlJJREUKLSAgICB7Ci0gICAgICAgIG1fZGF0YUNoYW5uZWwuZGF0YUFycml2ZWQobV9kYXRhLCBt
X2xlbmd0aCk7Ci0gICAgICAgIGRlbGV0ZSBbXSBtX2RhdGE7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIFdlYlJUQ0RhdGFDaGFubmVsIG1fZGF0YUNoYW5uZWw7Ci0gICAgY2hhciogbV9kYXRhOwot
ICAgIHNpemVfdCBtX2xlbmd0aDsKLX07Ci0KLWNsYXNzIERhdGFDaGFubmVsUmVhZHlTdGF0ZVRh
c2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PiB7CitjbGFzcyBSVENQZWVyQ29ubmVjdGlvblJlYWR5U3RhdGVUYXNrIDogcHVibGljIFdlYk1l
dGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gewogcHVibGljOgotICAg
IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ciogb2JqZWN0LCBjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIFdlYlJUQ0Rh
dGFDaGFubmVsOjpSZWFkeVN0YXRlIHN0YXRlKQorICAgIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlT
dGF0ZVRhc2soTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50OjpSZWFkeVN0YXRlIHN0YXRlKQogICAgICAgICA6IFdlYk1ldGhvZFRhc2s8
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQotICAgICAgICAsIG1fZGF0
YUNoYW5uZWwoZGF0YUNoYW5uZWwpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICAg
ICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBydW5J
ZlZhbGlkKCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fZGF0YUNoYW5uZWwucmVhZHlTdGF0
ZUNoYW5nZWQobV9zdGF0ZSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VSZWFkeVN0YXRl
KG1fc3RhdGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBXZWJSVENEYXRhQ2hhbm5lbCBtX2Rh
dGFDaGFubmVsOwotICAgIFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlIG1fc3RhdGU7Cisg
ICAgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgbV9zdGF0ZTsKIH07CiAK
LWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgV2ViTWV0aG9k
VGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitjbGFzcyBSZW1vdGVEYXRh
Q2hhbm5lbFRhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPiB7CiBwdWJsaWM6Ci0gICAgUlRDUGVlckNvbm5lY3Rpb25SZWFkeVN0YXRlVGFz
ayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIFdlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50LCBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQ6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgUmVtb3RlRGF0YUNoYW5uZWxUYXNrKE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIG9iamVjdCwgV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIDogV2ViTWV0aG9kVGFzazxNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCiAgICAgICAgICwgbV9jbGllbnQoY2xpZW50
KQotICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRD
aGFuZ2VSZWFkeVN0YXRlKG1fc3RhdGUpOworICAgICAgICBXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIqIHJlbW90ZURhdGFDaGFubmVsID0gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIo
Ik1vY2tSZW1vdGVEYXRhQ2hhbm5lbCIsIHRydWUpOworICAgICAgICBtX2NsaWVudC0+ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwocmVtb3RlRGF0YUNoYW5uZWwpOwogICAgIH0KIAogcHJpdmF0ZToK
ICAgICBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZSBtX3N0YXRlOwogfTsK
IAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0zMjcsNDYgKzI4NSwxNiBAQCB2b2lkIE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmdldFN0YXRzKGNvbnN0IFdlYlJUQ1N0YXRzUmVx
dWVzdCYgcmVxdWVzdAogICAgIHBvc3RUYXNrKG5ldyBSVENTdGF0c1JlcXVlc3RTdWNjZWVkZWRU
YXNrKHRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCitXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYlN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCiB7Ci0gICAgbV9zdG9wcGVkID0gdHJ1ZTsKLX0K
LQotYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpvcGVuRGF0YUNoYW5uZWwo
Y29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsKQotewotICAgIGlmIChtX3N0b3Bw
ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlJUQ0RhdGFDaGFubmVsIHJlbW90
ZURhdGFDaGFubmVsOwotICAgIHJlbW90ZURhdGFDaGFubmVsLmluaXRpYWxpemUoIk1vY2tSZW1v
dGVEYXRhQ2hhbm5lbCIsIGRhdGFDaGFubmVsLnJlbGlhYmxlKCkpOwotICAgIHJlbW90ZURhdGFD
aGFubmVsLnJlYWR5U3RhdGVDaGFuZ2VkKFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlT3Bl
bik7Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKHJlbW90ZURhdGFDaGFu
bmVsKTsKKyAgICBwb3N0VGFzayhuZXcgUmVtb3RlRGF0YUNoYW5uZWxUYXNrKHRoaXMsIG1fY2xp
ZW50KSk7CiAKLSAgICBwb3N0VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayh0aGlz
LCBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVPcGVuKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6
Y2xvc2VEYXRhQ2hhbm5lbChjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwpCi17
Ci0gICAgcG9zdFRhc2sobmV3IERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sodGhpcywgZGF0YUNo
YW5uZWwsIFdlYlJUQ0RhdGFDaGFubmVsOjpSZWFkeVN0YXRlQ2xvc2VkKSk7CisgICAgcmV0dXJu
IG5ldyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKGxhYmVsLCByZWxpYWJsZSk7CiB9CiAK
LWJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29u
c3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBXZWJTdHJpbmcmIGRhdGEp
Ci17Ci0gICAgaWYgKG1fc3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGF0
YUNoYW5uZWwuZGF0YUFycml2ZWQoZGF0YSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgV2ViUlRD
RGF0YUNoYW5uZWwmIGRhdGFDaGFubmVsLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KQordm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKIHsKLSAgICBp
ZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkYXRhQ2hhbm5lbC5k
YXRhQXJyaXZlZChkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiB0cnVlOworICAgIG1fc3RvcHBl
ZCA9IHRydWU7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oCmluZGV4IGExNTIyZjRmYmU2ZmUzYjVmYTQ0MjJkNWVkNzA5OGYw
YjMyOGFjMDUuLjlkMGVkNzk2ZDFlMzkzYjY1MTZhZTRiMzQwODQ2Y2EwODExNjI0OTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiV2ViVGFzay5oIgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaD4KQEAg
LTYxLDEzICs2MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWRkU3RyZWFtKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRp
YUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShj
b25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBXZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNy
ZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxp
YWJsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hh
bm5lbCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgV2ViS2l0OjpXZWJSVENE
YXRhQ2hhbm5lbCYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZURhdGFDaGFubmVsKGNvbnN0IFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWwmKSBP
VkVSUklERTsKLQogICAgIC8vIFdlYlRhc2sgcmVsYXRlZCBtZXRob2RzCiAgICAgV2ViVGVzdFJ1
bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDI2Njg1OWM5MWYwYzlkYTUxOTBjOWQ0ZWIwYTk3ZjU0ZGQzYTIzMDUuLjBjZjBjMDBj
MTMyZDI0YTBhNmIxNDQ4OWZmZTg3ZmQ2ZWY5ZjU0ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0xMi0xMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBNZWRpYVN0cmVhbSBBUEk6IENoYW5nZSB0aGUgZGF0YSBjaGFubmVsIGRlc2NyaXB0b3Ig
cGF0dGVybiB0byBhIGhhbmRsZXIgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCisKKyAgICAgICAgRXhwYW5kaW5nIGRhdGEgY2hhbm5lbHMgdGVzdHMuCisKKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRh
dGFjaGFubmVsLmh0bWw6CisKIDIwMTItMTEtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSGVhcCBzbmFwc2hvdCBjcmFz
aGVzIG9uIGFueSBwYWdlIGluIE1hY09TIENhbmFyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFj
aGFubmVsLWV4cGVjdGVkLnR4dAppbmRleCA3NTk4OTRlMGFmZmJlNzNhZmVlNTUwNzNhY2Q0NmU1
ODNjMTU4ODBmLi4zYWFmYzZmMTU2YjM0MTQ2NjMwMTYwY2QxNTE4NDM0NDIwZmEyMjM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRh
dGFjaGFubmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywx
OCBAQCBUZXN0cyBSVENEYXRhQ2hhbm5lbC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
CitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMSIpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIFBBU1MgZGMucmVsaWFibGUgaXMgdHJ1ZQorUEFTUyBkYyA9IHBjLmNyZWF0
ZURhdGFDaGFubmVsKCJsYWJlbDIiLCB7fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFT
UyBkYy5yZWxpYWJsZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxh
YmVsMyIsIHtyZWxpYWJsZTp0cnVlfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBk
Yy5yZWxpYWJsZSBpcyB0cnVlCitQQVNTIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVs
MyIsIHtyZWxpYWJsZTpmYWxzZX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgZGMu
cmVsaWFibGUgaXMgZmFsc2UKIFBBU1MgcGNfb25vcGVuIHdhcyBjYWxsZWQKK1BBU1MgZGMgPSBw
Yy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwiKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIGRjLnJlYWR5U3RhdGUgaXMgJ2Nvbm5lY3RpbmcnCiBQQVNTIHBjX29uZGF0YWNoYW5uZWwg
d2FzIGNhbGxlZAotUEFTUyBldmVudC5jaGFubmVsLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNT
IGRjX29ub3BlbiB3YXMgY2FsbGVkCiBQQVNTIGRjLnJlYWR5U3RhdGUgaXMgJ29wZW4nCiBQQVNT
IGRjLmxhYmVsIGlzICdsYWJlbCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwuaHRtbAppbmRleCA0
Mzc5YTU5OWQ0YTA3MjgyNjdkNzQ5ODViYjQ5MjJkNzhiYjc4Y2Q1Li4yNDM1Y2NlYmJiZDUwYTVh
ZDNlYTY1MTNiMDljMzc5MjBhNWViZWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1s
CkBAIC03MCwyNSArNzAsMjMgQEAgZnVuY3Rpb24gZGNfb25vcGVuKCkgewogCiBmdW5jdGlvbiBw
Y19vbmRhdGFjaGFubmVsKGUpIHsKICAgICB0ZXN0UGFzc2VkKCJwY19vbmRhdGFjaGFubmVsIHdh
cyBjYWxsZWQiKTsKLSAgICBldmVudCA9IGU7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmNoYW5uZWwu
cmVhZHlTdGF0ZSIsICInb3BlbiciKTsKIH0KIAogZnVuY3Rpb24gcGNfb25vcGVuKCkgewogICAg
IHRlc3RQYXNzZWQoInBjX29ub3BlbiB3YXMgY2FsbGVkIik7Ci0gICAgZGMgPSBwYy5jcmVhdGVE
YXRhQ2hhbm5lbCgibGFiZWwiKTsKKyAgICBzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVE
YXRhQ2hhbm5lbCgibGFiZWwiKTsnKTsKICAgICBzaG91bGRCZSgiZGMucmVhZHlTdGF0ZSIsICIn
Y29ubmVjdGluZyciKTsKICAgICBkYy5vbm9wZW4gPSBkY19vbm9wZW47CiB9CiAKIHBjID0gbmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOwotZGMgPSBwYy5jcmVhdGVEYXRh
Q2hhbm5lbCgibGFiZWwxIik7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hh
bm5lbCgibGFiZWwxIik7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAidHJ1ZSIpOwotZGMg
PSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwyIiwge30pOworc2hvdWxkTm90VGhyb3coJ2Rj
ID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMiIsIHt9KTsnKTsKIHNob3VsZEJlKCJkYy5y
ZWxpYWJsZSIsICJ0cnVlIik7Ci1kYyA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJsYWJlbDMiLCB7
cmVsaWFibGU6dHJ1ZX0pOworc2hvdWxkTm90VGhyb3coJ2RjID0gcGMuY3JlYXRlRGF0YUNoYW5u
ZWwoImxhYmVsMyIsIHtyZWxpYWJsZTp0cnVlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUi
LCAidHJ1ZSIpOwotZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFiZWwzIiwge3JlbGlhYmxl
OmZhbHNlfSk7CitzaG91bGROb3RUaHJvdygnZGMgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgibGFi
ZWwzIiwge3JlbGlhYmxlOmZhbHNlfSk7Jyk7CiBzaG91bGRCZSgiZGMucmVsaWFibGUiLCAiZmFs
c2UiKTsKIAogcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>