<?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>94614</bug_id>
          
          <creation_ts>2012-08-21 10:25:40 -0700</creation_ts>
          <short_desc>REGRESSION(r126076): Caused crashes during compositor shutdown in Aura builds of Chromium (Requested by kbr_google on #webkit).</short_desc>
          <delta_ts>2012-08-21 13:23:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>94174</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>700885</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 10:25:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126076 broke the build:
Caused crashes during compositor shutdown in Aura builds of Chromium (Requested by kbr_google on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700887</commentid>
    <comment_count>1</comment_count>
      <attachid>159718</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 10:26:24 -0700</bug_when>
    <thetext>Created attachment 159718
ROLLOUT of r126076

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700890</commentid>
    <comment_count>2</comment_count>
      <attachid>159718</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 10:34:27 -0700</bug_when>
    <thetext>Comment on attachment 159718
ROLLOUT of r126076

Clearing flags on attachment: 159718

Committed r126169: &lt;http://trac.webkit.org/changeset/126169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700891</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 10:34:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700899</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-21 10:39:01 -0700</bug_when>
    <thetext>Reverted r126169 for reason:

Crashes already fixed downstream

Committed r126170: &lt;http://trac.webkit.org/changeset/126170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700919</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-21 10:51:38 -0700</bug_when>
    <thetext>Reverted r126170 for reason:

I spoke too soon

Committed r126174: &lt;http://trac.webkit.org/changeset/126174&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159718</attachid>
            <date>2012-08-21 10:26:24 -0700</date>
            <delta_ts>2012-08-21 10:34:27 -0700</delta_ts>
            <desc>ROLLOUT of r126076</desc>
            <filename>bug-94614-20120821173243.patch</filename>
            <type>text/plain</type>
            <size>197220</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjOWUzZjkwYzU3YjFk
NTdhN2Y0NjUxYWY0ODI2ZDAzNjg0Yjk3YWViLi41NGYyZWFkOGM4ODQxZWQ3MzZmYzQ5ZDk2ODhi
ZWYyMTUwOTMzMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0wOC0yMSAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjA3NiwgcjEyNjA5OSwgYW5kIHIxMjYxMDYuCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjA3NgorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjYwOTkKKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2MTA2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDYxNAorCisgICAgICAgIENhdXNlZCBjcmFzaGVzIGR1cmlu
ZyBjb21wb3NpdG9yIHNodXRkb3duIGluIEF1cmEgYnVpbGRzIG9mCisgICAgICAgIENocm9taXVt
IChSZXF1ZXN0ZWQgYnkga2JyX2dvb2dsZSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRlbnRMYXllcjo6V2ViQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGVudExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJF
eHRlcm5hbFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJF
eHRlcm5hbFRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJJT1N1cmZhY2VMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3Vy
ZmFjZUxheWVyOjpXZWJJT1N1cmZhY2VMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkltYWdlTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViSW1hZ2VM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OldlYkxheWVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6On5XZWJMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6aXNO
dWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnRvKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXI6OnRvQ29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6dW53cmFwKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmNvbnN0VW53cmFwKToKKyAgICAgICAgKFdlYktp
dDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNjcm9sbGFibGVMYXllcjo6V2ViU2Nyb2xsYWJsZUxheWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2Nyb2xsYWJsZUxheWVyOjp+V2ViU2Nyb2xsYWJsZUxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViU2Ny
b2xsYmFyTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5
ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTb2xpZENvbG9yTGF5ZXIpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0xheWVyOjpXZWJWaWRlb0xheWVyKToKKwogMjAxMi0wOC0yMCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUkVHUkVTU0lPTigxMjYw
NzYpIFNob3VsZCBub3QgdG91Y2ggb2xkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bV9jb250ZW50
c0xheWVyIHdoZW4gc2V0dGluZyB1cCBhIG5ldyBjb250ZW50cyBsYXllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGFkM2ZkNzNkZjcwOWY0YTE5ODFmZGUzYzc5NWY0ZmJjM2I1M2Y2YTMuLmI5NjI0ODFjNmE2OTli
YTVkZDkwNjk2OTI0ODIwYjliNTM0NDBmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAor
MjAxMi0wOC0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjA3NiwgcjEyNjA5OSwgYW5kIHIx
MjYxMDYuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjA3Ngor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjYwOTkKKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2MTA2CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDYxNAorCisgICAgICAgIENhdXNlZCBj
cmFzaGVzIGR1cmluZyBjb21wb3NpdG9yIHNodXRkb3duIGluIEF1cmEgYnVpbGRzIG9mCisgICAg
ICAgIENocm9taXVtIChSZXF1ZXN0ZWQgYnkga2JyX2dvb2dsZSBvbiAjd2Via2l0KS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpT
Y3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcml2YXRlOjpzZXRTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcml2YXRlOjpoYXNTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvclByaXZhdGU6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JvbGxiYXJMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9uRmFzdFNjcm9s
bGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6fkNhbnZhczJETGF5ZXJC
cmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6cHJlcGFyZUZv
ckRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFjcXVpcmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
Lmg6CisgICAgICAgIChDYW52YXMyRExheWVyQnJpZGdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OkRyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjp+RHJhd2luZ0J1ZmZlclByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OmxheWVyKToKKyAgICAg
ICAgKERyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpHcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp+R3JhcGhpY3NMYXllckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6d2lsbEJlRGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjp1cGRhdGVOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1Rv
TWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwcmltYXJ5
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9y
bUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVi
dWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNob3JQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzU2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpoYXNDb250ZW50
c0xheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisKIDIwMTItMDgtMjEgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZG8g
bm90IHVzZSB3aW5kb3cncyBldmFsIGluIEluamVjdGVkU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDdmYTE2YWFmZTcxNWIyODhjNWE4MDBhZDkwZTk0OTEzOGRhOWE4MGQuLmE5
YjAyOWE5ZDVhMmJkMGY2ZmExOGY0ZmZmNjU2ZjVmYjEzMzRhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBACisyMDEyLTA4LTIxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI2MDc2LCByMTI2MDk5LCBhbmQgcjEyNjEwNi4KKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2MDc2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEyNjA5OQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMjYxMDYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0NjE0CisKKyAgICAgICAgQ2F1c2VkIGNyYXNoZXMgZHVyaW5nIGNvbXBvc2l0b3Igc2h1
dGRvd24gaW4gQXVyYSBidWlsZHMgb2YKKyAgICAgICAgQ2hyb21pdW0gKFJlcXVlc3RlZCBieSBr
YnJfZ29vZ2xlIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAg
ICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKToK
KyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgICogc3Jj
L1dlYkNvbnRlbnRMYXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRlbnRMYXllcjo6Y2xlYXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5
ZXI6OnNldERvdWJsZVNpZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVyOjpz
ZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVyOjpzZXRV
c2VMQ0RUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVyOjpzZXREcmF3Q2hl
Y2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExh
eWVyOjpXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcjo6b3BlcmF0b3Ig
UGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4pOgorICAgICAgICAqIHNyYy9XZWJDb250
ZW50TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVu
dExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6On5XZWJD
b250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6
cGFpbnRDb250ZW50cyk6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaDoKKyAg
ICAgICAgKFdlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYlRleHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHR1cmVV
cGRhdGVySW1wbDo6V2ViVGV4dHVyZVVwZGF0ZXJJbXBsKToKKyAgICAgICAgKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6c2V0RmxpcHBlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OnNldFByZW11bHRpcGxpZWRBbHBoYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxsTW9kaWZ5VGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRSYXRlTGltaXRDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmg6IFJl
bW92ZWQuCisgICAgICAgICogc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXI6OnNldElPU3VyZmFjZVBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllcjo6V2ViSU9TdXJm
YWNlTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VMYXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5oLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW1hZ2VMYXllcjo6V2ViSW1hZ2VMYXllcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkltYWdlTGF5ZXI6OnNldEJpdG1hcCk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXI6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjplcXVhbHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjph
ZGRDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjppbnNlcnRDaGlsZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6c2V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6cmVtb3Zl
RnJvbVBhcmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpyZW1vdmVBbGxDaGlsZHJl
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRBbmNob3JQb2ludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjphbmNob3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyOjpzZXRBbmNob3JQb2ludFopOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6YW5jaG9y
UG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldEJvdW5kcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjpib3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6
c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjptYXNrc1RvQm91
bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldE1hc2tMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjpzZXRSZXBsaWNhTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpvcGFjaXR5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldE9wYXF1ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyOjpvcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0UG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6cG9zaXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
cjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllcjo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXI6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldFVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0RmlsdGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXREZWJ1Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6c2V0RGVidWdOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldEFu
aW1hdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmFkZEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllcjo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6
cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpoYXNBY3RpdmVB
bmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6dHJhbnNmZXJBbmltYXRpb25z
VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3VyZmFjZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjpXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPik6CisgICAgICAgICogc3JjL1dlYkxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6On5XZWJMYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJMYXllckltcGwuaDoKKyAgICAg
ICAgKFdlYkxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5ZXIpOgorICAgICAg
ICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2UpOgorICAgICAgICAqIHNyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6
CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y29tbWl0QmFja2lu
Z1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRP
cGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpwbGF0Zm9y
bUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oOgorICAgICAg
ICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNjcm9sbGFibGVM
YXllci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZUxheWVySW1wbC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
Y3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Ny
b2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxl
TGF5ZXI6OnNldEZpeGVkVG9Db250YWluZXJMYXllcik6CisgICAgICAgICogc3JjL1dlYlNjcm9s
bGJhckxheWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNjcm9sbGJhckxheWVySW1wbC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTY3JvbGxiYXJMYXllcjo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xs
YmFyTGF5ZXI6OldlYlNjcm9sbGJhckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xs
YmFyTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVy
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVyQ2hyb21pdW0+KToKKyAgICAgICAg
KiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dl
YlNvbGlkQ29sb3JMYXllci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvbGlkQ29sb3JMYXllcjo6V2ViU29saWRDb2xvckxheWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU29saWRDb2xvckxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNy
Yy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRD
b2xvckxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxh
eWVySW1wbDo6V2ViU29saWRDb2xvckxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNvbGlk
Q29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJWaWRlb0xheWVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWRlb0xheWVyOjpXZWJWaWRlb0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9M
YXllcjo6YWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogdGVzdHMvSW1hZ2VM
YXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9XZWJMYXllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVHJlZVZp
ZXdUZXN0LmNwcDoKKwogMjAxMi0wOC0yMSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JOiByZW5hbWUgYWRkTWVtYmVy
IGZvciBzdHJpbmdzIGFuZCBLVVJMIHRvIGFkZEluc3RydW1lbnRlZE1lbWJlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCmluZGV4IDMx
MjEwN2Y5Y2I2YzZiY2E3OWQxMDNkZWQzMDA2YTI1MmM4ZGUyN2EuLjczMzZiZmFiY2Q3NDYxODIx
OGI5ZGVkZWJhMDFiYzI3MzIzMjZjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaApAQCAtMjcsMzcgKzI3LDU1IEBACiAjZGVmaW5l
IFdlYkNvbnRlbnRMYXllcl9oCiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJTY3JvbGxhYmxlTGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGVu
dExheWVyQ2hyb21pdW07Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVu
dExheWVyQ2xpZW50OworY2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29u
dGVudExheWVyIHsKK2NsYXNzIFdlYkNvbnRlbnRMYXllciA6IHB1YmxpYyBXZWJTY3JvbGxhYmxl
TGF5ZXIgewogcHVibGljOgotICAgIC8vIFRoZSBjbGllbnQgbXVzdCBvdXRsaXZlIHRoZSBXZWJD
b250ZW50TGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ29udGVudExheWVyKiBj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViQ29udGVudExheWVyIGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAorICAgIFdl
YkNvbnRlbnRMYXllcigpIHsgfQorICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50
TGF5ZXImIGxheWVyKSA6IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVh
bCB+V2ViQ29udGVudExheWVyKCkgeyB9CisgICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0o
Y29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikKKyAgICB7CisgICAgICAgIFdlYkxheWVyOjph
c3NpZ24obGF5ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgLy8gVGhl
IFdlYkNvbnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KLSAgICB2aXJ0
dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgV2ViQ29u
dGVudExheWVyQ2xpZW50IGlzIGdvaW5nIGF3YXkgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8vIFNldCB0byB0cnVl
IGlmIHRoZSBiYWNrc2lkZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2li
bGUgd2hlbiBjb21wb3NpdGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIHZpcnR1
YWwgdm9pZCBzZXREb3VibGVTaWRlZChib29sKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldERvdWJsZVNpZGVkKGJvb2wpOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFj
dG9yIHVzZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4g
RGVmYXVsdHMgdG8gMS4wLgotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwog
CiAgICAgLy8gU2V0IHRvIHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFs
aWFzaW5nLiBPbmx5IHNldCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAg
IC8vIGRyYXduIGluIGEgd2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBi
YWNrZ3JvdW5kLCBub3Qgcm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0
byBmYWxzZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlTENEVGV4dChib29sKSA9IDA7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCk7CiAKICAgICAvLyBTZXQgdG8g
ZHJhdyBhIHN5c3RlbS1kZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3Vs
ZCBvdGhlcndpc2UgZHJhdyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0
dWFsIGNvbnRlbnRzIGFyZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdp
bGwgZHJhdyB0aGUgbGF5ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRp
bGVzLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpID0gMDsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKTsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+Jik7CisgICAgV2ViQ29udGVudExh
eWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDb250
ZW50TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmgKaW5kZXggOTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUx
MzczY2NlZjcxYjE3Ny4uYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3OTY0NmI5MDgxZjQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJXZWJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBUZXh0dXJlTGF5ZXJDaHJvbWl1bTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDAsNDMgKzQ0LDQ5IEBAIGNs
YXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhy
ZWFkIG1vZGUsIHRoaXMgbWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgp
LgogLy8gV2hlbiB1c2luZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBh
dCBhbiBhcmJpdHJhcnkgdGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVz
dHJveWVkLgotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgeworY2xhc3MgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBv
d25lciBvZiB0aGlzIGxheWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMg
Y2xpZW50IHdpbGwKICAgICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lz
aGVzIHRvIHByb2R1Y2UgYSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcg
ZnJvbnQgYnVmZmVyIHRleHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2Fu
dHMgdG8KICAgICAvLyBpbXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlz
IHN5bmNocm9uaXplZCB3aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgLy8g
VGhlIGNsaWVudCBtdXN0IG91dGxpdmUgdGhlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyLgotICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBjcmVhdGUoV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqID0gMCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
Q2xpZW50KiA9IDApOwogCi0gICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7
IH0KKyAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY2xpZW50IGZvciB0aGlzIGxheWVyIGlzIGdv
aW5nIGF3YXkgYW5kIHNob3VsZG4ndCBiZSB1c2VkLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBj
bGVhckNsaWVudCgpOwogCi0gICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJFeHRlcm5hbFRl
eHR1cmVMYXllcigpIHsgfQogCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJl
c2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8vIGNvbXBvc2l0
b3IgY29udGV4dC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7CiAKICAgICAv
LyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRo
ZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZsaXBwZWQoYm9vbCkgPSAwOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGbGlwcGVkKGJv
b2wpOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0
aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAgdmlydHVhbCB2
b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9IDA7CisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKIAogICAgIC8vIFNldHMgd2hl
dGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVsdHMgdG8gZmFs
c2UuCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSA9IDA7CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGxh
eWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERlZmF1bHRzIHRv
IHRydWUuCi0gICAgdmlydHVhbCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sKSA9IDA7
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sKTsKIAog
ICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVkIHRleHR1cmUg
SUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbE1vZGlmeVRleHR1cmUoKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHdpbGxNb2Rp
ZnlUZXh0dXJlKCk7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCBi
ZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcgd29ya3MgYnkg
YmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0KCkgY2FsbHMg
aWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9vbCk7CisKK3ByaXZhdGU6CisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bT4pOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCBiY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdj
ZjVhMDg3NjZmMjg5Li4zN2E0YzY3OTJjMWM3NmVlY2MwYzYwYzBmM2ZjOWQwZWEzZDMzOWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklPU3VyZmFjZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VM
YXllci5oCkBAIC0zMCwxOSArMzAsMjcgQEAKICNpbmNsdWRlICJXZWJMYXllci5oIgogI2luY2x1
ZGUgIldlYlNpemUuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSU9TdXJmYWNlTGF5
ZXJDaHJvbWl1bTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSU9TdXJm
YWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgeworY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIg
OiBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YklPU3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
T1N1cmZhY2VMYXllciBjcmVhdGUoKTsKIAorICAgIFdlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAg
ICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgV2ViTGF5
ZXIqIGxheWVyKCkgPSAwOwotCiAgICAgLy8gU2V0cyB0aGUgSU8gc3VyZmFjZSBpZCB0aGF0IHJl
cHJlc2VudHMgdGhpcyBsYXllcidzIGNvbnRlbnRzLgotICAgIHZpcnR1YWwgdm9pZCBzZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplKSA9IDA7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJm
YWNlSWQsIFdlYlNpemUpOworCitwcml2YXRlOgorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SU9TdXJm
YWNlTGF5ZXJDaHJvbWl1bT4pOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VMYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKaW5k
ZXggYzc3MzdmMzFhMzc5NmZkMDRkY2RjNGJkZWYyNmI1YWI1NjBjMDE2ZC4uYTkxNjgzNWYyMDVi
YzA2ZjU4NGQ0MjMzMmE0MWU0YzYwZTk5MDBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKQEAgLTMwLDE2ICszMCwyNCBAQAogI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYkltYWdlTGF5ZXIgeworY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBX
ZWJMYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSW1hZ2VMYXll
ciogY3JlYXRlKCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSW1hZ2VMYXllciBjcmVh
dGUoKTsKIAorICAgIFdlYkltYWdlTGF5ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJJbWFnZUxh
eWVyKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Qml0bWFwKFNrQml0bWFwKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEJpdG1hcChTa0JpdG1hcCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBl
eHBsaWNpdCBXZWJJbWFnZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9t
aXVtPik7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDYwZWQ2OTQyMzlkYTM0OTNlZjIw
MGE0NjA0Mjc2OTkxMTI2MzUzMGIuLjY0MzFmODQ4YzZhOThmOWM2ZWIyNWMxZGNhZGMyYTEzNjIz
ZDY1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAg
LTI5LDEzICsyOSwxMiBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIldl
YkNvbG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUG9pbnQuaCIK
ICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViUmVjdC5oIgogI2luY2x1
ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBjbGFzcyBTa01hdHJp
eDQ0OworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVtOyB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7CkBAIC00NSw2OSArNDQs
NzMgQEAgc3RydWN0IFdlYkZsb2F0UG9pbnQ7CiBzdHJ1Y3QgV2ViRmxvYXRSZWN0Owogc3RydWN0
IFdlYlNpemU7CiAKLWNsYXNzIFdlYkxheWVySW1wbDsKLQogY2xhc3MgV2ViTGF5ZXIgewogcHVi
bGljOgotI2RlZmluZSBXRUJMQVlFUl9JU19QVVJFX1ZJUlRVQUwKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJMYXllciogY3JlYXRlKCk7Ci0KLSAgICB2aXJ0dWFsIH5XZWJMYXllcigpIHsg
fQotCi0gICAgLy8gUmV0dXJucyBhIHBvc2l0aXZlIElEIHRoYXQgd2lsbCBiZSB1bmlxdWUgYWNy
b3NzIGFsbCBXZWJMYXllcnMgYWxsb2NhdGVkIGluIHRoaXMgcHJvY2Vzcy4KLSAgICB2aXJ0dWFs
IGludCBpZCgpIGNvbnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJMYXllciBj
cmVhdGUoKTsKKworICAgIFdlYkxheWVyKCkgeyB9CisgICAgV2ViTGF5ZXIoY29uc3QgV2ViTGF5
ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KKyAgICB2aXJ0dWFsIH5XZWJMYXllcigpIHsg
cmVzZXQoKTsgfQorICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXImIGxheWVy
KQorICAgIHsKKyAgICAgICAgYXNzaWduKGxheWVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwo
KTsgfQorICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1
YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CiAKICAgICAvLyBTZXRzIGEgcmVnaW9uIG9mIHRo
ZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JikgPSAwOwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3Qm
KTsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRz
IHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0g
MDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgLy8gVGhlc2Ug
ZnVuY3Rpb25zIGRvIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgV2ViTGF5ZXIqIHBhcmFtZXRl
ci4KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoV2ViTGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGluc2VydENoaWxkKFdlYkxheWVyKiwgc2l6ZV90IGluZGV4KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3
TGF5ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9y
PFdlYkxheWVyKj4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgPSAwOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBhZGRDaGlsZChjb25zdCBXZWJMYXllciYpOworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBpbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYsIHNpemVfdCBpbmRleCk7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNl
LCBjb25zdCBXZWJMYXllciYgbmV3TGF5ZXIpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRD
aGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
Q2hpbGRyZW4oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBXZWJG
bG9hdFBvaW50JikgPSAwOwotICAgIHZpcnR1YWwgV2ViRmxvYXRQb2ludCBhbmNob3JQb2ludCgp
IGNvbnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3Qg
V2ViRmxvYXRQb2ludCYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRQb2ludCBhbmNob3JQ
b2ludCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCkg
PSAwOwotICAgIHZpcnR1YWwgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3QgPSAwOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQpOworICAgIFdFQktJVF9FWFBP
UlQgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91
bmRzKGNvbnN0IFdlYlNpemUmKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJTaXplIGJvdW5kcygpIGNv
bnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUm
KTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgYm91bmRzKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG1h
c2tzVG9Cb3VuZHMoKSBjb25zdCA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE1hc2tz
VG9Cb3VuZHMoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIG1hc2tzVG9Cb3VuZHMoKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2FMYXllcihXZWJMYXllciopID0gMDsKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0TWFza0xheWVyKGNvbnN0IFdlYkxheWVyJik7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFJlcGxpY2FMYXllcihjb25zdCBXZWJMYXllciYpOwogCi0gICAgdmly
dHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIGZsb2F0IG9wYWNp
dHkoKSBjb25zdCA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQp
OworICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIHNldE9wYXF1ZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNv
bnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0T3BhcXVlKGJvb2wpOworICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBvcGFxdWUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
b3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgPSAwOwotICAgIHZpcnR1YWwgV2ViRmxvYXRQ
b2ludCBwb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UG9z
aXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYpOworICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRQ
b2ludCBwb3NpdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJh
bnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN1Ymxh
eWVyVHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwotICAgIHZp
cnR1YWwgU2tNYXRyaXg0NCBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYpOwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIFdFQktJVF9FWFBPUlQgU2tNYXRyaXg0NCBzdWJsYXll
clRyYW5zZm9ybSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25z
dCBTa01hdHJpeDQ0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7Ci0gICAgdmlydHVhbCBTa01hdHJpeDQ0IHRy
YW5zZm9ybSgpIGNvbnN0ID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VHJhbnNmb3Jt
KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgV0VCS0lUX0VYUE9SVCBTa01h
dHJpeDQ0IHRyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBsYXll
ciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIHZpcnR1YWwgdm9pZCBz
ZXREcmF3c0NvbnRlbnQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdCA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERyYXdzQ29udGVudChib29s
KTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCkgPSAwOworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKIAogICAgIC8vIE1hcmsgdGhhdCB0aGlzIGxheWVy
IHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91YmxlLXNpZGVkCiAgICAg
Ly8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFja2ZhY2UgdmlzaWJp
bGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTYsNjggKzExOSwxMDUgQEAgcHVibGljOgogICAgIC8vIE5v
dGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZpc2liaWxpdHkgdGhl
IGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUgYSBjb250ZW50cyBs
YXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBldGMpLgotICAgIHZp
cnR1YWwgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgPSAwOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7Cisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7CiAKICAg
ICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5ld2x5IGluc3Rh
bnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgotICAgIHZpcnR1YWwg
dm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpOwog
CiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRocm91Z2ggdGhlIGJh
Y2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBmaWx0ZXJzIGFyZSBv
bmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3RseQogICAgIC8vIHRv
IGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3JvdW5kLiBUaGlzIG1l
YW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQtZmlsdGVyZWQgbGF5
ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwgdHJhbnNmb3Jtcyks
IGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0ZXJzLgotICAgIHZp
cnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25z
JikgPSAwOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25z
dCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3Jk
ZXJDb2xvcihjb25zdCBXZWJDb2xvciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdC
b3JkZXJXaWR0aChmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z05hbWUoV2Vi
U3RyaW5nKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3Io
Y29uc3QgV2ViQ29sb3ImKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGVidWdCb3JkZXJX
aWR0aChmbG9hdCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERlYnVnTmFtZShXZWJTdHJp
bmcpOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHdoZW4gYW5p
bWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUgV2ViTGF5ZXIgZG9l
cyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQgaXMKICAgICAvLyB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUgbGF5ZXIncyBkZWxl
Z2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0gICAgdmlydHVhbCB2
b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVnYXRlKikgPSAwOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxl
Z2F0ZSopOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0aW9uIGNhbm5vdCBi
ZSBhZGRlZC4KLSAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopID0g
MDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopOwog
CiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkgPSAwOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKTsKIAogICAg
IC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQgdGFyZ2V0aW5nIHRo
ZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBh
bmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgPSAwOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBXZWJBbmltYXRp
b246OlRhcmdldFByb3BlcnR5KTsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5pbWF0aW9ucyB3aXRo
IHRoZSBnaXZlbiBpZC4KLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oaW50IGFuaW1h
dGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkgPSAwOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBw
YXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKIAogICAg
IC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3VtZSBhbGwgYW5pbWF0
aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2FtZSB0
aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0gICAgdmlydHVhbCB2
b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1Rp
bWUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpb25zKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBhbnkg
YWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIHZpcnR1YWwgYm9vbCBo
YXNBY3RpdmVBbmltYXRpb24oKSA9IDA7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGhhc0FjdGl2
ZUFuaW1hdGlvbigpOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRpb25zIHJ1bm5pbmcg
b24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQW5pbWF0aW9u
c1RvKFdlYkxheWVyKikgPSAwOwotCi0gICAgLy8gU2Nyb2xsaW5nCi0gICAgdmlydHVhbCB2b2lk
IHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbGFibGUoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhh
bmRsZXJzKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOworICAgIFdFQktJVF9F
WFBPUlQgdm9pZCB0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciopOwogCiAgICAgLy8gRm9y
Y2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJlIGlzIG5vIGJlbmVm
aXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxpdGF0ZSBiZW5jaG1h
cmtzIGFuZCB0ZXN0cy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJv
b2wpID0gMDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJv
b2wpOworCisgICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRlciBzdXJmYWNlLCBpZiBpdCBo
YXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCisgICAgLy8gY2FzZXMgLSBpZiB5
b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcy4KKyAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBUIHRvKCkKKyAgICB7CisgICAgICAgIFQgcmVzOworICAgICAgICByZXMuV2ViTGF5ZXI6
OmFzc2lnbigqdGhpcyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFQg
cmVzOworICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7CisgICAgICAgIHJldHVy
biByZXM7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTGF5ZXIo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7CisgICAgV2Vi
TGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bT4oKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndyYXAoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3ByaXZhdGUuZ2V0KCkp
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIGNvbnN0VW53cmFw
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4obV9w
cml2YXRlLmdldCgpKTsKKyAgICB9CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFdlYlByaXZh
dGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRlOwogfTsKIAoraW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCit7Cisg
ICAgcmV0dXJuIGEuZXF1YWxzKGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkxheWVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVMYXll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2MzgwZmQ4ZDc2YWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cm9sbGFibGVMYXllci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcm9s
bGFibGVMYXllcl9oCisjZGVmaW5lIFdlYlNjcm9sbGFibGVMYXllcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorI2luY2x1ZGUgIldlYlBvaW50Lmgi
CisjaW5jbHVkZSAiV2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2Nyb2xsYWJsZUxheWVyIDogcHVibGljIFdlYkxheWVy
IHsKK3B1YmxpYzoKKyAgICBXZWJTY3JvbGxhYmxlTGF5ZXIoKSB7IH0KKyAgICBXZWJTY3JvbGxh
YmxlTGF5ZXIoY29uc3QgV2ViU2Nyb2xsYWJsZUxheWVyJiBsYXllcikgOiBXZWJMYXllcihsYXll
cikgeyB9CisgICAgdmlydHVhbCB+V2ViU2Nyb2xsYWJsZUxheWVyKCkgeyB9CisgICAgV2ViU2Ny
b2xsYWJsZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2Nyb2xsYWJsZUxheWVyJiBsYXllcikK
KyAgICB7CisgICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
KFdlYlBvaW50KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wp
OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25z
dCBXZWJWZWN0b3I8V2ViUmVjdD4mKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCk7CisKKworI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgorICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bT4mIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTY3JvbGxhYmxl
TGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJT
Y3JvbGxiYXJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3Jv
bGxiYXJMYXllci5oCmluZGV4IDQ1MWEwYjljMTM0YjZjNDQ0OTUwZTFhMmI2MjNmM2JlMWYwMjEx
MDYuLjFiZmU3ZDZhYmIzYTU5ZjNmM2VhMzMwNDQ4Y2M2NDA3ZDMxMWExYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgKQEAg
LTMyLDIwICszMiwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxiYXI7
CitjbGFzcyBTY3JvbGxiYXJMYXllckNocm9taXVtOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotY2xhc3MgV2ViU2Nyb2xsYmFyTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYmFyTGF5ZXIgOiBw
dWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgorICAgIFdlYlNjcm9sbGJhckxheWVyKCkgeyB9Cisg
ICAgV2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV2ViU2Nyb2xsYmFyTGF5ZXImIGxheWVyKSA6IFdl
YkxheWVyKGxheWVyKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllcigpIHsgfQor
ICAgIFdlYlNjcm9sbGJhckxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2Nyb2xsYmFyTGF5ZXIm
IGxheWVyKQorICAgIHsKKyAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXllciopID0gMDsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoY29uc3QgV2ViTGF5ZXIpOwogCiAj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2Ny
b2xsYmFyTGF5ZXIqIGNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXIqLCBXZWJTY3JvbGxiYXJUaGVt
ZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4pOworICAgIHN0
YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgV2ViU2Ny
b2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+
KTsKKyAgICBleHBsaWNpdCBXZWJTY3JvbGxiYXJMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKKyAgICBXZWJTY3JvbGxiYXJMYXll
ciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXll
ckNocm9taXVtPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3Jv
bGxiYXJMYXllckNocm9taXVtPigpIGNvbnN0OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaAppbmRleCAw
MmU0NmYwNDdmYWYyNTNhYzExZTE5N2M0NTEwODE3YmExZjQ4MjYyLi5hZDkxMjNkOTYyYWZlYWVh
OGE1NjMxMjk0NWRlMWZjNWY4OTZjOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgKQEAgLTI2LDIwICsyNiwyMSBAQAog
I2lmbmRlZiBXZWJTb2xpZENvbG9yTGF5ZXJfaAogI2RlZmluZSBXZWJTb2xpZENvbG9yTGF5ZXJf
aAogCi0jaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKLWNsYXNzIFdlYkxheWVyOworY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsK
IAotY2xhc3MgV2ViU29saWRDb2xvckxheWVyIHsKK2NsYXNzIFdlYlNvbGlkQ29sb3JMYXllciA6
IHB1YmxpYyBXZWJMYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
U29saWRDb2xvckxheWVyKiBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJT
b2xpZENvbG9yTGF5ZXIgY3JlYXRlKCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYpOwogCi0gICAgdmlydHVhbCB+V2ViU29saWRDb2xv
ckxheWVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7CisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgV2ViU29saWRDb2xvckxheWVyKGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYpOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlkZW9MYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRl
b0xheWVyLmgKaW5kZXggMWFjZmZmNTRhMDcyN2I0OThkZDk0MWZjYzQ2YTI3NzI2YWE3ZDcwZS4u
NTRkYTM0NTRiYTAzZWZmYjVlMzRiMGQzMzJiOTJjMDExMjQ3NWFhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmgKQEAgLTI5LDIwICsyOSwy
NyBAQAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlZpZGVvRnJhbWVQcm92aWRlcjsKIAotY2xhc3MgV2Vi
VmlkZW9MYXllciB7CitjbGFzcyBXZWJWaWRlb0xheWVyIDogcHVibGljIFdlYkxheWVyIHsKIHB1
YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJWaWRlb0xheWVyKiBjcmVhdGUoV2Vi
VmlkZW9GcmFtZVByb3ZpZGVyKik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVmlkZW9M
YXllciBjcmVhdGUoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAKKyAgICBXZWJWaWRlb0xheWVy
KCkgeyB9CiAgICAgdmlydHVhbCB+V2ViVmlkZW9MYXllcigpIHsgfQogCi0gICAgdmlydHVhbCBX
ZWJMYXllciogbGF5ZXIoKSA9IDA7Ci0KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXll
ciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5IGF0dGFjaGVkIHRvIGEgV2Vi
TGF5ZXJUcmVlVmlldykuCi0gICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0ID0gMDsKKyAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgYWN0aXZlKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyAgICBleHBsaWNpdCBXZWJWaWRlb0xheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6
VmlkZW9MYXllckNocm9taXVtPik7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCBlMjU2
YmRlMWE1YTRhZTg3YTY2MDgxOThjNzNkZmFmOGUxOTgxM2Y2Li4xZGI3NTk0MDQ3Yzg4Y2FiMGRk
YWZlMDAzN2EzYmU2Y2FjMzg2ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKICNpbmNsdWRl
ICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YlNjcm9sbGFibGVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXIuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oPgpAQCAtNDIsNiArNDIsNyBAQAogCiB1c2luZyBXZWJL
aXQ6OldlYkxheWVyOwogdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwordXNpbmcgV2ViS2l0OjpXZWJT
Y3JvbGxhYmxlTGF5ZXI7CiB1c2luZyBXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOwogdXNpbmcg
V2ViS2l0OjpXZWJWZWN0b3I7CiAKQEAgLTUwLDM5ICs1MSwzNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUgewogV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKTsKIHB1YmxpYzoKLSAgICBTY3JvbGxp
bmdDb29yZGluYXRvclByaXZhdGUoKQotICAgICAgICA6IG1fc2Nyb2xsTGF5ZXIoMCkKLSAgICB7
Ci0gICAgfQotCisgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkgeyB9CiAgICAgflNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpIHsgfQogCi0gICAgdm9pZCBzZXRTY3JvbGxMYXll
cihXZWJMYXllciogbGF5ZXIpCisgICAgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJTY3JvbGxhYmxl
TGF5ZXIgbGF5ZXIpCiAgICAgewogICAgICAgICBtX3Njcm9sbExheWVyID0gbGF5ZXI7CiAKLSAg
ICAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKQotICAgICAgICAgICAgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKGxheWVyKTsKLSAgICAgICAgaWYg
KG1fdmVydGljYWxTY3JvbGxiYXJMYXllcikKLSAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgICAgICBpZiAoIW1faG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgICAgICBpZiAoIW1fdmVydGljYWxT
Y3JvbGxiYXJMYXllci5pc051bGwoKSkKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJM
YXllci5zZXRTY3JvbGxMYXllcihsYXllcik7CiAgICAgfQogCi0gICAgdm9pZCBzZXRIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIoUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gbGF5ZXIpCisg
ICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5
ZXIpCiAgICAgewogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllciA9IGxheWVyOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxiYXJMYXllcihQYXNzT3duUHRyPFdl
YlNjcm9sbGJhckxheWVyPiBsYXllcikKKyAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIpCiAgICAgewogICAgICAgICBtX3ZlcnRpY2FsU2Ny
b2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAgICBXZWJMYXllciogc2Nyb2xsTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9CisgICAgYm9vbCBoYXNTY3JvbGxMYXll
cigpIGNvbnN0IHsgcmV0dXJuICFtX3Njcm9sbExheWVyLmlzTnVsbCgpOyB9CisgICAgV2ViU2Ny
b2xsYWJsZUxheWVyIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsg
fQogCiBwcml2YXRlOgotICAgIFdlYkxheWVyKiBtX3Njcm9sbExheWVyOwotICAgIE93blB0cjxX
ZWJTY3JvbGxiYXJMYXllcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXI7Ci0gICAgT3duUHRy
PFdlYlNjcm9sbGJhckxheWVyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViU2Ny
b2xsYWJsZUxheWVyIG1fc2Nyb2xsTGF5ZXI7CisgICAgV2ViU2Nyb2xsYmFyTGF5ZXIgbV9ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViU2Nyb2xsYmFyTGF5ZXIgbV92ZXJ0aWNhbFNj
cm9sbGJhckxheWVyOwogfTsKIAogUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMTE0LDIwICsxMTIsMTUg
QEAgc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmll
dyogZnJhbWVWaWV3KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXZWJMYXllciogc2Nyb2xsYWJsZUxh
eWVyRm9yR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICByZXR1cm4g
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLX0KLQotc3RhdGljIFBhc3NPd25QdHI8V2ViU2Nyb2xs
YmFyTGF5ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJM
YXllciogc2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXIs
IEZyYW1lVmlldyogZnJhbWVWaWV3KQorc3RhdGljIFdlYlNjcm9sbGJhckxheWVyIGNyZWF0ZVNj
cm9sbGJhckxheWVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJTY3JvbGxhYmxlTGF5ZXIgc2Ny
b2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXIsIEZyYW1lVmll
dyogZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChzY3JvbGxiYXIpOwogICAgIEFTU0VSVChzY3Jv
bGxiYXJHcmFwaGljc0xheWVyKTsKIAotICAgIGlmICghc2Nyb2xsTGF5ZXIpIHsKKyAgICBpZiAo
c2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHNvbWV0aW1lcyB3ZSBn
ZXQgY2FsbGVkIGJlZm9yZSBzZXRTY3JvbGxMYXllciwgd29ya2Fyb3VuZCBieSBmaW5kaW5nIHRo
ZSBzY3JvbGwgbGF5b3V0IG91cnNlbHZlcy4KLSAgICAgICAgc2Nyb2xsTGF5ZXIgPSBzY3JvbGxh
YmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmll
dykpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICBzY3JvbGxMYXllciA9
IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyktPnBsYXRmb3JtTGF5ZXIoKS0+dG88
V2ViU2Nyb2xsYWJsZUxheWVyPigpOworICAgICAgICBBU1NFUlQoIXNjcm9sbExheWVyLmlzTnVs
bCgpKTsKICAgICB9CiAKICAgICAvLyBSb290IGxheWVyIG5vbi1vdmVybGF5IHNjcm9sbGJhcnMg
c2hvdWxkIGJlIG1hcmtlZCBvcGFxdWUgdG8gZGlzYWJsZQpAQCAtMTQ1LDcgKzEzOCw3IEBAIHN0
YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJMYXllcihT
Y3JvbGxiYXIqIHNjcm9sbGJhciwKICAgICBpZiAoIXBsYXRmb3JtU3VwcG9ydGVkIHx8IHNjcm9s
bGJhci0+aXNDdXN0b21TY3JvbGxiYXIoKSkgewogICAgICAgICBzY3JvbGxiYXJHcmFwaGljc0xh
eWVyLT5zZXRDb250ZW50c1RvTWVkaWEoMCk7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5
ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBXZWJTY3JvbGxiYXJMYXllcigpOwogICAgIH0KIAogICAgIC8vIEFsbCBDaHJv
bWl1bSBzY3JvbGxiYXIgdGhlbWVzIGRlcml2ZSBmcm9tIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
LgpAQCAtMTUzLDE0ICsxNDYsMTQgQEAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5
ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIFdlYktp
dDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9s
bGJhcik7CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2Vv
bWV0cnkoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhl
bWVDb21wb3NpdGUpKTsKIAotICAgIE93blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFy
TGF5ZXIgPSBhZG9wdFB0cihXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFp
bnRlciwgZ2VvbWV0cnkucmVsZWFzZSgpKSk7Ci0gICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9s
bExheWVyKHNjcm9sbExheWVyKTsKKyAgICBXZWJTY3JvbGxiYXJMYXllciBzY3JvbGxiYXJMYXll
ciA9IFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoc2Nyb2xsYmFyLCBwYWludGVyLCBnZW9tZXRy
eS5yZWxlYXNlKCkpOworICAgIHNjcm9sbGJhckxheWVyLnNldFNjcm9sbExheWVyKHNjcm9sbExh
eWVyKTsKIAotICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShz
Y3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CisgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNUb01lZGlhKCZzY3JvbGxiYXJMYXllcik7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NM
YXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci0+bGF5ZXIo
KS0+c2V0T3BhcXVlKHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzT3BhcXVlKCkpOwor
ICAgIHNjcm9sbGJhckxheWVyLnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250
ZW50c09wYXF1ZSgpKTsKIAotICAgIHJldHVybiBzY3JvbGxiYXJMYXllci5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIHNjcm9sbGJhckxheWVyOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpmcmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE2
OCw3ICsxNjEsNiBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KgogICAgIGlmICghaG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyIHx8ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXll
ckZvckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZh
dGUtPnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihjcmVhdGVTY3JvbGxiYXJMYXllcihmcmFt
ZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCBo
b3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsIGZyYW1lVmlldykpOwogfQogCkBAIC0xNzcsMjUgKzE2
OSwyNSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9s
bGJhckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZgogICAgIGlmICghdmVydGljYWxTY3JvbGxi
YXJMYXllciB8fCAhY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFt
ZVZpZXcobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgbV9wcml2YXRlLT5zZXRW
ZXJ0aWNhbFNjcm9sbGJhckxheWVyKGNyZWF0ZVNjcm9sbGJhckxheWVyKGZyYW1lVmlldy0+dmVy
dGljYWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCB2ZXJ0aWNhbFNjcm9s
bGJhckxheWVyLCBmcmFtZVZpZXcpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgbV9wcml2
YXRlLT5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBo
aWNzTGF5ZXIoc2Nyb2xsTGF5ZXIpIDogMCk7CisgICAgV2ViU2Nyb2xsYWJsZUxheWVyIGxheWVy
OworICAgIGlmIChzY3JvbGxMYXllcikKKyAgICAgICAgbGF5ZXIgPSBzY3JvbGxMYXllci0+cGxh
dGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7CisgICAgbV9wcml2YXRlLT5z
ZXRTY3JvbGxMYXllcihsYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIC8v
IFdlIHdvbid0IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUg
dGhpcyBvbmUsIHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgotICAgIHNldFNjcm9sbExheWVy
KHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwot
ICAgIGlmIChtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkpIHsKKyAgICBpZiAobV9wcml2YXRlLT5o
YXNTY3JvbGxMYXllcigpKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lv
bi5yZWN0cygpOwogICAgICAgICBXZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6
ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgIHdlYlJlY3RzW2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+
c2Nyb2xsTGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMpOworICAg
ICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
d2ViUmVjdHMpOwogICAgIH0KIH0KIApAQCAtMjA2LDE4ICsxOTgsMTQgQEAgdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJz
JikKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCh1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIC8vIFdlIHdvbid0IG5l
Y2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUgdGhpcyBvbmUsIHNv
IGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgotICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExheWVy
Rm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwotICAgIGlmIChtX3By
aXZhdGUtPnNjcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7Cisg
ICAgaWYgKG1fcHJpdmF0ZS0+aGFzU2Nyb2xsTGF5ZXIoKSkKKyAgICAgICAgbV9wcml2YXRlLT5z
Y3JvbGxMYXllcigpLnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJD
b3VudCA+IDApOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIC8v
IFdlIHdvbid0IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUg
dGhpcyBvbmUsIHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgotICAgIHNldFNjcm9sbExheWVy
KHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwot
ICAgIGlmIChtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Ny
b2xsTGF5ZXIoKS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7CisgICAgaWYg
KG1fcHJpdmF0ZS0+aGFzU2Nyb2xsTGF5ZXIoKSkKKyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxM
YXllcigpLnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiBib29sIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApA
QCAtMjI3LDE0ICsyMTUsMTQgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNG
aXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciog
bGF5ZXIsIGJvb2wgZW5hYmxlKQogewotICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVy
ID0gc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCi0gICAgICAgIHNjcm9s
bGFibGVMYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7
CisgICAgaWYgKFdlYkxheWVyKiBwbGF0Zm9ybUxheWVyID0gbGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSkKKyAgICAgICAgcGxhdGZvcm1MYXllci0+dG88V2ViU2Nyb2xsYWJsZUxheWVyPigpLnNldElz
Q29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCiB2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNz
TGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFi
bGVMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIobGF5ZXIpKQotICAgICAg
ICBzY3JvbGxhYmxlTGF5ZXItPnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworICAg
IGlmIChXZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpCisg
ICAgICAgIHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKS5zZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJp
ZGdlLmNwcAppbmRleCAxMDY1NDMxMmNmMmVmYmFjN2U1YzIwYmYwZGMwNjUxYzg0ZjM0MDA3Li5k
YjUxN2NhZDI2MzNiOGJmNGU3MTU0YjU3NDgyMjU3MmM0NjU5MGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQnJpZGdlLmNwcApAQCAtNjksMjEgKzY5LDIyIEBAIENhbnZhczJETGF5ZXJCcmlk
Z2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCwKICAgICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0g
ICAgbV9sYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhp
cykpOwotICAgIG1fbGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwotICAgIG1fbGF5ZXIt
PnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5h
YmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5nKTsKKyAgICBtX2xheWVyID0gV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2xheWVyLnNldFRleHR1cmVJZCh0
ZXh0dXJlSWQpOworICAgIG1fbGF5ZXIuc2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwog
fQogCiBDYW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CiAgICAg
aWYgKFNrRGVmZXJyZWRDYW52YXMqIGRlZmVycmVkID0gZGVmZXJyZWRDYW52YXMoKSkKICAgICAg
ICAgZGVmZXJyZWQtPnNldE5vdGlmaWNhdGlvbkNsaWVudCgwKTsKLSAgICBtX2xheWVyLT5zZXRU
ZXh0dXJlSWQoMCk7CisgICAgbV9sYXllci5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNl
RG91YmxlQnVmZmVyaW5nKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVy
ZShtX2Zyb250QnVmZmVyVGV4dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAg
ICAgfQorICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKIH0KIAogU2tEZWZlcnJlZENhbnZhcyog
Q2FudmFzMkRMYXllckJyaWRnZTo6ZGVmZXJyZWRDYW52YXMoKQpAQCAtOTcsNyArOTgsNyBAQCB2
b2lkIENhbnZhczJETGF5ZXJCcmlkZ2U6OnByZXBhcmVGb3JEcmF3KCkKIHsKICAgICBBU1NFUlQo
ZGVmZXJyZWRDYW52YXMoKSk7CiAgICAgaWYgKCFtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAg
ICAgbV9sYXllci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAgbV9sYXllci53aWxsTW9k
aWZ5VGV4dHVyZSgpOwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAK
QEAgLTE0NywxMyArMTQ4LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVy
QnJpZGdlOjpjb250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRn
ZTo6bGF5ZXIoKQogewotICAgIHJldHVybiBtX2xheWVyLT5sYXllcigpOworICAgIHJldHVybiAm
bV9sYXllcjsKIH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQo
KQogewogICAgIGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3Vi
bGVCdWZmZXJpbmcpCi0gICAgICAgIG1fbGF5ZXItPndpbGxNb2RpZnlUZXh0dXJlKCk7CisgICAg
ICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRM
YXllckJyaWRnZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRn
ZS5oCmluZGV4IDI3YjFlYTY1OWM0MWM3YzY4YzMyNzQ1Y2ExZDEwNmFlNTA1NWE0YjQuLjQwOWQy
MDdjNTVlNDk1MThjMzkyNDRkMTQ4N2MwYTBhZjc0MTgyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQnJpZGdlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2Jh
Y2tCdWZmZXJUZXh0dXJlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2Nh
bnZhczsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXll
cjsKKyAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2lu
Z0J1ZmZlckNocm9taXVtLmNwcAppbmRleCA2MTAyYTNlNmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1
ZjRlYmQzNTI0Li4xZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5n
QnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNSArMTU2LDE2IEBA
IGNsYXNzIERyYXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQ
cml2YXRlKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5n
QnVmZmVyKGRyYXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQorICAgICAgICAsIG1fbGF5
ZXIoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKQogICAgIHsK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJh
d2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICAgICAgbV9sYXllci0+c2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKLSAgICAgICAg
bV9sYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFs
cGhhKTsKKyAgICAgICAgbV9sYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOworICAg
ICAgICBtX2xheWVyLnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxp
ZWRBbHBoYSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQog
ICAgIHsKKyAgICAgICAgbV9sYXllci5jbGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikgT1ZFUlJJREUKQEAgLTE4NiwxMSArMTg3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2Vi
S2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyLT5sYXllcigpOyB9CisgICAg
V2ViS2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiAmbV9sYXllcjsgfQogCiBwcml2YXRl
OgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBPd25QdHI8V2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXllcjsKKyAgICBXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjdkNTFl
OTY4ZGYwYjJiYjE3M2VjODY1YjllZjg2YzU5MGI2NTJmNS4uZmIwOTAwYmJjMWE3NTdjMWRhM2I4
MWNjY2M3MDBiZDk0NDJkYjJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC04MywxNiArODMsMTQgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGlj
c0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBj
bGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKLSAgICAsIG1fY29udGVudHNMYXll
cigwKQotICAgICwgbV9jb250ZW50c0xheWVySWQoMCkKICAgICAsIG1fY29udGVudHNMYXllclB1
cnBvc2UoTm9Db250ZW50c0xheWVyKQogICAgICwgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3Vu
ZENvbG9yKGZhbHNlKQogICAgICwgbV9pblNldENoaWxkcmVuKGZhbHNlKQogICAgICwgbV9wYWdl
U2NhbGVDaGFuZ2VkKGZhbHNlKQogewogICAgIG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExh
eWVyRGVsZWdhdGUgPSBhZG9wdFB0cihuZXcgT3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVy
RGVsZWdhdGUodGhpcykpOwotICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihXZWJDb250ZW50TGF5ZXI6
OmNyZWF0ZShtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlLmdldCgpKSk7
Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYm
IG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVh
dGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSk7CisgICAg
bV9sYXllci5zZXREcmF3c0NvbnRlbnQobV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2li
bGUpOwogICAgIGlmIChjbGllbnQpCiAgICAgICAgIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpOwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwpAQCAtMTAwLDkgKzk4LDM0IEBA
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDbGllbnQqIGNsaWVudCkKIAogR3JhcGhpY3NMYXllckNocm9taXVtOjp+R3JhcGhpY3NMYXll
ckNocm9taXVtKCkKIHsKKyAgICAvLyBEbyBjbGVhbnVwIHdoaWxlIHdlIGNhbiBzdGlsbCBzYWZl
bHkgY2FsbCBtZXRob2RzIG9uIHRoZSBkZXJpdmVkIGNsYXNzLgogICAgIHdpbGxCZURlc3Ryb3ll
ZCgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6d2lsbEJlRGVzdHJveWVkKCkK
K3sKKyAgICBpZiAoIW1fbGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9sYXllci5jbGVhckNs
aWVudCgpOworICAgICAgICBtX2xheWVyLmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBt
X2xheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgIH0KKworICAgIGlmICghbV9jb250
ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY29udGVudHNMYXllci5jbGVhclJlbmRl
clN1cmZhY2UoKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRl
KDApOworICAgIH0KKworICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgeworICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgIH0KKworICAgIGlmICht
X2xpbmtIaWdobGlnaHQpCisgICAgICAgIG1fbGlua0hpZ2hsaWdodC5jbGVhcigpOworCisgICAg
R3JhcGhpY3NMYXllcjo6d2lsbEJlRGVzdHJveWVkKCk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgaW5OYW1lKQogewogICAgIG1fbmFtZUJh
c2UgPSBpbk5hbWU7CkBAIC0xMTMsMTYgKzEzNiwyMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIGluTmFtZSkKIAogdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZU5hbWVzKCkKIHsKLSAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVy
IGZvciAiICsgbV9uYW1lQmFzZTsKLSAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKLQotICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgaWYgKCFtX2xh
eWVyLmlzTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5ZXIgZm9yICIg
KyBtX25hbWVCYXNlOworICAgICAgICBtX2xheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwor
ICAgIH0KKyAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKICAgICAgICAgU3Ry
aW5nIGRlYnVnTmFtZSA9ICJUcmFuc2Zvcm1MYXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAg
ICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOworICAgICAgICBt
X3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwogICAgIH0KLSAgICBpZiAo
bV9jb250ZW50c0xheWVyKSB7CisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsK
ICAgICAgICAgU3RyaW5nIGRlYnVnTmFtZSA9ICJDb250ZW50c0xheWVyIGZvciAiICsgbV9uYW1l
QmFzZTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsK
KyAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOworICAgIH0K
KyAgICBpZiAobV9saW5rSGlnaGxpZ2h0KSB7CisgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAi
TGlua0hpZ2hsaWdodCBmb3IgIiArIG1fbmFtZUJhc2U7CisgICAgICAgIG1fbGlua0hpZ2hsaWdo
dC0+Y29udGVudExheWVyKCktPnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwogICAgIH0KIH0KIApA
QCAtMTc1LDcgKzIwMyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpyZXBsYWNlQ2hp
bGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6
cmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIHBsYXRmb3JtTGF5ZXIoKS0+cmVtb3ZlRnJvbVBhcmVu
dCgpOworICAgIHByaW1hcnlMYXllcigpLnJlbW92ZUZyb21QYXJlbnQoKTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQpAQCAtMjA1LDggKzIzMyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKGNsYW1w
ZWRTaXplKTsKICAgICB1cGRhdGVMYXllclNpemUoKTsKIAotICAgIGlmIChtX3BhZ2VTY2FsZUNo
YW5nZWQpCi0gICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKyAgICBpZiAo
bV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQorICAgICAgICBtX2xheWVy
LmludmFsaWRhdGUoKTsKICAgICBtX3BhZ2VTY2FsZUNoYW5nZWQgPSBmYWxzZTsKIH0KIApAQCAt
MjczLDEzICszMDEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dy
b3VuZENvbG9yKCk7Ci0gICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3Rh
dGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250ZW50c0xheWVyLnNldEJhY2tncm91bmRD
b2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQogewogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1ZSk7Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0
T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXIuc2V0T3BhcXVlKG1fY29udGVu
dHNPcGFxdWUpOwogfQogCiBzdGF0aWMgYm9vbCBjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNU
b1dlYkZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYgd2ViRmlsdGVycykKQEAgLTM2MywxMSArMzkxLDExIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRl
ck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5
IGFyZQogICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgotICAg
ICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7
CisgICAgICAgIG1fbGF5ZXIuc2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwogICAg
ICAgICBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RmlsdGVy
cyh3ZWJGaWx0ZXJzKTsKKyAgICBtX2xheWVyLnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAg
cmV0dXJuIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKQEAgLTM3Niw3
ICs0MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycwogICAgIFdlYkZpbHRlck9wZXJhdGlv
bnMgd2ViRmlsdGVyczsKICAgICBpZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2Vi
RmlsdGVyT3BlcmF0aW9ucyhmaWx0ZXJzLCB3ZWJGaWx0ZXJzKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOwor
ICAgIG1fbGF5ZXIuc2V0QmFja2dyb3VuZEZpbHRlcnMod2ViRmlsdGVycyk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xh
eWVyKQpAQCAtMzg2LDIxICs0MTQsMjMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIpCiAKICAgICBHcmFwaGljc0xheWVy
OjpzZXRNYXNrTGF5ZXIobWFza0xheWVyKTsKIAotICAgIFdlYkxheWVyKiBtYXNrV2ViTGF5ZXIg
PSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwotICAgIG1f
bGF5ZXItPmxheWVyKCktPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVy
IG1hc2tXZWJMYXllcjsKKyAgICBpZiAobV9tYXNrTGF5ZXIpCisgICAgICAgIG1hc2tXZWJMYXll
ciA9ICptX21hc2tMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIG1fbGF5ZXIuc2V0TWFza0xh
eWVyKG1hc2tXZWJMYXllcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRC
YWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dEJhY2tmYWNlVmlzaWJpbGl0eSh2aXNpYmxlKTsKLSAgICBtX2xheWVyLT5zZXREb3VibGVTaWRl
ZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgbV9sYXllci5zZXREb3VibGVTaWRlZChtX2Jh
Y2tmYWNlVmlzaWJpbGl0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRP
cGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgo
bWluKG9wYWNpdHksIDEuMGYpLCAwLjBmKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5
KGNsYW1wZWRPcGFjaXR5KTsKLSAgICBwbGF0Zm9ybUxheWVyKCktPnNldE9wYWNpdHkob3BhY2l0
eSk7CisgICAgcHJpbWFyeUxheWVyKCkuc2V0T3BhY2l0eShvcGFjaXR5KTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQpAQCAtNDA4LDI3ICs0MzgsMjkgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogbGF5ZXJDaHJvbWl1bSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSo+KGxheWVyKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXll
cihsYXllcik7CiAKLSAgICBXZWJMYXllciogd2ViUmVwbGljYUxheWVyID0gbGF5ZXJDaHJvbWl1
bSA/IGxheWVyQ2hyb21pdW0tPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Ci0gICAgcGxhdGZvcm1MYXll
cigpLT5zZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKKyAgICBXZWJMYXllciB3ZWJS
ZXBsaWNhTGF5ZXI7CisgICAgaWYgKGxheWVyQ2hyb21pdW0pCisgICAgICAgIHdlYlJlcGxpY2FM
YXllciA9IGxheWVyQ2hyb21pdW0tPnByaW1hcnlMYXllcigpOworICAgIHByaW1hcnlMYXllcigp
LnNldFJlcGxpY2FMYXllcih3ZWJSZXBsaWNhTGF5ZXIpOwogfQogCiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1fY29u
dGVudHNMYXllcikKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5pbnZhbGlkYXRlKCk7CisgICAg
aWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgICAgIG1fY29udGVudHNMYXllci5p
bnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rp
c3BsYXkoKQogewogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgbV9sYXllci0+bGF5
ZXIoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQotICAgICAgICBtX2xh
eWVyLT5sYXllcigpLT5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICAgICAgbV9sYXllci5pbnZh
bGlkYXRlUmVjdChyZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDQ0LDU2ICs0NzYsNDYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2Up
CiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAoaW1hZ2UpIHsK
LSAgICAgICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvcklt
YWdlKSB7Ci0gICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihXZWJJbWFnZUxheWVy
OjpjcmVhdGUoKSk7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9pbWFnZUxheWVy
LT5sYXllcigpKTsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllci5pc051bGwoKSB8fCBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgeworICAgICAgICAg
ICAgV2ViS2l0OjpXZWJJbWFnZUxheWVyIGltYWdlTGF5ZXIgPSBXZWJLaXQ6OldlYkltYWdlTGF5
ZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIp
OwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJ
bWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KKyAg
ICAgICAgV2ViS2l0OjpXZWJJbWFnZUxheWVyIGltYWdlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIu
dG88V2ViS2l0OjpXZWJJbWFnZUxheWVyPigpOwogICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG5h
dGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAg
IG1faW1hZ2VMYXllci0+c2V0Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7Ci0gICAgICAg
IG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5pc0JpdG1hcEltYWdlKCkg
JiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICAgICAgaW1hZ2VMYXllci5z
ZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKKyAgICAgICAgaW1hZ2VMYXllci5zZXRP
cGFxdWUoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0Fs
cGhhKCkpOwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAobV9pbWFnZUxheWVyKSB7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCi0gICAgICAg
ICAgICBtX2ltYWdlTGF5ZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIC8vIFRoZSBvbGQgY29udGVu
dHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCisgICAgICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKICAgICAgICAgfQotICAgICAgICAvLyBUaGUgb2xk
IGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwogICAgIH0KIAogICAgIGlmIChjaGlsZHJlbkNoYW5n
ZWQpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAg
ICBzZXRDb250ZW50c1RvKENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsIGxheWVyKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVy
KiBsYXllcikKLXsKLSAgICBzZXRDb250ZW50c1RvKENvbnRlbnRzTGF5ZXJGb3JWaWRlbywgbGF5
ZXIpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyhDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlLCBXZWJLaXQ6OldlYkxheWVyKiBsYXllcikKK3ZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAg
ICBpZiAobGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllcklkICE9IGxheWVyLT5p
ZCgpKSB7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobGF5ZXIpOwotICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CisgICAgaWYgKHBsYXRmb3JtTGF5
ZXIpIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllciAhPSAqcGxhdGZvcm1MYXllcikgewor
ICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKCpwbGF0Zm9ybUxheWVyKTsKKyAgICAgICAg
ICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yQ2FudmFzOwogICAg
ICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICB1cGRh
dGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyKSB7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7CiAgICAgICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBUaGUgb2xkIGNv
bnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci5y
ZXNldCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MDMsNyArNTI1LDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVy
cG9zZSwgV2ViS2l0OjoKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXpl
LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuaW1hdGlv
bkRlbGVnYXRlKHRoaXMpOworICAgIHByaW1hcnlMYXllcigpLnNldEFuaW1hdGlvbkRlbGVnYXRl
KHRoaXMpOwogCiAgICAgaW50IGFuaW1hdGlvbklkID0gbWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5p
bWF0aW9uTmFtZSk7CiAgICAgaW50IGdyb3VwSWQgPSBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4
dEdyb3VwSWQoKTsKQEAgLTUxMiw4ICs1MzQsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAK
ICAgICBpZiAodG9BZGQpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBhbmltYXRp
b25zIHdpdGggdGhlIHNhbWUgYW5pbWF0aW9uIGlkIGFuZCB0YXJnZXQgcHJvcGVydHkuCi0gICAg
ICAgIHBsYXRmb3JtTGF5ZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0b0FkZC0+
dGFyZ2V0UHJvcGVydHkoKSk7Ci0gICAgICAgIHJldHVybiBwbGF0Zm9ybUxheWVyKCktPmFkZEFu
aW1hdGlvbih0b0FkZC5nZXQoKSk7CisgICAgICAgIHByaW1hcnlMYXllcigpLnJlbW92ZUFuaW1h
dGlvbihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOworICAgICAgICByZXR1
cm4gcHJpbWFyeUxheWVyKCkuYWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC01MjEsMTIgKzU0MywxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNv
bnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbihjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHBsYXRmb3Jt
TGF5ZXIoKS0+cGF1c2VBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFt
ZSksIHRpbWVPZmZzZXQpOworICAgIHByaW1hcnlMYXllcigpLnBhdXNlQW5pbWF0aW9uKG1hcEFu
aW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUpCiB7Ci0gICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVBbmltYXRpb24obWFwQW5p
bWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSkpOworICAgIHByaW1hcnlMYXllcigpLnJlbW92
ZUFuaW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENs
b2NrVGltZSkKQEAgLTUzNCw1NCArNTU2LDg4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICAvLyB8d2FsbENs
b2NrVGltZXwgaXMgaW4gdGhlIHdyb25nIHRpbWUgYmFzZS4gTmVlZCB0byBjb252ZXJ0IGhlcmUu
CiAgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSB0byBkbyB0aGlzLgogICAg
IGRvdWJsZSBtb25vdG9uaWNUaW1lID0gd2FsbENsb2NrVGltZSArIG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpIC0gY3VycmVudFRpbWUoKTsKLSAgICBwbGF0Zm9ybUxheWVyKCktPnN1c3Bl
bmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgIHByaW1hcnlMYXllcigpLnN1c3BlbmRB
bmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6cmVzdW1lQW5pbWF0aW9ucygpCiB7Ci0gICAgcGxhdGZvcm1MYXllcigpLT5yZXN1bWVBbmlt
YXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBwcmltYXJ5TGF5ZXIo
KS5yZXN1bWVBbmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3QgUGF0aCYp
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodChjb25zdCBQYXRo
JiBwYXRoKQogeworICAgIG1fbGlua0hpZ2hsaWdodCA9IExpbmtIaWdobGlnaHQ6OmNyZWF0ZSh0
aGlzLCBwYXRoLCBBbmltYXRpb25JZFZlbmRvcjo6TGlua0hpZ2hsaWdodEFuaW1hdGlvbklkLCBB
bmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQoKSk7CisgICAgdXBkYXRlQ2hpbGRMaXN0
KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpkaWRGaW5pc2hMaW5rSGlnaGxp
Z2h0KCkKIHsKKyAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQorICAgICAgICBtX2xpbmtIaWdobGln
aHQtPmNvbnRlbnRMYXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7CisKKyAgICBtX2xpbmtIaWdo
bGlnaHQuY2xlYXIoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKK3sKKyAgICBib29sIGNoaWxkcmVuQ2hh
bmdlZCA9IGZhbHNlOworICAgIGlmIChsYXllcikgeworICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyLmlzTnVsbCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZv
clZpZGVvKSB7CisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKmxheWVyKTsKKyAgICAg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yVmlkZW87Cisg
ICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHVw
ZGF0ZUNvbnRlbnRzUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwor
CisgICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2
aWEgdXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQorICAgICAgICB1
cGRhdGVDaGlsZExpc3QoKTsKK30KKworV2ViS2l0OjpXZWJMYXllciBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnByaW1hcnlMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5
ZXIuaXNOdWxsKCkgPyBtX2xheWVyIDogbV90cmFuc2Zvcm1MYXllcjsKIH0KIAogUGxhdGZvcm1M
YXllciogR3JhcGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV90cmFuc2Zvcm1MYXllciA/IG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkgOiBtX2xh
eWVyLT5sYXllcigpOworICAgIHJldHVybiBjb25zdF9jYXN0PFBsYXRmb3JtTGF5ZXIqPihtX3Ry
YW5zZm9ybUxheWVyLmlzTnVsbCgpID8gJm1fbGF5ZXIgOiAmbV90cmFuc2Zvcm1MYXllcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yLnJnYigpKTsKKyAgICAg
ICAgbV9sYXllci5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJH
QkEzMj4oMCkpOworICAgICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2Fz
dDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCiB7CiAgICAgaWYg
KGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0Jv
cmRlckNvbG9yKGNvbG9yLnJnYigpKTsKLSAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RGVi
dWdCb3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CisgICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3Jk
ZXJDb2xvcihjb2xvci5yZ2IoKSk7CisgICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJXaWR0
aChib3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+
c2V0RGVidWdCb3JkZXJDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKLSAgICAgICAgbV9s
YXllci0+bGF5ZXIoKS0+c2V0RGVidWdCb3JkZXJXaWR0aCgwKTsKKyAgICAgICAgbV9sYXllci5z
ZXREZWJ1Z0JvcmRlckNvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOworICAgICAgICBtX2xh
eWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMCk7CiAgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRMaXN0KCkKIHsKLSAgICBWZWN0b3I8V2ViTGF5ZXIqPiBu
ZXdDaGlsZHJlbjsKKyAgICBWZWN0b3I8V2ViTGF5ZXI+IG5ld0NoaWxkcmVuOwogCi0gICAgaWYg
KG1fdHJhbnNmb3JtTGF5ZXIpIHsKKyAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkp
IHsKICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIGZpcnN0LiBFdmVuIGlmIHdlIGhh
dmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNv
bWVzIGJlaGluZC4KLSAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGF5ZXItPmxheWVyKCkp
OwotICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgIG5ld0NoaWxkcmVu
LmFwcGVuZChtX2xheWVyKTsKKyAgICB9IGVsc2UgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxs
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNv
cnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgogICAgICAgICAvLyBU
aGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJl
bnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9ubHkgdXNlZAogICAgICAgICAvLyBmb3IgcmVwbGFj
ZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgpAQCAtNTkzLDc2ICs2NDksNzkg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCgpCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CiAgICAgICAgIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21p
dW0qPihjaGlsZExheWVyc1tpXSk7CiAKLSAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKGN1ckNo
aWxkLT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hp
bGQtPnByaW1hcnlMYXllcigpKTsKICAgICB9CiAKKyAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQor
ICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQobV9saW5rSGlnaGxpZ2h0LT5jb250ZW50TGF5ZXIo
KSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytp
KQotICAgICAgICBuZXdDaGlsZHJlbltpXS0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICBu
ZXdDaGlsZHJlbltpXS5yZW1vdmVGcm9tUGFyZW50KCk7CiAKLSAgICBXZWJWZWN0b3I8V2ViTGF5
ZXIqPiBuZXdXZWJDaGlsZHJlbjsKKyAgICBXZWJWZWN0b3I8V2ViTGF5ZXI+IG5ld1dlYkNoaWxk
cmVuOwogICAgIG5ld1dlYkNoaWxkcmVuLmFzc2lnbihuZXdDaGlsZHJlbi5kYXRhKCksIG5ld0No
aWxkcmVuLnNpemUoKSk7CiAKLSAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgewotICAgICAgICBt
X3RyYW5zZm9ybUxheWVyLT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CisgICAgaWYgKCFt
X3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0
Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOwogCi0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIp
IHsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVy
IGlzIHBhcmVudGVkIGluIHRoZQogICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2gg
aXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCi0gICAgICAgICAgICBt
X2xheWVyLT5sYXllcigpLT5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAgbV9sYXll
ci0+bGF5ZXIoKS0+YWRkQ2hpbGQobV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIG1fbGF5
ZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIG1fbGF5ZXIuYWRkQ2hpbGQobV9j
b250ZW50c0xheWVyKTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBtX2xheWVyLT5s
YXllcigpLT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CisgICAgICAgIG1fbGF5ZXIuc2V0
Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiB7Ci0gICAgcGxhdGZvcm1MYXllcigpLT5zZXRQb3Np
dGlvbihtX3Bvc2l0aW9uKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS5zZXRQb3NpdGlvbihtX3Bvc2l0
aW9uKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyU2l6ZSgp
CiB7CiAgICAgSW50U2l6ZSBsYXllclNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSk7Ci0gICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXll
ci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7Ci0gICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgp
KSB7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7CisgICAg
ICAgIG1fbGF5ZXIuc2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKICAgICB9CiAKLSAgICBtX2xh
eWVyLT5sYXllcigpLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKKyAgICBtX2xheWVyLnNldEJvdW5k
cyhsYXllclNpemUpOwogCi0gICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRl
bnRzTGF5ZXItPiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKyAgICAvLyBOb3RlIHRo
YXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRv
IGRvIHRoYXQuCiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNob3JQ
b2ludCgpCiB7Ci0gICAgcGxhdGZvcm1MYXllcigpLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSkpOwotICAgIHBsYXRmb3JtTGF5
ZXIoKS0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnQueigpKTsKKyAgICBwcmltYXJ5TGF5
ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hv
clBvaW50LnkoKSkpOworICAgIHByaW1hcnlMYXllcigpLnNldEFuY2hvclBvaW50WihtX2FuY2hv
clBvaW50LnooKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVUcmFu
c2Zvcm0oKQogewotICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0VHJhbnNmb3JtKFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CisgICAgcHJpbWFyeUxheWVyKCkuc2V0VHJhbnNm
b3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpCiB7Ci0gICAgcGxh
dGZvcm1MYXllcigpLT5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CisgICAgcHJpbWFyeUxheWVyKCkuc2V0U3VibGF5ZXJU
cmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV9jaGlsZHJlblRyYW5zZm9ybSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcygpCiB7
Ci0gICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMp
OworICAgIG1fbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOwogICAgIHVw
ZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiB7Ci0gICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1f
dHJhbnNmb3JtTGF5ZXIpIHsKKyAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiBtX3RyYW5zZm9ybUxh
eWVyLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGxheWVyLgot
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsK
LSAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7Ci0gICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwotICAgICAgICBt
X2xheWVyLT5sYXllcigpLT50cmFuc2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdl
dCgpKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbV90
cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV9sYXll
ci50cmFuc2ZlckFuaW1hdGlvbnNUbygmbV90cmFuc2Zvcm1MYXllcik7CiAKICAgICAgICAgLy8g
Q29weSB0aGUgcG9zaXRpb24gZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBv
c2l0aW9uKCk7CkBAIC02NzEsMzQgKzczMCwzNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwog
ICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwogCi0gICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgICAgIG1fbGF5ZXIu
c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKIAotICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAuNWYsIDAuNWYpKTsKLSAgICAgICAgbV9s
YXllci0+bGF5ZXIoKS0+c2V0VHJhbnNmb3JtKFNrTWF0cml4NDQoKSk7CisgICAgICAgIG1fbGF5
ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLjVmLCAwLjVmKSk7CisgICAgICAgIG1fbGF5
ZXIuc2V0VHJhbnNmb3JtKFNrTWF0cml4NDQoKSk7CiAKICAgICAgICAgLy8gU2V0IHRoZSBvbGQg
bGF5ZXIgdG8gb3BhY2l0eSBvZiAxLiBGdXJ0aGVyIGRvd24gd2Ugd2lsbCBzZXQgdGhlIG9wYWNp
dHkgb24gdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0
T3BhY2l0eSgxKTsKKyAgICAgICAgbV9sYXllci5zZXRPcGFjaXR5KDEpOwogCi0gICAgICAgIG1f
bGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICAgICAgbV9sYXll
ci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiAKICAgICAgICAgLy8gTW92ZSB0
aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4KICAgICAgICAg
aWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVw
bGFjZUNoaWxkKG1fbGF5ZXItPmxheWVyKCksIG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOwotICAg
ICAgICBtX3RyYW5zZm9ybUxheWVyLT5hZGRDaGlsZChtX2xheWVyLT5sYXllcigpKTsKKyAgICAg
ICAgICAgIHBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCktPnJlcGxhY2VDaGlsZChtX2xheWVyLCBt
X3RyYW5zZm9ybUxheWVyKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci5hZGRDaGlsZChtX2xh
eWVyKTsKIAogICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKLSAgICB9IGVsc2UgaWYgKG1fcHJl
c2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKKyAgICB9IGVsc2UgaWYgKCFtX3ByZXNl
cnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFJlbGFj
ZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3aXRoIHRoaXMgbGF5ZXIuCi0gICAg
ICAgIG1fbGF5ZXItPmxheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAgICAgbV9sYXll
ci5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgICAg
IHBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCktPnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVy
LmdldCgpLCBtX2xheWVyLT5sYXllcigpKTsKKyAgICAgICAgICAgIHBhcmVudCgpLT5wbGF0Zm9y
bUxheWVyKCktPnJlcGxhY2VDaGlsZChtX3RyYW5zZm9ybUxheWVyLCBtX2xheWVyKTsKIAotICAg
ICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKLSAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllci0+bGF5ZXIo
KSk7CisgICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOwogCiAgICAg
ICAgIC8vIFJlbGVhc2UgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV90cmFuc2Zvcm1M
YXllci0+c2V0QW5pbWF0aW9uRGVsZWdhdGUoMCk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIu
Y2xlYXIoKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgw
KTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci5yZXNldCgpOwogCiAgICAgICAgIHVwZGF0ZUxh
eWVyUG9zaXRpb24oKTsKICAgICAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CkBAIC03MDksMzkgKzc2
OCwzOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMz
RCgpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldFByZXNlcnZlczNEKG1fcHJlc2VydmVzM0QpOwotICAgIHBsYXRmb3JtTGF5ZXIo
KS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgIG1fbGF5ZXIuc2V0UHJlc2VydmVzM0QobV9w
cmVzZXJ2ZXMzRCk7CisgICAgcHJpbWFyeUxheWVyKCkuc2V0T3BhY2l0eShtX29wYWNpdHkpOwog
ICAgIHVwZGF0ZU5hbWVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRh
dGVMYXllcklzRHJhd2FibGUoKQogewogICAgIC8vIEZvciB0aGUgcmVzdCBvZiB0aGUgYWNjZWxl
cmF0ZWQgY29tcG9zaXRvciBjb2RlLCB0aGVyZSBpcyBubyByZWFzb24gdG8gbWFrZSBhCi0gICAg
Ly8gZGlzdGluY3Rpb24gYmV0d2VlbiBkcmF3c0NvbnRlbnQgYW5kIGNvbnRlbnRzVmlzaWJsZS4g
U28sIGZvciBtX2xheWVyLT5sYXllcigpLCB0aGVzZSB0d28KKyAgICAvLyBkaXN0aW5jdGlvbiBi
ZXR3ZWVuIGRyYXdzQ29udGVudCBhbmQgY29udGVudHNWaXNpYmxlLiBTbywgZm9yIG1fbGF5ZXIs
IHRoZXNlIHR3bwogICAgIC8vIGZsYWdzIGFyZSBjb21iaW5lZCBoZXJlLiBtX2NvbnRlbnRzTGF5
ZXIgc2hvdWxkbid0IHJlY2VpdmUgdGhlIGRyYXdzQ29udGVudCBmbGFnCiAgICAgLy8gc28gaXQg
aXMgb25seSBnaXZlbiBjb250ZW50c1Zpc2libGUuCiAKLSAgICBtX2xheWVyLT5sYXllcigpLT5z
ZXREcmF3c0NvbnRlbnQobV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2libGUpOworICAg
IG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNp
YmxlKTsKIAotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBpZiAoIW1fY29udGVu
dHNMYXllci5pc051bGwoKSkKKyAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERyYXdzQ29udGVu
dChtX2NvbnRlbnRzVmlzaWJsZSk7CiAKICAgICBpZiAobV9kcmF3c0NvbnRlbnQpCi0gICAgICAg
IG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9sYXllci5pbnZhbGlk
YXRlKCk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKIHsKLSAgICBpZiAo
IW1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVy
IGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0LgogICAgIGlmIChtX2JhY2tncm91bmRDb2xv
clNldCkKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNr
Z3JvdW5kQ29sb3IucmdiKCkpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFja2dyb3Vu
ZENvbG9yKG1fYmFja2dyb3VuZENvbG9yLnJnYigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29u
dGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJH
QkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVu
dHNWaWRlbygpCkBAIC03NTEsNDIgKzgxMCw1MCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50c1JlY3QoKQogewotICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29u
dGVudHNMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChtX2NvbnRlbnRzUmVjdC54KCksIG1f
Y29udGVudHNSZWN0LnkoKSkpOwotICAgIG1fY29udGVudHNMYXllci0+c2V0Qm91bmRzKEludFNp
emUobV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpKTsKKyAg
ICBtX2NvbnRlbnRzTGF5ZXIuc2V0UG9zaXRpb24oRmxvYXRQb2ludChtX2NvbnRlbnRzUmVjdC54
KCksIG1fY29udGVudHNSZWN0LnkoKSkpOworICAgIG1fY29udGVudHNMYXllci5zZXRCb3VuZHMo
SW50U2l6ZShtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSkp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNTY2FsZSgp
CiB7CiAgICAgLy8gSWYgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IGFwcGxpZWQgdGhlbiB0aGVyZSdz
IG5vIG5lZWQgdG8gYXBwbHkgaXQgYWdhaW4uCi0gICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSkK
KyAgICBpZiAoYXBwbGllc1BhZ2VTY2FsZSgpIHx8IG1fbGF5ZXIuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgp
KTsKKyAgICBtX2xheWVyLnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcihXZWJMYXllciog
Y29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRz
TGF5ZXIoV2ViTGF5ZXIgY29udGVudHNMYXllcikKIHsKKyAgICBpZiAoY29udGVudHNMYXllciA9
PSBtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVtb3Zl
RnJvbVBhcmVudCgpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKKyAgICB9CisK
ICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xheWVyOwotICAgIG1fY29udGVudHNMYXll
cklkID0gbV9jb250ZW50c0xheWVyLT5pZCgpOwogCi0gICAgaWYgKG1fY29udGVudHNMYXllcikg
ewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwg
MCkpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSh0cnVlKTsKKyAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAg
ICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7
CiAKICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50IGFz
IHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUgbmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAgICAv
LyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFybHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdzQ29u
dGVudCgpIGFuZCBzZXRDb250ZW50c1Zpc2libGUoKS4KLSAgICAgICAgbV9jb250ZW50c0xheWVy
LT5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOworICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKIAogICAgICAgICAvLyBJ
bnNlcnQgdGhlIGNvbnRlbnQgbGF5ZXIgZmlyc3QuIFZpZGVvIGVsZW1lbnRzIHJlcXVpcmUgdGhp
cywgYmVjYXVzZSB0aGV5IGhhdmUKICAgICAgICAgLy8gc2hhZG93IGNvbnRlbnQgdGhhdCBtdXN0
IGRpc3BsYXkgaW4gZnJvbnQgb2YgdGhlIHZpZGVvLgotICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5pbnNlcnRDaGlsZChtX2NvbnRlbnRzTGF5ZXIsIDApOworICAgICAgICBtX2xheWVyLmluc2Vy
dENoaWxkKG1fY29udGVudHNMYXllciwgMCk7CiAKICAgICAgICAgaWYgKHNob3dEZWJ1Z0JvcmRl
cnMoKSkgewotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9y
KENvbG9yKDAsIDAsIDEyOCwgMTgwKS5yZ2IoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldERlYnVnQm9yZGVyV2lkdGgoMSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIu
c2V0RGVidWdCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4MCkucmdiKCkpOworICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDVmNDhhMDg3ODIzOTM2Yjk2NTcyODkxODNmMzU0NjUxYTk0NjBk
OTQuLmFhNjRlYWQ2ZDY2NWUyNThkOTBkMDI2MGZhYTkxMTUwYjk2ZGFkNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw3ICszOSw2IEBACiAKICNpbmNsdWRlIDxw
dWJsaWMvV2ViQW5pbWF0aW9uRGVsZWdhdGUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVu
dExheWVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkltYWdlTGF5ZXIuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0xMDIsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7
Ci0gICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0
IHsgcmV0dXJuICFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCk7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZU9mZnNl
dCk7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOwpAQCAtMTI2LDEzICsxMjUsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRp
bWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChk
b3VibGUgZmluaXNoVGltZSkgT1ZFUlJJREU7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXll
ciogY29udGVudExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQotCiAgICAg
Ly8gRXhwb3NlZCBmb3IgdGVzdHMuCi0gICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5
ZXIgY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAg
IGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbEJlRGVzdHJveWVkKCk7CisKKyAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlMYXll
cigpIGNvbnN0OworCiAgICAgdm9pZCB1cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRlQ2hp
bGRMaXN0KCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTAsMzcgKzE1
MSwzMiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9p
ZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7CiAKLSAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
IHsKLSAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKLSAgICAgICAgQ29udGVudHNMYXllckZv
ckltYWdlLAotICAgICAgICBDb250ZW50c0xheWVyRm9yVmlkZW8sCi0gICAgICAgIENvbnRlbnRz
TGF5ZXJGb3JDYW52YXMsCi0gICAgfTsKLQotICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50
c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciopOwotICAgIHZvaWQgc2V0dXBDb250ZW50
c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKKyAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihX
ZWJLaXQ6OldlYkxheWVyKTsKIAogICAgIGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUpOwogCiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAgICBP
d25QdHI8V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI+IG1fbGF5ZXI7Ci0gICAgT3duUHRyPFdlYktp
dDo6V2ViTGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7Ci0gICAgT3duUHRyPFdlYktpdDo6V2ViSW1h
Z2VMYXllcj4gbV9pbWFnZUxheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNM
YXllcjsKLSAgICAvLyBXZSBkb24ndCBoYXZlIG93bmVyc2hpcCBvZiBtX2NvbnRlbnRzTGF5ZXIs
IGJ1dCB3ZSBkbyB3YW50IHRvIGtub3cgaWYgYSBnaXZlbiBsYXllciBpcyB0aGUKLSAgICAvLyBz
YW1lIGFzIG91ciBjdXJyZW50IGxheWVyIGluIHNldENvbnRlbnRzVG8oKS4gU2luY2UgbV9jb250
ZW50c0xheWVyIG1heSBiZSBkZWxldGVkIGF0IHRoaXMgcG9pbnQsCi0gICAgLy8gd2Ugc3Rhc2gg
YW4gSUQgYXdheSB3aGVuIHdlIGtub3cgbV9jb250ZW50c0xheWVyIGlzIGFsaXZlIGFuZCB1c2Ug
dGhhdCBmb3IgY29tcGFyaXNvbnMgZnJvbSB0aGF0IHBvaW50Ci0gICAgLy8gb24uCi0gICAgaW50
IG1fY29udGVudHNMYXllcklkOworICAgIFdlYktpdDo6V2ViQ29udGVudExheWVyIG1fbGF5ZXI7
CisgICAgV2ViS2l0OjpXZWJMYXllciBtX3RyYW5zZm9ybUxheWVyOworICAgIFdlYktpdDo6V2Vi
TGF5ZXIgbV9jb250ZW50c0xheWVyOwogCiAgICAgT3duUHRyPE9wYXF1ZVJlY3RUcmFja2luZ0Nv
bnRlbnRMYXllckRlbGVnYXRlPiBtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVn
YXRlOwogCisgICAgZW51bSBDb250ZW50c0xheWVyUHVycG9zZSB7CisgICAgICAgIE5vQ29udGVu
dHNMYXllciA9IDAsCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JJbWFnZSwKKyAgICAgICAgQ29u
dGVudHNMYXllckZvclZpZGVvLAorICAgICAgICBDb250ZW50c0xheWVyRm9yQ2FudmFzLAorICAg
IH07CisKICAgICBDb250ZW50c0xheWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlOwog
ICAgIGJvb2wgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yIDogMTsKICAgICBib29s
IG1faW5TZXRDaGlsZHJlbjsKICAgICBib29sIG1fcGFnZVNjYWxlQ2hhbmdlZDsKIAorICAgIFJl
ZlB0cjxMaW5rSGlnaGxpZ2h0PiBtX2xpbmtIaWdobGlnaHQ7CisKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBpbnQ+IEFuaW1hdGlvbklkTWFwOwogICAgIEFuaW1hdGlvbklkTWFwIG1fYW5p
bWF0aW9uSWRNYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0ZTdmYTc0ZjU1NmU5
OWU4ODA0NTlkNTc1MzY2ODRkZDgxYTI4MWQ0Li4zMGM4MWI2NWM4ZTU4ODIxMDBiYTkxYmU5OGFj
N2YxMTkyY2RmMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMjM0LDExICsyMzQsMTAg
QEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotTGF5ZXJDaHJvbWl1bSogTGF5ZXJDaHJvbWl1
bTo6cm9vdExheWVyKCkKK2NvbnN0IExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RM
YXllcigpIGNvbnN0CiB7Ci0gICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOwotICAgIHdo
aWxlIChsYXllci0+cGFyZW50KCkpCi0gICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwor
ICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyID0gdGhpczsKKyAgICBmb3IgKExheWVyQ2hy
b21pdW0qIHBhcmVudCA9IGxheWVyLT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgeyB9CiAgICAgcmV0dXJuIGxheWVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggMmU1NDFlZTdiZWNjM2UzN2I3OWI5NDQ2NGFlNjU1NjY0YTFl
OGM0NS4uZWMxNGE1MWE3YjQ5ODgzZTBlNWZmN2M2NjJkMGUzNWM5N2QzNWQ1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHJvb3QgbGF5
ZXIgaXMgYSBzcGVjaWFsIGNhc2UgLS0gaXQgb3BlcmF0ZXMgaW4gcGh5c2ljYWwgcGl4ZWxzLgog
ICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAotICAgIExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcigpOworICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cigpIGNvbnN0OwogICAgIExheWVyQ2hyb21pdW0qIHBhcmVudCgpIGNvbnN0OwogICAgIHZvaWQg
YWRkQ2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPik7CiAgICAgdm9pZCBpbnNlcnRDaGls
ZChQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+LCBzaXplX3QgaW5kZXgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkKaW5kZXggZmM4NmY4M2IzZGZlODUzOWIxMzVjNDBiZDVhMzhmMTYwYTkz
NzcxZS4uN2ZiMGMwZjcwN2UxZDY4OGMxYmU5MGJkMjM1ZjAzYTBiNmU0NDhlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xODMsMjcgKzE4MywyNiBAQAogICAgICAgICAgICAg
J3NyYy9XZWJBbmltYXRpb25JbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oJywKKyAgICAgICAgICAgICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcs
CiAgICAgICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwJywKICAgICAgICAgICAg
ICdzcmMvV2ViQ29udGVudExheWVySW1wbC5oJywKLSAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCi0gICAgICAgICAgICAnc3JjL1dlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbC5oJywKKyAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuY3BwJywKICAgICAgICAgICAgICdzcmMvV2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5jcHAnLAot
ICAgICAgICAgICAgJ3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwJywKLSAgICAgICAgICAg
ICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3NyYy9XZWJJbWFn
ZUxheWVySW1wbC5jcHAnLAotICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5oJywK
KyAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdz
cmMvV2ViSW1hZ2VMYXllci5jcHAnLAorICAgICAgICAgICAgJ3NyYy9XZWJMYXllci5jcHAnLAog
ICAgICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdzcmMvV2Vi
TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCcsCiAg
ICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAn
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgnLAotICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxi
YXJMYXllckltcGwuY3BwJywKLSAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
LmgnLAorICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXIuY3BwJywKKyAgICAgICAg
ICAgICdzcmMvV2ViU2Nyb2xsYmFyTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdzcmMvV2ViU29s
aWRDb2xvckxheWVyLmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYlNvbGlkQ29sb3JMYXllcklt
cGwuY3BwJywKICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oJywKICAg
ICAgICAgICAgICdzcmMvV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUuY3BwJywKLSAgICAgICAg
ICAgICdzcmMvV2ViVmlkZW9MYXllckltcGwuY3BwJywKLSAgICAgICAgICAgICdzcmMvV2ViVmlk
ZW9MYXllckltcGwuaCcsCisgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXIuY3BwJywKICAg
ICAgICAgXSwKIAogICAgICAgICAnY29uZGl0aW9ucyc6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDRk
ZjQyMDRiMzQ3YmM4ZGNlODdmMTNhNmZiMGM2MjM0NWU3MGNjMTEuLjY1ZGFjNjJjYWUyNTNkNTE2
NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBs
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDksMTEgKzQ4LDEx
IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdl
YlZpZXdJbXBsKiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNv
bXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyKiBsYXllciA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSo+KG1fZ3JhcGhpY3NMYXllci5nZXQoKSkt
PmNvbnRlbnRMYXllcigpOwotICAgIGxheWVyLT5zZXRVc2VMQ0RUZXh0KHRydWUpOwotICAgIGxh
eWVyLT5sYXllcigpLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgV2ViQ29udGVudExheWVyIGxheWVy
ID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4o
KTsKKyAgICBsYXllci5zZXRVc2VMQ0RUZXh0KHRydWUpOworICAgIGxheWVyLnNldE9wYXF1ZSh0
cnVlKTsKICNpZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci0+c2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyh0cnVlKTsKKyAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzKHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgxLDcgKzgwLDcgQEAgdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKKyAgICBpZiAoKmxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5ZXItPmFk
ZENoaWxkQXRJbmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTYsMTIgKzk1LDEy
IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQg
PSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9
IHZpZXdwb3J0U2l6ZTsKLSAgICBXZWJMYXllciogbGF5ZXIgPSBzY3JvbGxMYXllcigpOwotICAg
IGxheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiArIHNjcm9sbE9yaWdpbik7
Ci0gICAgbGF5ZXItPnNldFBvc2l0aW9uKFdlYkZsb2F0UG9pbnQoLXNjcm9sbFBvc2l0aW9uKSk7
CisgICAgV2ViU2Nyb2xsYWJsZUxheWVyIGxheWVyID0gc2Nyb2xsTGF5ZXIoKTsKKyAgICBsYXll
ci5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiArIHNjcm9sbE9yaWdpbik7CisgICAg
bGF5ZXIuc2V0UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsKICAgICAv
LyBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21wb3NpdGVk
IGxheWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4KLSAgICBs
YXllci0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICBsYXllci5zZXRTY3JvbGxhYmxlKHRydWUp
OwogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dyYXBoaWNz
TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI4LDExICsxMjcsMTEgQEAgYm9vbCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0dXJuIG1f
Z3JhcGhpY3NMYXllci0+cGFyZW50KCk7CiB9CiAKLVdlYkxheWVyKiBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYlNjcm9sbGFibGVMYXllciBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NMYXllci0+
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXIt
PnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxl
TGF5ZXIoKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1M
YXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuaAppbmRleCAwOGI1ZjZhNDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNm
Li5lNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVhNGE3ZGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0K
IAogICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViTGF5ZXIqIHNjcm9sbExheWVy
KCk7CisgICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVyKCk7CiAKICAgICBPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZpZXdJbXBs
KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZmE3NDY1YjE3YzEzMTY3Njk4OGZhNjVhOGQ2YmEwNGZiNDdj
NjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29u
dGVudExheWVyLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KKworI2luY2x1ZGUgIkNvbnRl
bnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudExheWVySW1wbC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRl
bnRMYXllciBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNv
bnRlbnRDbGllbnQpCit7CisgICAgcmV0dXJuIFdlYkNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5
ZXJJbXBsOjpjcmVhdGUoY29udGVudENsaWVudCkpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXll
cjo6Y2xlYXJDbGllbnQoKQoreworICAgIHVud3JhcDxDb250ZW50TGF5ZXJDaHJvbWl1bT4oKS0+
Y2xlYXJEZWxlZ2F0ZSgpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0RG91YmxlU2lk
ZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldERvdWJsZVNpZGVkKGRv
dWJsZVNpZGVkKTsKK30KKwordm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldENvbnRlbnRzU2NhbGUo
ZmxvYXQgc2NhbGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsK
K30KKwordm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFibGUpCit7
CisgICAgbV9wcml2YXRlLT5zZXRVc2VMQ0RUZXh0KGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViQ29u
dGVudExheWVyOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxl
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhl
bmFibGUpOworfQorCitXZWJDb250ZW50TGF5ZXI6OldlYkNvbnRlbnRMYXllcihjb25zdCBQYXNz
UmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKKyAgICA6IFdlYlNjcm9sbGFibGVM
YXllcihub2RlKQoreworfQorCitXZWJDb250ZW50TGF5ZXImIFdlYkNvbnRlbnRMYXllcjo6b3Bl
cmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+JiBub2RlKQorewor
ICAgIG1fcHJpdmF0ZSA9IG5vZGU7CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJDb250ZW50
TGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3ByaXZh
dGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKaW5kZXggZmEyMWU4OTc0
ZmQzYjFiOTgwNmE1YzJlMWNhOTllNjljNjk4ZGNhMy4uNjlkYTFlYTNmMGU4OTIwMTY5NmQ4ZGRl
Yzc2NDhlNGY0NjRjOTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29udGVudExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29udGVudExheWVySW1wbC5jcHAKQEAgLTI2LDY2ICsyNiwzNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKIAotI2luY2x1ZGUgIlNr
TWF0cml4NDQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50Lmg+Ci0j
aW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxv
YXRSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViU2l6ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYkNvbnRlbnRMYXllciogV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdl
YkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRD
bGllbnQpCiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNsaWVudCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNvbnRlbnRDbGllbnQp
KTsKIH0KIAotV2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250
ZW50TGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5l
dyBXZWJMYXllckltcGwoQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQotICAg
ICwgbV9jbGllbnQoY2xpZW50KQorV2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVy
SW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCisgICAgOiBDb250ZW50
TGF5ZXJDaHJvbWl1bSh0aGlzKQorICAgICwgbV9jb250ZW50Q2xpZW50KGNvbnRlbnRDbGllbnQp
CiB7Ci0gICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7Cisg
ICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKIH0KIAogV2ViQ29udGVudExheWVySW1wbDo6fldlYkNv
bnRlbnRMYXllckltcGwoKQogewotICAgIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVt
Kj4obV93ZWJMYXllckltcGwtPmxheWVyKCkpLT5jbGVhckRlbGVnYXRlKCk7CisgICAgY2xlYXJE
ZWxlZ2F0ZSgpOwogfQogCi1XZWJMYXllciogV2ViQ29udGVudExheWVySW1wbDo6bGF5ZXIoKQot
ewotICAgIHJldHVybiBtX3dlYkxheWVySW1wbC5nZXQoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50
TGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKQotewotICAgIG1fd2Vi
TGF5ZXJJbXBsLT5sYXllcigpLT5zZXREb3VibGVTaWRlZChkb3VibGVTaWRlZCk7Ci19Ci0KLXZv
aWQgV2ViQ29udGVudExheWVySW1wbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKLXsK
LSAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci19
Ci0KLXZvaWQgV2ViQ29udGVudExheWVySW1wbDo6c2V0VXNlTENEVGV4dChib29sIGVuYWJsZSkK
LXsKLSAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwot
fQotCi12b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoYm9vbCBlbmFibGUpCi17Ci0gICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNl
dERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZW5hYmxlKTsKLX0KLQotCiB2b2lkIFdl
YkNvbnRlbnRMYXllckltcGw6OnBhaW50Q29udGVudHMoU2tDYW52YXMqIGNhbnZhcywgY29uc3Qg
SW50UmVjdCYgY2xpcCwgRmxvYXRSZWN0JiBvcGFxdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkK
KyAgICBpZiAoIW1fY29udGVudENsaWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkZsb2F0
UmVjdCB3ZWJPcGFxdWU7Ci0gICAgbV9jbGllbnQtPnBhaW50Q29udGVudHMoY2FudmFzLCBXZWJS
ZWN0KGNsaXApLCB3ZWJPcGFxdWUpOworICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50
cyhjYW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CiAgICAgb3BhcXVlID0gd2ViT3Bh
cXVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250
ZW50TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXJJbXBsLmgKaW5kZXggNTExZjhlMGJhMDg2MGI0NmEwODE1NjVmMDk4N2RmZjBlOGFjYjVmMi4u
OTc3MjllYTFlMGMyMDFhMDhiMWY5MDkwN2E2MjgyODFhNGUxMGI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaApAQCAtMjcsMzMgKzI3
LDIzIEBACiAjZGVmaW5lIFdlYkNvbnRlbnRMYXllckltcGxfaAogCiAjaW5jbHVkZSAiQ29udGVu
dExheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29udGVudExheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb250ZW50TGF5ZXJDbGllbnQ7CiAKLWNsYXNz
IFdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgV2ViQ29udGVudExheWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7
CitjbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50
Kik7Ci0KLSAgICAvLyBXZWJDb250ZW50TGF5ZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVh
bCBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RG91Ymxl
U2lkZWQoYm9vbCkgIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxl
KGZsb2F0KSAgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCkg
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzKGJvb2wpICBPVkVSUklERTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50
TGF5ZXJJbXBsPiBjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsK
IAogcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZW50TGF5
ZXJJbXBsKCk7CiAKICAgICAvLyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4K
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhTa0NhbnZhcyosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNsaXAsIFdlYkNvcmU6OkZsb2F0UmVjdCYgb3BhcXVlKSBPVkVSUklERTsKIAot
ICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fd2ViTGF5ZXJJbXBsOwotICAgIFdlYkNvbnRlbnRM
YXllckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViQ29udGVudExheWVyQ2xpZW50KiBtX2NvbnRl
bnRDbGllbnQ7CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNGFmZjU3MjE5NGMwOGE5YmE4M2ZhOTM1M2JjNGM1ZjFhMzE2YmRhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oPgorCisjaW5jbHVkZSAi
Q0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0
ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4dHVyZSwg
ZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShj
b3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIG1fcXVl
dWU7Cit9OworCitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBwdWJsaWMgVGV4
dHVyZUxheWVyQ2hyb21pdW1DbGllbnQsIHB1YmxpYyBUZXh0dXJlTGF5ZXJDaHJvbWl1bSB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgICAgIDogVGV4dHVyZUxheWVyQ2hy
b21pdW0oY2xpZW50ID8gdGhpcyA6IDApCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKENDVGV4dHVy
ZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFdlYlRleHR1cmVV
cGRhdGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7CisgICAgICAgIHJldHVybiBtX2NsaWVudC0+
cHJlcGFyZVRleHR1cmUodXBkYXRlckltcGwpOworICAgIH0KKworICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFCisgICAgeworICAgICAg
ICByZXR1cm4gbV9jbGllbnQtPmNvbnRleHQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudCogY2xpZW50KQoreworICAgIFJlZlB0cjxUZXh0dXJlTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNs
aWVudCkpOworICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOworICAgIHJldHVybiBXZWJF
eHRlcm5hbFRleHR1cmVMYXllcihsYXllci5yZWxlYXNlKCkpOworfQorCit2b2lkIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpjbGVhckNsaWVudCgpCit7CisgICAgdW53cmFwPFRleHR1cmVMYXll
ckNocm9taXVtPigpLT5jbGVhckNsaWVudCgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgdW53cmFwPFRleHR1cmVM
YXllckNocm9taXVtPigpLT5zZXRUZXh0dXJlSWQoaWQpOworfQorCit2b2lkIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpzZXRGbGlwcGVkKGJvb2wgZmxpcHBlZCkKK3sKKyAgICB1bndyYXA8VGV4
dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3ZvaWQgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIHJlY3Qp
Cit7CisgICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRVVlJlY3QocmVjdCk7
Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldE9wYXF1ZShib29sIG9wYXF1
ZSkKK3sKKyAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldE9wYXF1ZShvcGFx
dWUpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRQcmVtdWx0aXBsaWVk
QWxwaGEoYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpCit7CisgICAgdW53cmFwPFRleHR1cmVMYXll
ckNocm9taXVtPigpLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsK
K30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6d2lsbE1vZGlmeVRleHR1cmUoKQor
eworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+d2lsbE1vZGlmeVRleHR1cmUo
KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0UmF0ZUxpbWl0Q29udGV4
dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCkt
PnNldFJhdGVMaW1pdENvbnRleHQocmF0ZUxpbWl0KTsKK30KKworV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyKFBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hy
b21pdW0+IGxheWVyKQorICAgIDogV2ViTGF5ZXIobGF5ZXIpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ2MjE2NmY0NDQxNTY4ZGI0YTJmNTk2NzQ1ZDUxM2VlMmFlOGMyMzEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgotCi0jaW5jbHVkZSAiQ0NUZXh0dXJlVXBkYXRlUXVl
dWUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkxh
eWVySW1wbC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVu
dC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViU2l6ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLVdlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6
Y3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0
dXJuIG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xpZW50KTsKLX0KLQotV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkK
LXsKLSAgICBSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyOwotICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMp
OwotICAgIGVsc2UKLSAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KDApOwotICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOwotICAgIG1fbGF5ZXIgPSBhZG9w
dFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyLnJlbGVhc2UoKSkpOwotfQotCi1XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKQotewotICAg
IHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPmNs
ZWFyQ2xpZW50KCk7Ci19Ci0KLVdlYkxheWVyKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6
OmxheWVyKCkKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQotdm9pZCBXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGw6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICBz
dGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRU
ZXh0dXJlSWQoaWQpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0
RmxpcHBlZChib29sIGZsaXBwZWQpCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hy
b21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKLX0KLQotdm9p
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJl
Y3QmIHJlY3QpCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xh
eWVyLT5sYXllcigpKS0+c2V0VVZSZWN0KHJlY3QpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIHN0YXRpY19jYXN0
PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldE9wYXF1ZShvcGFx
dWUpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UHJlbXVsdGlw
bGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQotewotICAgIHN0YXRpY19jYXN0PFRl
eHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFByZW11bHRpcGxpZWRB
bHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6d2lsbE1vZGlmeVRleHR1cmUoKQotewotICAgIHN0YXRpY19jYXN0PFRleHR1cmVM
YXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPndpbGxNb2RpZnlUZXh0dXJlKCk7Ci19
Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRSYXRlTGltaXRDb250ZXh0
KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVt
Kj4obV9sYXllci0+bGF5ZXIoKSktPnNldFJhdGVMaW1pdENvbnRleHQocmF0ZUxpbWl0KTsKLX0K
LQotY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRleHR1cmVVcGRhdGVy
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlckltcGwoQ0NUZXh0dXJl
VXBkYXRlUXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUs
IHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0
dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmRD
b3B5KGNvcHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYg
bV9xdWV1ZTsKLX07Ci0KLXVuc2lnbmVkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6cHJl
cGFyZVRleHR1cmUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQotewotICAgIEFTU0VSVCht
X2NsaWVudCk7Ci0gICAgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsK
LSAgICByZXR1cm4gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXJJbXBsKTsKLX0KLQot
V2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y29udGV4
dCgpCi17Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICByZXR1cm4gbV9jbGllbnQtPmNvbnRl
eHQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJm
NTgzNGU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsX2gKLSNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gK
LQotI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8cHVibGljL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJMYXllckltcGw7Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1Ymxp
YyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsKCk7Ci0KLSAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBpbXBsZW1lbnRhdGlv
bi4KLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGbGlwcGVkKGJvb2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRVVlJlY3QoY29u
c3QgV2ViRmxvYXRSZWN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShi
b29sKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJv
b2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4dHVyZSgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wpIE9WRVJSSURF
OwotCi0gICAgLy8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24uCi0g
ICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRh
dGVRdWV1ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQoKSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckNsaWVudCogbV9jbGllbnQ7Ci0gICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKLX07
Ci0KLX0KLQotI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43N2RiMGM4Nzc3N2ZmYjQ1ZmM4M2JjOTkwZDVlZGY5MjU0ZmI4NTEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3Bw
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYklPU3VyZmFjZUxheWVyLmg+CisKKyNpbmNsdWRlICJJT1N1cmZhY2VMYXllckNo
cm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJT1N1cmZhY2VMYXllciBXZWJJ
T1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBsYXll
ci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gV2ViSU9TdXJmYWNlTGF5ZXIobGF5
ZXIucmVsZWFzZSgpKTsKK30KKwordm9pZCBXZWJJT1N1cmZhY2VMYXllcjo6c2V0SU9TdXJmYWNl
UHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgV2ViU2l6ZSBzaXplKQoreworICAgIHVu
d3JhcDxJT1N1cmZhY2VMYXllckNocm9taXVtPigpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlv
U3VyZmFjZUlkLCBzaXplKTsKK30KKworV2ViSU9TdXJmYWNlTGF5ZXI6OldlYklPU3VyZmFjZUxh
eWVyKFBhc3NSZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBXZWJM
YXllcihsYXllcikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkx
ZTkwOGI0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJJT1N1cmZhY2VMYXllckltcGwuaCIKLQotI2luY2x1ZGUgIklPU3VyZmFjZUxh
eWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKLQotdXNpbmcgV2ViQ29y
ZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYklP
U3VyZmFjZUxheWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKLXsKLSAgICBSZWZQdHI8
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKLSAgICByZXR1cm4gbmV3
IFdlYklPU3VyZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOwotfQotCi1XZWJJT1N1cmZh
Y2VMYXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPElPU3VyZmFjZUxh
eWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJ
bXBsKGxheWVyKSkpCi17Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFj
ZUxheWVySW1wbCgpCi17Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplIHNpemUpCi17Ci0g
ICAgc3RhdGljX2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkp
LT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKLX0KLQotV2ViTGF5
ZXIqIFdlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQotewotICAgIHJldHVybiBtX2xheWVy
LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNkYmIwMjc1OWE1Y2JkNzRkMzU2NDg5OThhZWM2MjEwYTJmNDcyOWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJT1N1cmZhY2VMYXllckltcGxfaAotI2Rl
ZmluZSBXZWJJT1N1cmZhY2VMYXllckltcGxfaAotCi0jaW5jbHVkZSA8cHVibGljL1dlYklPU3Vy
ZmFjZUxheWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBJT1N1cmZhY2VMYXllckNocm9taXVtOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsIDogcHVibGljIFdlYklPU3VyZmFjZUxh
eWVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJT1N1cmZhY2VMYXllckltcGwoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtPik7Ci0gICAgdmlydHVhbCB+V2Vi
SU9TdXJmYWNlTGF5ZXJJbXBsKCk7Ci0KLSAgICAvLyBXZWJJT1N1cmZhY2VMYXllciBpbXBsZW1l
bnRhdGlvbi4KLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBX
ZWJTaXplKSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBt
X2xheWVyOwotfTsKLQotfQotCi0jZW5kaWYgLy8gV2ViSU9TdXJmYWNlTGF5ZXJJbXBsX2gKLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBhOTY5ZjU2ZTI0MDZmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViSW1hZ2VMYXllci5oPgorCisjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
OjpjcmVhdGUoKSk7Cit9CisKK1dlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogV2ViTGF5ZXIobGF5
ZXIpCit7Cit9CisKK3ZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1h
cCkKK3sKKyAgICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPigpLT5zZXRCaXRt
YXAoYml0bWFwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ5M2FmODA0NWEyNmY2OGU4MjZkMDBjYWQ0ZDkyNzY1ZTkxZTlkYzMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbWFn
ZUxheWVySW1wbC5oIgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiV2ViTGF5ZXJJbXBsLmgiCi0KLXVzaW5nIFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkltYWdlTGF5ZXIqIFdlYkltYWdlTGF5ZXI6OmNy
ZWF0ZSgpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbWFnZUxheWVySW1wbChXZWJDb3JlOjpJbWFn
ZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKLX0KLQotV2ViSW1hZ2VMYXllckltcGw6OldlYklt
YWdlTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPiBsYXll
cikKLSAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQotewot
fQotCi1XZWJJbWFnZUxheWVySW1wbDo6fldlYkltYWdlTGF5ZXJJbXBsKCkKLXsKLX0KLQotV2Vi
TGF5ZXIqIFdlYkltYWdlTGF5ZXJJbXBsOjpsYXllcigpCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXIu
Z2V0KCk7Ci19Ci0KLXZvaWQgV2ViSW1hZ2VMYXllckltcGw6OnNldEJpdG1hcChTa0JpdG1hcCBi
aXRtYXApCi17Ci0gICAgc3RhdGljX2Nhc3Q8SW1hZ2VMYXllckNocm9taXVtKj4obV9sYXllci0+
bGF5ZXIoKSktPnNldEJpdG1hcChiaXRtYXApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTRiOGIzZWIwZmY5MjI5MmI5ZDkwZWVkMWJkNTQy
N2JiODQ0ZjI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbWFnZUxheWVySW1wbF9o
Ci0jZGVmaW5lIFdlYkltYWdlTGF5ZXJJbXBsX2gKLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJJbWFn
ZUxheWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBJbWFnZUxheWVyQ2hyb21pdW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViTGF5ZXJJbXBsOwotCi1jbGFzcyBXZWJJbWFnZUxheWVySW1wbCA6IHB1YmxpYyBXZWJJ
bWFnZUxheWVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJbWFnZUxheWVySW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4pOwotICAgIHZpcnR1YWwgfldlYklt
YWdlTGF5ZXJJbXBsKCk7Ci0KLSAgICAvLyBXZWJJbWFnZUxheWVyIGltcGxlbWVudGF0aW9uLgot
ICAgIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCaXRt
YXAoU2tCaXRtYXApIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIE93blB0cjxXZWJMYXllcklt
cGw+IG1fbGF5ZXI7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBXZWJJbWFnZUxheWVySW1wbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4OTdlNmY4
MTJiMTcxZjkwZjIyNjhlYmM1N2Q1MDYxMDMzOTdiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcApAQCAtMCwwICsxLDM3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KKwor
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5j
bHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4OworCituYW1lc3BhY2UgeworCitXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KGNvbnN0IFNrTWF0cml4NDQm
IG1hdHJpeCkKK3sKKyAgICBkb3VibGUgZGF0YVsxNl07CisgICAgbWF0cml4LmFzQ29sTWFqb3Jk
KGRhdGEpOworICAgIHJldHVybiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChkYXRhWzBdLCBkYXRh
WzFdLCBkYXRhWzJdLCBkYXRhWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhWzRdLCBkYXRhWzVdLCBkYXRhWzZdLCBkYXRhWzddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhWzhdLCBkYXRhWzldLCBkYXRhWzEwXSwgZGF0YVsxMV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbMTJdLCBkYXRhWzEzXSwgZGF0
YVsxNF0sIGRhdGFbMTVdKTsKK30KKworU2tNYXRyaXg0NCBza01hdHJpeDQ0RnJvbVRyYW5zZm9y
bWF0aW9uTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7Cisg
ICAgU2tNYXRyaXg0NCBza01hdHJpeDsKKyAgICBza01hdHJpeC5zZXQoMCwgMCwgU2tEb3VibGVU
b01TY2FsYXIobWF0cml4Lm0xMSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEsIDAsIFNrRG91Ymxl
VG9NU2NhbGFyKG1hdHJpeC5tMTIoKSkpOworICAgIHNrTWF0cml4LnNldCgyLCAwLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTEzKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMywgMCwgU2tEb3Vi
bGVUb01TY2FsYXIobWF0cml4Lm0xNCgpKSk7CisgICAgc2tNYXRyaXguc2V0KDAsIDEsIFNrRG91
YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjEoKSkpOworICAgIHNrTWF0cml4LnNldCgxLCAxLCBTa0Rv
dWJsZVRvTVNjYWxhcihtYXRyaXgubTIyKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMSwgU2tE
b3VibGVUb01TY2FsYXIobWF0cml4Lm0yMygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDEsIFNr
RG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjQoKSkpOworICAgIHNrTWF0cml4LnNldCgwLCAyLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMxKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMiwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDIs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAy
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTM0KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMCwg
MywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEs
IDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDIoKSkpOworICAgIHNrTWF0cml4LnNldCgy
LCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQzKCkpKTsKKyAgICBza01hdHJpeC5zZXQo
MywgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00NCgpKSk7CisgICAgcmV0dXJuIHNrTWF0
cml4OworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkxheWVyIFdlYkxheWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBXZWJMYXllcihX
ZWJMYXllckltcGw6OmNyZWF0ZSgpKTsKK30KKwordm9pZCBXZWJMYXllcjo6cmVzZXQoKQorewor
ICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCit2b2lkIFdlYkxheWVyOjphc3NpZ24oY29uc3Qg
V2ViTGF5ZXImIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30K
KworYm9vbCBXZWJMYXllcjo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyJiBuKSBjb25zdAoreworICAg
IHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG4ubV9wcml2YXRlLmdldCgpKTsKK30KKwordm9p
ZCBXZWJMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBkaXJ0eVJlY3Qp
Cit7CisgICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXI6OmludmFsaWRhdGUoKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNE
aXNwbGF5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OmFkZENoaWxkKGNvbnN0IFdlYkxheWVyJiBj
aGlsZCkKK3sKKyAgICBtX3ByaXZhdGUtPmFkZENoaWxkKGNoaWxkKTsKK30KKwordm9pZCBXZWJM
YXllcjo6aW5zZXJ0Q2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7
CisgICAgbV9wcml2YXRlLT5pbnNlcnRDaGlsZChjaGlsZCwgaW5kZXgpOworfQorCit2b2lkIFdl
YkxheWVyOjpyZXBsYWNlQ2hpbGQoY29uc3QgV2ViTGF5ZXImIHJlZmVyZW5jZSwgY29uc3QgV2Vi
TGF5ZXImIG5ld0xheWVyKQoreworICAgIFdlYkxheWVyIHJlZiA9IHJlZmVyZW5jZTsKKyAgICBt
X3ByaXZhdGUtPnJlcGxhY2VDaGlsZChyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCksIG5ld0xh
eWVyKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdl
YkxheWVyPiYgd2ViQ2hpbGRyZW4pCit7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGNoaWxkcmVuKHdlYkNoaWxkcmVuLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3ZWJDaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAgY2hpbGRyZW5baV0gPSB3ZWJD
aGlsZHJlbltpXS51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKTsKKyAgICBtX3ByaXZhdGUtPnNldENo
aWxkcmVuKGNoaWxkcmVuKTsKK30KKwordm9pZCBXZWJMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgp
Cit7CisgICAgbV9wcml2YXRlLT5yZW1vdmVGcm9tUGFyZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXI6OnJlbW92ZUFsbENoaWxkcmVuKCkKK3sKKyAgICBtX3ByaXZhdGUtPnJlbW92ZUFsbENoaWxk
cmVuKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0
UG9pbnQmIGFuY2hvclBvaW50KQoreworICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnQoYW5j
aG9yUG9pbnQpOworfQorCitXZWJGbG9hdFBvaW50IFdlYkxheWVyOjphbmNob3JQb2ludCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQobV9wcml2YXRlLT5hbmNob3JQb2ludCgp
KTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50
WikKK3sKKyAgICBtX3ByaXZhdGUtPnNldEFuY2hvclBvaW50WihhbmNob3JQb2ludFopOworfQor
CitmbG9hdCBXZWJMYXllcjo6YW5jaG9yUG9pbnRaKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5hbmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0Qm91bmRzKGNv
bnN0IFdlYlNpemUmIHNpemUpCit7CisgICAgbV9wcml2YXRlLT5zZXRCb3VuZHMoc2l6ZSk7Cit9
CisKK1dlYlNpemUgV2ViTGF5ZXI6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNp
emUobV9wcml2YXRlLT5ib3VuZHMoKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldE1hc2tzVG9C
b3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TWFza3NUb0Jv
dW5kcyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllcjo6bWFza3NUb0JvdW5kcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFza3NUb0JvdW5kcygpOworfQorCit2
b2lkIFdlYkxheWVyOjpzZXRNYXNrTGF5ZXIoY29uc3QgV2ViTGF5ZXImIG1hc2tMYXllcikKK3sK
KyAgICBXZWJMYXllciByZWYgPSBtYXNrTGF5ZXI7CisgICAgbV9wcml2YXRlLT5zZXRNYXNrTGF5
ZXIocmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0
UmVwbGljYUxheWVyKGNvbnN0IFdlYkxheWVyJiByZXBsaWNhTGF5ZXIpCit7CisgICAgV2ViTGF5
ZXIgcmVmID0gcmVwbGljYUxheWVyOworICAgIG1fcHJpdmF0ZS0+c2V0UmVwbGljYUxheWVyKHJl
Zi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldE9wYWNp
dHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldE9wYWNpdHkob3BhY2l0eSk7
Cit9CisKK2Zsb2F0IFdlYkxheWVyOjpvcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldE9wYXF1ZShib29sIG9w
YXF1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldE9wYXF1ZShvcGFxdWUpOworfQorCitib29sIFdl
YkxheWVyOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPm9wYXF1ZSgp
OworfQorCit2b2lkIFdlYkxheWVyOjpzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JiBw
b3NpdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKwor
V2ViRmxvYXRQb2ludCBXZWJMYXllcjo6cG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBX
ZWJGbG9hdFBvaW50KG1fcHJpdmF0ZS0+cG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6
OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBt
X3ByaXZhdGUtPnNldFN1YmxheWVyVHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNr
TWF0cml4NDQobWF0cml4KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldFN1YmxheWVyVHJhbnNm
b3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgbV9wcml2
YXRlLT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxh
eWVyOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNrTWF0cml4NDRG
cm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9wcml2YXRlLT5zdWJsYXllclRyYW5zZm9ybSgpKTsK
K30KKwordm9pZCBXZWJMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJp
eCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZy
b21Ta01hdHJpeDQ0KG1hdHJpeCkpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXRUcmFuc2Zvcm0o
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBtX3ByaXZhdGUt
PnNldFRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVyOjp0cmFuc2Zv
cm0oKSBjb25zdAoreworICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0
cml4KG1fcHJpdmF0ZS0+dHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXREcmF3
c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0RyYXdh
YmxlKGRyYXdzQ29udGVudCk7Cit9CisKK2Jvb2wgV2ViTGF5ZXI6OmRyYXdzQ29udGVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXI6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmUzRCkKK3sKKyAgICBtX3ByaXZh
dGUtPnNldFByZXNlcnZlczNEKHByZXNlcnZlM0QpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXRV
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkpCit7CisgICAgbV9wcml2YXRlLT5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodXNl
UGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0QmFja2dy
b3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbG9yKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllcjo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJhY2tn
cm91bmRGaWx0ZXJzKGZpbHRlcnMpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXREZWJ1Z0JvcmRl
ckNvbG9yKGNvbnN0IFdlYkNvbG9yJiBjb2xvcikKK3sKKyAgICBtX3ByaXZhdGUtPnNldERlYnVn
Qm9yZGVyQ29sb3IoY29sb3IpOworfQorCit2b2lkIFdlYkxheWVyOjpzZXREZWJ1Z0JvcmRlcldp
ZHRoKGZsb2F0IHdpZHRoKQoreworICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJXaWR0aCh3
aWR0aCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldERlYnVnTmFtZShXZWJTdHJpbmcgbmFtZSkK
K3sKKyAgICBtX3ByaXZhdGUtPnNldERlYnVnTmFtZShuYW1lKTsKK30KKwordm9pZCBXZWJMYXll
cjo6c2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqIGRlbGVnYXRlKQor
eworICAgIG1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9
CisKK2Jvb2wgV2ViTGF5ZXI6OmFkZEFuaW1hdGlvbihXZWJBbmltYXRpb24qIGFuaW1hdGlvbikK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hZGRBbmltYXRpb24oc3RhdGljX2Nhc3Q8V2ViQW5p
bWF0aW9uSW1wbCo+KGFuaW1hdGlvbiktPmNsb25lVG9DQ0FuaW1hdGlvbigpKTsKK30KKwordm9p
ZCBXZWJMYXllcjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkKK3sKKyAgICBtX3By
aXZhdGUtPnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25JZCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6
OnJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJv
cGVydHkgdGFyZ2V0UHJvcGVydHkpCit7CisgICAgbV9wcml2YXRlLT5sYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBzdGF0aWNfY2FzdDxDQ0Fj
dGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3BlcnR5KSk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXI6OnBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVP
ZmZzZXQpCit7CisgICAgbV9wcml2YXRlLT5wYXVzZUFuaW1hdGlvbihhbmltYXRpb25JZCwgdGlt
ZU9mZnNldCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lKQoreworICAgIG1fcHJpdmF0ZS0+c3VzcGVuZEFuaW1hdGlvbnMobW9ub3Rv
bmljVGltZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1v
bm90b25pY1RpbWUpCit7CisgICAgbV9wcml2YXRlLT5yZXN1bWVBbmltYXRpb25zKG1vbm90b25p
Y1RpbWUpOworfQorCitib29sIFdlYkxheWVyOjpoYXNBY3RpdmVBbmltYXRpb24oKQoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPmhhc0FjdGl2ZUFuaW1hdGlvbigpOworfQorCit2b2lkIFdlYkxh
eWVyOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciogb3RoZXIpCit7CisgICAgQVNTRVJU
KG90aGVyKTsKKyAgICBpZiAob3RoZXIpCisgICAgICAgIG90aGVyLT5tX3ByaXZhdGUtPnNldExh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX3ByaXZhdGUtPnJlbGVhc2VMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIoKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXI6OnNldEZvcmNlUmVuZGVyU3VyZmFjZShi
b29sIGZvcmNlUmVuZGVyU3VyZmFjZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEZvcmNlUmVuZGVy
U3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lkIFdlYkxheWVyOjpjbGVhclJl
bmRlclN1cmZhY2UoKQoreworICAgIG1fcHJpdmF0ZS0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7Cit9
CisKK1dlYkxheWVyOjpXZWJMYXllcihjb25zdCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+JiBu
b2RlKQorICAgIDogbV9wcml2YXRlKG5vZGUpCit7Cit9CisKK1dlYkxheWVyJiBXZWJMYXllcjo6
b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCit7CisgICAg
bV9wcml2YXRlID0gbm9kZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkxheWVyOjpvcGVy
YXRvciBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCmluZGV4IDQwY2VkNDg1ZDcxODg3MzBiODY4
ZGJlODZjZTU3YmE1ZDM2YTMzMmIuLjE2ZTEyMDZjYTMzNWMzZTk4MTRkZWJlY2I0ZWQ4YmIyYjAy
ZWI3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApA
QCAtMjYsMzc2ICsyNiwyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkxh
eWVySW1wbC5oIgogCi0jaW5jbHVkZSAiQ0NBY3RpdmVBbmltYXRpb24uaCIKLSNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgotI2luY2x1ZGUgIldlYkFu
aW1hdGlvbkltcGwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgotI2luY2x1
ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi11c2luZyBXZWJD
b3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjsKLXVzaW5nIFdlYkNvcmU6OkxheWVyQ2hyb21pdW07Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLW5hbWVzcGFj
ZSB7Ci0KLVdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNr
TWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIGRvdWJsZSBkYXRhWzE2
XTsKLSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7Ci0gICAgcmV0dXJuIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRh
dGFbN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFb
OV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOwotfQotCi1Ta01hdHJp
eDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01hdHJpeDQ0IHNrTWF0cml4OwotICAgIHNr
TWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKLSAgICBz
a01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Ci0gICAg
c2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwotICAg
IHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKLSAg
ICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0g
ICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOwot
ICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsK
LSAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7
Ci0gICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkp
OwotICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkp
KTsKLSAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygp
KSk7Ci0gICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQo
KSkpOwotICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQx
KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00
MigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5t
NDMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgu
bTQ0KCkpKTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQotCi0KLVdlYkxheWVyKiBXZWJMYXllcjo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8V2ViTGF5
ZXJJbXBsPiBXZWJMYXllckltcGw6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXZWJMYXll
ckltcGwoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViTGF5ZXJJbXBsKCkpOwogfQogCi1XZWJMYXllckltcGw6OldlYkxheWVySW1wbChQYXNzUmVm
UHRyPExheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogbV9sYXllcihsYXllcikKK1dlYkxheWVy
SW1wbDo6V2ViTGF5ZXJJbXBsKCkKKyAgICA6IExheWVyQ2hyb21pdW0oKQogeworICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoaXMgbGF5ZXIgZG9lcyBub3QgZHJhdyBjb250ZW50LiBUaGlzIHdheSB3
ZSBkb24ndCBoYXZlIHRvIG92ZXJyaWRlCisgICAgLy8gdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50
YXRpb24gb2YgZHJhd3NDb250ZW50KCkuCisgICAgQVNTRVJUKCFkcmF3c0NvbnRlbnQoKSk7CiB9
CiAKIFdlYkxheWVySW1wbDo6fldlYkxheWVySW1wbCgpCiB7Ci0gICAgbV9sYXllci0+Y2xlYXJS
ZW5kZXJTdXJmYWNlKCk7Ci0gICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgw
KTsKLX0KLQotaW50IFdlYkxheWVySW1wbDo6aWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2xh
eWVyLT5pZCgpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JiByZWN0KQotewotICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3Qo
cmVjdCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX2xh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxk
KFdlYkxheWVyKiBjaGlsZCkKLXsKLSAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxX
ZWJMYXllckltcGwqPihjaGlsZCktPmxheWVyKCkpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6
aW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCi17Ci0gICAgbV9sYXll
ci0+aW5zZXJ0Q2hpbGQoc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigp
LCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIq
IHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKQotewotICAgIG1fbGF5ZXItPnJlcGxhY2VD
aGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0
aWNfY2FzdDxXZWJMYXllckltcGwqPihuZXdMYXllciktPmxheWVyKCkpOwotfQotCi12b2lkIFdl
YkxheWVySW1wbDo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNo
aWxkcmVuKQotewotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3
ZWJDaGlsZHJlbi5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRy
ZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5
ZXJJbXBsKj4od2ViQ2hpbGRyZW5baV0pLT5sYXllcigpOwotICAgIG1fbGF5ZXItPnNldENoaWxk
cmVuKGNoaWxkcmVuKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQo
KQotewotICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXll
ckltcGw6OnJlbW92ZUFsbENoaWxkcmVuKCkKLXsKLSAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGls
ZHJlbigpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2Vi
RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCi17Ci0gICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQo
YW5jaG9yUG9pbnQpOwotfQotCi1XZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9p
bnQoKSBjb25zdAotewotICAgIHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBv
aW50KCkpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFu
Y2hvclBvaW50WikKLXsKLSAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRa
KTsKLX0KLQotZmxvYXQgV2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAg
IHJldHVybiBtX2xheWVyLT5hbmNob3JQb2ludFooKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6
OnNldEJvdW5kcyhjb25zdCBXZWJTaXplJiBzaXplKQotewotICAgIG1fbGF5ZXItPnNldEJvdW5k
cyhzaXplKTsKLX0KLQotV2ViU2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFdlYlNpemUobV9sYXllci0+Ym91bmRzKCkpOwotfQotCi12b2lkIFdlYkxheWVy
SW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9sYXll
ci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKLX0KLQotYm9vbCBXZWJMYXllcklt
cGw6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1Rv
Qm91bmRzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIq
IG1hc2tMYXllcikKLXsKLSAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3Rh
dGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOwotfQotCi12
b2lkIFdlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5ZXIp
Ci17Ci0gICAgbV9sYXllci0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRpY19j
YXN0PFdlYkxheWVySW1wbCo+KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKLX0KLQotdm9p
ZCBXZWJMYXllckltcGw6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKLXsKLSAgICBtX2xheWVy
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOwotfQotCi1mbG9hdCBXZWJMYXllckltcGw6Om9wYWNpdHko
KSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAgbV9sYXllci0+c2V0T3Bh
cXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2xheWVyLT5vcGFxdWUoKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNl
dFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewotICAgIG1fbGF5ZXIt
PnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKLX0KLQotV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6
OnBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5w
b3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKLXsKLSAgICBtX2xheWVyLT5zZXRTdWJsYXllclRy
YW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOwotfQot
Ci12b2lkIFdlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5z
Zm9ybShtYXRyaXgpOwotfQotCi1Ta01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdAotewotICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9u
TWF0cml4KG1fbGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12b2lkIFdlYkxheWVy
SW1wbDo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKLXsKLSAgICBtX2xh
eWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRy
aXgpKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybSht
YXRyaXgpOwotfQotCi1Ta01hdHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVy
LT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQo
Ym9vbCBkcmF3c0NvbnRlbnQpCi17Ci0gICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0Nv
bnRlbnQpOwotfQotCi1ib29sIFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9sYXllci0+ZHJhd3NDb250ZW50KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJ
bXBsOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCi17Ci0gICAgbV9sYXllci0+c2V0
UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRVc2VQ
YXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkp
Ci17Ci0gICAgbV9sYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29u
c3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICBtX2xheWVyLT5zZXRCYWNr
Z3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNldERlYnVn
Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fbGF5ZXItPnNldERl
YnVnQm9yZGVyQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0RGVidWdC
b3JkZXJXaWR0aChmbG9hdCB3aWR0aCkKLXsKLSAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldp
ZHRoKHdpZHRoKTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJTdHJp
bmcgbmFtZSkKLXsKLSAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSog
ZGVsZWdhdGUpCi17Ci0gICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxl
Z2F0ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9u
KiBhbmltYXRpb24pCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0aWNf
Y2FzdDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkp
OwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25J
ZCkKLXsKLSAgICBtX2xheWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOwotfQotCi12
b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAgICBtX2xheWVyLT5s
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBz
dGF0aWNfY2FzdDxDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3Bl
cnR5KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0
aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9u
KGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJMYXllckltcGw6OnN1c3Bl
bmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQotewotICAgIG1fbGF5ZXItPnN1c3Bl
bmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6cmVz
dW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKLXsKLSAgICBtX2xheWVyLT5yZXN1
bWVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwotfQotCi1ib29sIFdlYkxheWVySW1wbDo6aGFz
QWN0aXZlQW5pbWF0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJM
YXllciogb3RoZXIpCi17Ci0gICAgQVNTRVJUKG90aGVyKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJM
YXllckltcGwqPihvdGhlciktPm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlciht
X2xheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOwotfQotCi12b2lkIFdl
YkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNl
KQotewotICAgIG1fbGF5ZXItPnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1cmZh
Y2UpOwotfQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQg
cG9zaXRpb24pCi17Ci0gICAgbV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwot
fQotCi12b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCi17
Ci0gICAgbV9sYXllci0+c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKLX0KLQotdm9pZCBXZWJM
YXllckltcGw6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhh
bmRsZXJzKQotewotICAgIG1fbGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCi17Ci0gICAgbV9s
YXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihj
b25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiBy
ZWdpb247Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewot
ICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9u
LnVuaXRlKHJlY3QpOwotICAgIH0KLSAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbihyZWdpb24pOwotCi19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZv
ckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCBlbmFibGUpCi17Ci0gICAgbV9sYXllci0+c2V0SXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Ci19Ci0KLXZvaWQgV2ViTGF5
ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCi17Ci0gICAgbV9s
YXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLUxheWVyQ2hyb21p
dW0qIFdlYkxheWVySW1wbDo6bGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggN2UzYjUzM2JjZmYxYTFmZWQ5ZDc3YTE2NzcxZTVlYWRm
NGViZTI2Yi4uN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThlYmY0YzE5YzE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDg0ICsyNiwxOCBA
QAogI2lmbmRlZiBXZWJMYXllckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0jaW5j
bHVkZSA8cHVibGljL1dlYkxheWVyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBMYXllckNocm9taXVtOwotfQorI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdl
YkxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXZWJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVt
Pik7Ci0gICAgdmlydHVhbCB+V2ViTGF5ZXJJbXBsKCk7Ci0KLSAgICAvLyBXZWJMYXllciBpbXBs
ZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRD
aGlsZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2Vi
TGF5ZXIqPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgbWFza3NU
b0JvdW5kcygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIo
V2ViTGF5ZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdl
YkxheWVyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IG9wYXF1ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBXZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJGbG9hdFBvaW50
IHBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVy
VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5z
Zm9ybSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQo
Ym9vbCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJh
dGlvbnMmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNl
QW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90
b25pY1RpbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24o
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5
ZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJv
b2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2lu
dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29s
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
Y29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOwotCi0g
ICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+IG1fbGF5ZXI7CisgICAgV2ViTGF5ZXJJbXBsKCk7Cisg
ICAgdmlydHVhbCB+V2ViTGF5ZXJJbXBsKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5k
ZXggN2RmYmNkMTI5ZWUxMTc1YzJhYzA1OTY4NTgyN2RjMDVjNGQxZmExYy4uZjM5N2U1MzRhODQx
ZDQ1NmJhMjM3M2RiMzUxOWVjNWFmNGFkNmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
ICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJDQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgogI2luY2x1
ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CkBAIC04NCw3ICs4Myw3IEBAIHZvaWQgV2Vi
TGF5ZXJUcmVlVmlldzo6c2V0U3VyZmFjZVJlYWR5KCkKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6
c2V0Um9vdExheWVyKFdlYkxheWVyICpyb290KQogewogICAgIGlmIChyb290KQotICAgICAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKHN0YXRpY19jYXN0PFdlYkxh
eWVySW1wbCo+KHJvb3QpLT5sYXllcigpKTsKKyAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVI
b3N0KCktPnNldFJvb3RMYXllcigqcm9vdCk7CiAgICAgZWxzZQogICAgICAgICBtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4o
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5jcHAKaW5kZXggMWZkODIzOTc2OGMwOWI2Njk1NGRjMDI1MGUyOGI2Zjk1ZjZmMDk1
Ni4uMWYxOTMzZmM5NjZkYTBhOTM1MDg0ZTMzMmYzNGRiZjRjYmUxYzE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIkND
VGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiV2Vi
TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaD4KQEAgLTE0Myw3ICsxNDIsNyBAQCBQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJ
bXBsPiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbAogICAg
IE93blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gaW1wbCA9IGFkb3B0UHRyKG5ldyBXZWJMYXll
clRyZWVWaWV3SW1wbChjbGllbnQsIHNldHRpbmdzKSk7CiAgICAgaWYgKCFpbXBsLT5sYXllclRy
ZWVIb3N0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGltcGwtPmxheWVyVHJlZUhv
c3QoKS0+c2V0Um9vdExheWVyKHN0YXRpY19jYXN0PGNvbnN0IFdlYkxheWVySW1wbCo+KCZyb290
KS0+bGF5ZXIoKSk7CisgICAgaW1wbC0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIocm9v
dCk7CiAgICAgcmV0dXJuIGltcGwucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCBj
Yjc1NjIzM2UxYTdlNDg4YjE3MTUzZjMyYTIzZjA3OWRkNzBhZWQyLi40YTkwYTk4OGQ0MWM2Y2U0
ZTU2YmE1OWE0ZDc2YmQ2NWFmYTkxM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTEwOSw5ICsxMDks
OSBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQoKQog
ICAgIEFTU0VSVChtX21lZGlhUGxheWVyKTsKICAgICBtX21lZGlhUGxheWVyLT5yZWFkeVN0YXRl
Q2hhbmdlZCgpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoaGFz
VmlkZW8oKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgIW1fdmlkZW9MYXll
cikgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdFB0cihXZWJWaWRlb0xheWVyOjpjcmVh
dGUodGhpcykpOwotICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29w
YXF1ZSk7CisgICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmlu
ZygpICYmIG1fdmlkZW9MYXllci5pc051bGwoKSkgeworICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBX
ZWJWaWRlb0xheWVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFx
dWUobV9vcGFxdWUpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KCkKIHsKICAgICBBU1NFUlQobV9tZWRp
YVBsYXllcik7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX3Zp
ZGVvTGF5ZXIgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpKQotICAgICAgICBtX3Zp
ZGVvTGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKyAgICBpZiAoIW1fdmlkZW9MYXllci5p
c051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlk
ZW9MYXllci5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKICAgICBtX21lZGlhUGxheWVyLT5yZXBhaW50
KCk7CiB9CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6
OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAgICAgbV9vcGFxdWUgPSBvcGFxdWU7Ci0gICAgaWYgKG1fdmlkZW9MYXllcikKLSAgICAg
ICAgbV92aWRlb0xheWVyLT5sYXllcigpLT5zZXRPcGFxdWUobV9vcGFxdWUpOworICAgIGlmICgh
bV92aWRlb0xheWVyLmlzTnVsbCgpKQorICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1f
b3BhcXVlKTsKICNlbmRpZgogfQogCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OmNhbmNlbExvYWQoKQogV2ViTGF5ZXIqIFdlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3VwcG9ydHNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKLSAgICByZXR1cm4gbV92aWRlb0xheWVyID8gbV92aWRl
b0xheWVyLT5sYXllcigpIDogMDsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJWaWRlb0xheWVy
Kj4oJm1fdmlkZW9MYXllcik7CiB9CiAjZW5kaWYKIApAQCAtNzQ1LDcgKzc0NSw3IEBAIGJvb2wg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkg
Y29uc3QKIAogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVy
aW5nSW5Vc2UoKQogewotICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgJiYgbV92aWRlb0xheWVyLT5h
Y3RpdmUoKTsKKyAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3ZpZGVvTGF5
ZXIuYWN0aXZlKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRWaWRl
b0ZyYW1lUHJvdmlkZXJDbGllbnQoV2ViVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQqIGNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmgKaW5kZXggMzI5ZmQ5ZWMwZjQ4OGE5ZWFhZmVhNmU5NWM4ZmJiMjQ5MDQxNWMw
ZS4uMzczMDE1ZWI3NTZhZjBmNDUxMWRhZTk4MWU2YmYyZTFiNTRkZDQ4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgK
QEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpQ
cmVsb2FkIG1fcHJlbG9hZDsKICAgICBSZWZQdHI8V2ViSGVscGVyUGx1Z2luSW1wbD4gbV9oZWxw
ZXJQbHVnaW47CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIE93blB0cjxX
ZWJWaWRlb0xheWVyPiBtX3ZpZGVvTGF5ZXI7CisgICAgV2ViVmlkZW9MYXllciBtX3ZpZGVvTGF5
ZXI7CiAgICAgYm9vbCBtX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsKICAgICBib29s
IG1fb3BhcXVlOwogICAgIFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBtX3ZpZGVvRnJh
bWVQcm92aWRlckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzVhOTdlMGY2Y2M1ZTQ3YWUyOWRkYTMw
MTVjMTZkOGZiNzFhMzFmNC4uYTM1YTA0MDdmNDk0YjZjYmMwZDlmZGEyMmMxOTc5MWU3YWVmYjJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5jcHAKQEAgLTM2NiwxMSArMzY2LDExIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFp
bmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpCiAgICAgaWYg
KG1fdGV4dHVyZUlkID09IHRleHR1cmVJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KCFtX2lvU3VyZmFjZUxheWVyKTsKKyAgICBBU1NFUlQobV9pb1N1cmZhY2VMYXllci5pc051bGwo
KSk7CiAKLSAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQotICAgICAgICBtX3RleHR1cmVMYXllciA9
IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7Ci0gICAgbV90ZXh0
dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIGlmIChtX3RleHR1cmVMYXll
ci5pc051bGwoKSkKKyAgICAgICAgbV90ZXh0dXJlTGF5ZXIgPSBXZWJFeHRlcm5hbFRleHR1cmVM
YXllcjo6Y3JlYXRlKCk7CisgICAgbV90ZXh0dXJlTGF5ZXIuc2V0VGV4dHVyZUlkKHRleHR1cmVJ
ZCk7CiAKICAgICAvLyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dp
dGNoIGJldHdlZW4gaGFyZHdhcmUKICAgICAvLyBhbmQgc29mdHdhcmUgY29tcG9zaXRpbmcuIFRo
aXMgaXMgZG9uZSBieSB0cmlnZ2VyaW5nIGEgc3R5bGUgcmVjYWxjCkBAIC0zOTAsMTEgKzM5MCwx
MSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChp
bnQgd2lkdGgsCiAgICAgaWYgKGlvU3VyZmFjZUlkID09IG1faW9TdXJmYWNlSWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOworICAgIEFTU0VSVChtX3Rl
eHR1cmVMYXllci5pc051bGwoKSk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIpCi0gICAg
ICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRl
KCkpOwotICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJm
YWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVy
LmlzTnVsbCgpKQorICAgICAgICBtX2lvU3VyZmFjZUxheWVyID0gV2ViSU9TdXJmYWNlTGF5ZXI6
OmNyZWF0ZSgpOworICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0SU9TdXJmYWNlUHJvcGVydGllcyhp
b1N1cmZhY2VJZCwgV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJZiBhbnlvbmUg
b2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFyZHdhcmUKICAg
ICAvLyBhbmQgc29mdHdhcmUgY29tcG9zaXRpbmcuIFRoaXMgaXMgZG9uZSBieSB0cmlnZ2VyaW5n
IGEgc3R5bGUgcmVjYWxjCkBAIC00MDksMTEgKzQwOSwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQgd2lkdGgsCiB2b2lkIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OmNvbW1pdEJhY2tpbmdUZXh0dXJlKCkKIHsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKG1fdGV4dHVyZUxheWVyKQotICAgICAgICBtX3Rl
eHR1cmVMYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworICAgIGlmICghbV90ZXh0dXJlTGF5
ZXIuaXNOdWxsKCkpCisgICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKIAotICAg
IGlmIChtX2lvU3VyZmFjZUxheWVyKQotICAgICAgICBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigp
LT5pbnZhbGlkYXRlKCk7CisgICAgaWYgKCFtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgpKQorICAg
ICAgICBtX2lvU3VyZmFjZUxheWVyLmludmFsaWRhdGUoKTsKICNlbmRpZgogfQogCkBAIC00ODAs
MTEgKzQ4MCwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6Onpvb21MZXZlbENoYW5n
ZWQoZG91YmxlIHpvb21MZXZlbCkKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0T3Bh
cXVlKGJvb2wgb3BhcXVlKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICBpZiAobV90ZXh0dXJlTGF5ZXIpCi0gICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5z
ZXRPcGFxdWUob3BhcXVlKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQorICAg
ICAgICBtX3RleHR1cmVMYXllci5zZXRPcGFxdWUob3BhcXVlKTsKIAotICAgIGlmIChtX2lvU3Vy
ZmFjZUxheWVyKQotICAgICAgICBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUo
b3BhcXVlKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCisgICAgICAgIG1f
aW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtNTc1LDkg
KzU3NSw5IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2lsbERlc3Ryb3lQbHVnaW5M
b2FkT2JzZXJ2ZXIoV2ViUGx1Z2luTG9hZE9ic2VydmVyCiBXZWJMYXllciogV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fdGV4dHVyZUlk
KQotICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7CisgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKj4oJm1fdGV4dHVyZUxheWVyKTsK
ICAgICBpZiAobV9pb1N1cmZhY2VJZCkKLSAgICAgICAgcmV0dXJuIG1faW9TdXJmYWNlTGF5ZXIt
PmxheWVyKCk7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklPU3VyZmFjZUxheWVyKj4o
Jm1faW9TdXJmYWNlTGF5ZXIpOwogICAgIHJldHVybiAwOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKaW5kZXgg
OTk4YmU2ZTQxOWY4OTVmYTgyMTc5NDAzOTM0NGJjMTZmMzExZjkyMy4uMDc0YTBjY2RjZDAzYmI1
MjU2ZTM2NTgwNzJhODFlOWE1ZjgzYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApAQCAtMTg2LDEwICsxODYsMTAgQEAg
cHJpdmF0ZToKICAgICAvLyBBIGNvbXBvc2l0ZWQgcGx1Z2luIHdpbGwgZWl0aGVyIGhhdmUgbm8g
Y29tcG9zaXRlZCBsYXllciwgYSB0ZXh0dXJlIGxheWVyLCBvciBhbiBJT1N1cmZhY2UgbGF5ZXIu
CiAgICAgLy8gSXQgd2lsbCBuZXZlciBoYXZlIGJvdGggYSB0ZXh0dXJlIGFuZCBJT1N1cmZhY2Ug
b3V0cHV0LgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIE93blB0cjxXZWJFeHRlcm5h
bFRleHR1cmVMYXllcj4gbV90ZXh0dXJlTGF5ZXI7CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIgbV90ZXh0dXJlTGF5ZXI7CiAKICAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZUlkOwotICAgIE93
blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsKKyAgICBXZWJJT1N1cmZh
Y2VMYXllciBtX2lvU3VyZmFjZUxheWVyOwogI2VuZGlmCiAKICAgICAvLyBUaGUgYXNzb2NpYXRl
ZCBzY3JvbGxiYXIgZ3JvdXAgb2JqZWN0LCBjcmVhdGVkIGxhemlseS4gVXNlZCBmb3IgUGVwcGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIyNTcwZjliYTg5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJs
ZUxheWVyLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaD4KKworI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCBwb3Np
dGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uKTsKK30K
Kwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxl
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9p
ZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZl
V2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyhoYXZlV2hlZWxFdmVudEhhbmRsZXJzKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxl
TGF5ZXI6OnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sIHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChz
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOworfQorCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JiByZWN0
cykKK3sKKyAgICBXZWJDb3JlOjpSZWdpb24gcmVnaW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0
ID0gcmVjdHNbaV07CisgICAgICAgIHJlZ2lvbi51bml0ZShyZWN0KTsKKyAgICB9CisgICAgbV9w
cml2YXRlLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworCit9CisKK3ZvaWQg
V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMo
Ym9vbCBlbmFibGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9z
aXRpb25MYXllcnMoZW5hYmxlKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEZp
eGVkVG9Db250YWluZXJMYXllcihib29sIGVuYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldEZp
eGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYmQxYjIwZmI0MGY3YzY0ZDdlMTc2M2FhNjg2NmIxNGUxNWY5YmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5
ZXIuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CisKKyNpbmNsdWRlICJTY3JvbGxiYXJM
YXllckNocm9taXVtLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJTY3JvbGxiYXJMYXllcjo6c2V0U2Nyb2xsTGF5ZXIoY29uc3Qg
V2ViTGF5ZXIgbGF5ZXIpCit7CisgICAgaW50IGlkID0gbGF5ZXIuaXNOdWxsKCkgPyAwIDogbGF5
ZXIuY29uc3RVbndyYXA8TGF5ZXJDaHJvbWl1bT4oKS0+aWQoKTsKKyAgICB1bndyYXA8U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4oKS0+c2V0U2Nyb2xsTGF5ZXJJZChpZCk7Cit9CisKK1dlYlNjcm9s
bGJhckxheWVyIFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQoreworICAgIHJldHVybiBXZWJTY3Jv
bGxiYXJMYXllcihTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUoV2ViU2Nyb2xsYmFyOjpj
cmVhdGUoc2Nyb2xsYmFyKSwgcGFpbnRlciwgZ2VvbWV0cnksIDApKTsKK30KKworV2ViU2Nyb2xs
YmFyTGF5ZXI6OldlYlNjcm9sbGJhckxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYgbGF5ZXIpCisgICAgOiBXZWJMYXllcihsYXllcikK
K3sKK30KKworV2ViU2Nyb2xsYmFyTGF5ZXImIFdlYlNjcm9sbGJhckxheWVyOjpvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBs
YXllcikKK3sKKyAgICBtX3ByaXZhdGUgPSBsYXllcjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K1dlYlNjcm9sbGJhckxheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVyQ2hy
b21pdW0+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdW53cmFwPFNjcm9sbGJhckxheWVyQ2hyb21p
dW0+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVjNmU5ODk1ZGRiZDU5MTk1N2UxYWQwZTQ4NWMxYjAxMGZiZmY4MjIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmgiCi0KLSNpbmNsdWRlICJTY3JvbGxiYXJMYXllckNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0KLXVzaW5nIFdlYkNvcmU6OlNjcm9s
bGJhcjsKLXVzaW5nIFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW07Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1XZWJTY3JvbGxiYXJMYXllciogV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0
ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVy
IHBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkp
Ci17Ci0gICAgcmV0dXJuIG5ldyBXZWJTY3JvbGxiYXJMYXllckltcGwoU2Nyb2xsYmFyTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKFdlYlNjcm9sbGJhcjo6Y3JlYXRlKHNjcm9sbGJhciksIHBhaW50ZXIs
IGdlb21ldHJ5LCAwKSk7Ci19Ci0KLQotV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpXZWJTY3JvbGxi
YXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPiBs
YXllcikKLSAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQot
ewotfQotCi1XZWJTY3JvbGxiYXJMYXllckltcGw6On5XZWJTY3JvbGxiYXJMYXllckltcGwoKQot
ewotfQotCi1XZWJMYXllciogV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpsYXllcigpCi17Ci0gICAg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpz
ZXRTY3JvbGxMYXllcihXZWJMYXllciogbGF5ZXIpCi17Ci0gICAgaW50IGlkID0gbGF5ZXIgPyBz
dGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihsYXllciktPmxheWVyKCktPmlkKCkgOiAwOwotICAg
IHN0YXRpY19jYXN0PFNjcm9sbGJhckxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+
c2V0U2Nyb2xsTGF5ZXJJZChpZCk7Ci19Ci0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVj
NmZkNDE4M2YxMjI5YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTY3JvbGxi
YXJMYXllckltcGxfaAotI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxfaAotCi0jaW5jbHVk
ZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFNjcm9sbGJhckxheWVyQ2hyb21pdW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3Mg
V2ViTGF5ZXJJbXBsOwotCi1jbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwgOiBwdWJsaWMgV2Vi
U2Nyb2xsYmFyTGF5ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJhckxheWVy
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+KTsKLSAgICB2
aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllckltcGwoKTsKLQotICAgIC8vIFdlYlNjcm9sbGJhckxh
eWVyIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKikgT1ZFUlJJREU7
Ci0KLXByaXZhdGU6Ci0gICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKLX07Ci0KLX0K
LQotI2VuZGlmIC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzkxNGIy
NjMyOTRiNTNmNTQ2NjExYWRjYTg5ODM4NDYxNjcwYWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
b2xpZENvbG9yTGF5ZXIuaD4KKworI2luY2x1ZGUgIldlYlNvbGlkQ29sb3JMYXllckltcGwuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJTb2xpZENvbG9yTGF5ZXIgV2ViU29saWRDb2xvckxheWVyOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBXZWJTb2xpZENvbG9yTGF5ZXIoV2ViU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRl
KCkpOworfQorCitXZWJTb2xpZENvbG9yTGF5ZXI6OldlYlNvbGlkQ29sb3JMYXllcihjb25zdCBQ
YXNzUmVmUHRyPFdlYlNvbGlkQ29sb3JMYXllckltcGw+JiBub2RlKQorICAgIDogV2ViTGF5ZXIo
bm9kZSkKK3sKK30KKwordm9pZCBXZWJTb2xpZENvbG9yTGF5ZXI6OnNldEJhY2tncm91bmRDb2xv
cihjb25zdCBXZWJDb2xvciYgY29sb3IpCit7CisgICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5k
Q29sb3IoY29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5kZXgg
OTQ0MDQyNjJjYTgxYzNhNjdmYjRlMjEyZjNiZmVkODYxOTk2MGUzNC4uMzNiMWEzMGUzOGMzMGE5
NTdkZGUzYTg2MWE0ODdkYTE3YzgxZDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5jcHAKQEAgLTI2LDM3ICsyNiwyNCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvbGlkQ29sb3JMYXllckltcGwu
aCIKIAotI2luY2x1ZGUgIlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiV2Vi
TGF5ZXJJbXBsLmgiCi0KLXVzaW5nIFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtOwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJTb2xp
ZENvbG9yTGF5ZXIqIFdlYlNvbGlkQ29sb3JMYXllcjo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8V2Vi
U29saWRDb2xvckxheWVySW1wbD4gV2ViU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gbmV3IFdlYlNvbGlkQ29sb3JMYXllckltcGwoU29saWRDb2xvckxheWVyQ2hy
b21pdW06OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvbGlkQ29sb3JM
YXllckltcGwoKSk7CiB9CiAKLVdlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JM
YXllckltcGwoUGFzc1JlZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAg
OiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKK1dlYlNvbGlkQ29s
b3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoKQorICAgIDogU29saWRDb2xvckxh
eWVyQ2hyb21pdW0oKQogewotICAgIG1fbGF5ZXItPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1
ZSk7CisgICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKIH0KIAogV2ViU29saWRDb2xvckxheWVySW1w
bDo6fldlYlNvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi1XZWJMYXllciogV2ViU29saWRD
b2xvckxheWVySW1wbDo6bGF5ZXIoKQotewotICAgIHJldHVybiBtX2xheWVyLmdldCgpOwotfQot
Ci12b2lkIFdlYlNvbGlkQ29sb3JMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcihXZWJDb2xv
ciBjb2xvcikKLXsKLSAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oCmluZGV4IDc3NDJiYTQ5MmQ0YzUxNGRjMzc4
MjdjMGJkNmUwNTMwZGRkNDAxMDcuLmQyNjczYjQyYjY4ZjhjZDFlNzExYjkxZTEyNzBkNjc2ZDVk
NzY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29s
b3JMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENv
bG9yTGF5ZXJJbXBsLmgKQEAgLTI2LDI4ICsyNiwxOCBAQAogI2lmbmRlZiBXZWJTb2xpZENvbG9y
TGF5ZXJJbXBsX2gKICNkZWZpbmUgV2ViU29saWRDb2xvckxheWVySW1wbF9oCiAKLSNpbmNsdWRl
IDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgIlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU29saWRDb2xvckxheWVyQ2hy
b21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViTGF5ZXJJbXBsOwogCi1j
bGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVibGljIFdlYlNvbGlkQ29sb3JMYXllciB7
CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OlNvbGlkQ29s
b3JMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW0+KTsKLSAg
ICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gY3JlYXRlKCk7CiAKLSAgICAvLyBXZWJTb2xpZENv
bG9yTGF5ZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSBP
VkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOwor
cHJvdGVjdGVkOgorICAgIFdlYlNvbGlkQ29sb3JMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIH5X
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGYzNDIxNTVkYWNlZWFhYTdkODY2NjUzN2Y3MDAzYWExOTMzMDQyZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9MYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlZpZGVvTGF5ZXIgV2ViVmlkZW9MYXllcjo6Y3JlYXRlKFdlYlZp
ZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIFdlYlZpZGVvTGF5ZXIo
V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKK30KKworV2Vi
VmlkZW9MYXllcjo6V2ViVmlkZW9MYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIpCisgICAgOiBXZWJMYXllcihsYXllcikKK3sKK30KKworYm9vbCBXZWJW
aWRlb0xheWVyOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDViZmVkNjc0MmYyZGM3ZjkwOWZhZTI1NTM3MjI2ZTFhZDBlMDliZGQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJWaWRl
b0xheWVySW1wbC5oIgotCi0jaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiV2ViTGF5ZXJJbXBsLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJWaWRlb0xheWVy
KiBXZWJWaWRlb0xheWVyOjpjcmVhdGUoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikK
LXsKLSAgICByZXR1cm4gbmV3IFdlYlZpZGVvTGF5ZXJJbXBsKFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKHByb3ZpZGVyKSk7Ci19Ci0KLVdlYlZpZGVvTGF5ZXJJbXBsOjpXZWJW
aWRlb0xheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIpCi0gICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKLXsK
LX0KLQotV2ViVmlkZW9MYXllckltcGw6On5XZWJWaWRlb0xheWVySW1wbCgpCi17Ci19Ci0KLVdl
YkxheWVyKiBXZWJWaWRlb0xheWVySW1wbDo6bGF5ZXIoKQotewotICAgIHJldHVybiBtX2xheWVy
LmdldCgpOwotfQotCi1ib29sIFdlYlZpZGVvTGF5ZXJJbXBsOjphY3RpdmUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2xheWVyLT5sYXllcigpLT5sYXllclRyZWVIb3N0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVv
TGF5ZXJJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4N2U0YjVlMjBkYzk2
YWI3MmI2NDBiMTFhMjliNjk4N2ZmY2ZmYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXll
ckltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YlZpZGVvTGF5ZXJJbXBsX2gKLSNkZWZpbmUgV2ViVmlkZW9MYXllckltcGxfaAotCi0jaW5jbHVk
ZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
VmlkZW9MYXllckNocm9taXVtOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkxh
eWVySW1wbDsKLQotY2xhc3MgV2ViVmlkZW9MYXllckltcGwgOiBwdWJsaWMgV2ViVmlkZW9MYXll
ciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXllckltcGwoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW0+KTsKLSAgICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVy
SW1wbCgpOwotCi0gICAgLy8gV2ViVmlkZW9MYXllciBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0
dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUo
KSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBt
X2xheWVyOwotfTsKLQotfQotCi0jZW5kaWYgLy8gV2ViVmlkZW9MYXllckltcGxfaAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOTczMzliMzQyM2Yw
YzE1Y2Y1YjQ3NGU4ZWY0NzljNDE0YzY3YTJmMS4uOTAwMDJhZmMxZjI1NzFjYTdlZGU2NDFmZTg4
NGRjYTVkODQ4NDc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtNDA4LDcgKzQwOCw2IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihmYWxzZSkKICAg
ICAsIG1fYmVuY2htYXJrU3VwcG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICAsIG1fcm9vdExheWVyKDApCiAgICAgLCBtX3Jvb3RHcmFwaGljc0xheWVyKDAp
CiAgICAgLCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICAgICAsIG1f
Y29tcG9zaXRvckNyZWF0aW9uRmFpbGVkKGZhbHNlKQpAQCAtMzUxMyw3ICszNTEyLDYgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAg
ICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7Ci0gICAgbV9yb290TGF5ZXIgPSBsYXllciA/
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwogCiAgICAgc2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGxheWVyKTsKICAgICBpZiAobV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Qp
IHsKQEAgLTM1MjcsOCArMzUyNSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKICAgICB9CiAKKyAgICBpZiAo
bGF5ZXIpCisgICAgICAgIG1fcm9vdExheWVyID0gKmxheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisK
ICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKLSAgICAgICAgbV9sYXllclRyZWVW
aWV3LnNldFJvb3RMYXllcihtX3Jvb3RMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5z
ZXRSb290TGF5ZXIobGF5ZXIgPyAmbV9yb290TGF5ZXIgOiAwKTsKIAogICAgIEludFJlY3QgZGFt
YWdlZFJlY3QoMCwgMCwgbV9zaXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1f
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKQpAQCAtMzY0MSw3ICszNjQyLDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0
aXZlKQogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9y
ZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CiAgICAgICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRPcGFxdWUoIWlzVHJhbnNwYXJlbnQoKSk7CiAK
LSAgICAgICAgbV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUodGhpcywgKm1fcm9vdExheWVyLCBs
YXllclRyZWVWaWV3U2V0dGluZ3MpOworICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6
ZSh0aGlzLCBtX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKICAgICAgICAgaWYg
KCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIGlmIChtX3dlYlNldHRp
bmdzLT5hcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCA0MzFkYWQ0OTA2MTRmNWZkMzA1OWM0MjgzODNjZDA4ZjRmZDI3NzJk
Li5jOGJmNTg0ZWFjZDkxN2YyNTkzMmY4YTlhZGZkOWE3M2M0YjZkMGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTgxNCw3ICs4MTQsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkludFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7CiAgICAgT3du
UHRyPE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Q7
CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX2xheWVyVHJlZVZpZXc7Ci0gICAgV2ViTGF5ZXIqIG1f
cm9vdExheWVyOworICAgIFdlYkxheWVyIG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIG1fcm9vdEdyYXBoaWNzTGF5ZXI7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZTsKICAgICBib29sIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggNDk0OGY5N2NjNTg4YTBiNWJiMjAwZDE0MzliYzRmOTE3OWI0OWZj
OC4uYTVjYTU1MTI0YzI5MDQ3MmMyNzQ3ZDA5MzlmYjAwZGEyMDU5Zjc3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCkBAIC0xMjIsMTMgKzEyMiwxMyBAQCBURVNUKEltYWdlTGF5ZXJDaHJvbWl1bVRlc3QsIG9w
YXF1ZUltYWdlcykKICAgICBSZWZQdHI8SW1hZ2U+IG5vbk9wYXF1ZUltYWdlID0gVGVzdEltYWdl
OjpjcmVhdGUoSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKICAgICBBU1NFUlRfVFJVRShub25P
cGFxdWVJbWFnZS5nZXQoKSk7CiAKLSAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29u
dGVudHNMYXllcigpKTsKKyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xh
eWVyKCkuaXNOdWxsKCkpOwogCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdl
KG9wYXF1ZUltYWdlLmdldCgpKTsKLSAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250
ZW50c0xheWVyKCktPm9wYXF1ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5j
b250ZW50c0xheWVyKCkub3BhcXVlKCkpOwogCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0Q29udGVu
dHNUb0ltYWdlKG5vbk9wYXF1ZUltYWdlLmdldCgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ3JhcGhp
Y3NMYXllci0+Y29udGVudHNMYXllcigpLT5vcGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdy
YXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5vcGFxdWUoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5k
ZXggOWI4ZTU4Y2ExMDBlNzdkOTAzNjViZDQ2MjhiMWRlMzgxMDkzNzQzMi4uNjY3MjAwNDEwMzg1
OTYzOWJlYTYyM2NjZGVmNTFiOTIzMjMwYjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgPHB1
YmxpYy9XZWJMYXllci5oPgogCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgotI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaD4KQEAgLTc3LDkgKzc2LDkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBz
dXBwb3J0LgogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0g
ICAgICAgIG1fcm9vdExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAg
ICAgbV9yb290TGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7CiAgICAgICAgIEVYUEVDVF9DQUxM
KG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwgKm1fcm9vdExheWVy
LCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1f
dmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6
OlNldHRpbmdzKCkpKTsKICAgICAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fY2xpZW50KTsKICAgICB9CiAKQEAgLTg4LDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIFdlIG1heSBnZXQgYW55IG51bWJlciBvZiBzY2hlZHVsZUNvbXBvc2l0ZSBjYWxscyBkdXJp
bmcgc2h1dGRvd24uCiAgICAgICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBv
c2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgICAgIG1fdmlldy5zZXRSb290TGF5ZXIo
MCk7Ci0gICAgICAgIG1fcm9vdExheWVyLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdExheWVyLnJl
c2V0KCk7CiAgICAgICAgIG1fdmlldy5yZXNldCgpOwogICAgICAgICBXZWJLaXQ6OldlYkNvbXBv
c2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1dlYkxheWVy
VHJlZVZpZXdDbGllbnQgbV9jbGllbnQ7Ci0gICAgT3duUHRyPFdlYkxheWVyPiBtX3Jvb3RMYXll
cjsKKyAgICBXZWJMYXllciBtX3Jvb3RMYXllcjsKICAgICBXZWJMYXllclRyZWVWaWV3IG1fdmll
dzsKIH07CiAKQEAgLTEwNSw3MyArMTA0LDczIEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENsaWVu
dCkKIHsKICAgICAvLyBCYXNlIGxheWVyLgogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hl
ZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgT3duUHRyPFdlYkxheWVy
PiBsYXllciA9IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7Ci0gICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKGxheWVyLmdldCgpKTsKKyAgICBXZWJMYXllciBsYXllciA9IFdlYkxheWVyOjpj
cmVhdGUoKTsKKyAgICBtX3Jvb3RMYXllci5hZGRDaGlsZChsYXllcik7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIFdlYkZsb2F0UG9pbnQg
cG9pbnQoMywgNCk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRl
KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChwb2ludCk7
CisgICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnQocG9pbnQpOwogICAgIE1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKHBvaW50LCBsYXllci0+
YW5jaG9yUG9pbnQoKSk7CisgICAgRVhQRUNUX0VRKHBvaW50LCBsYXllci5hbmNob3JQb2ludCgp
KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1l
cyhBdExlYXN0KDEpKTsKICAgICBmbG9hdCBhbmNob3JaID0gNTsKLSAgICBsYXllci0+c2V0QW5j
aG9yUG9pbnRaKGFuY2hvclopOworICAgIGxheWVyLnNldEFuY2hvclBvaW50WihhbmNob3JaKTsK
ICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVY
UEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShh
bmNob3JaLCBsYXllci5hbmNob3JQb2ludFooKSk7CiAKICAgICBXZWJTaXplIHNpemUoNywgOCk7
CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0
TGVhc3QoMSkpOwotICAgIGxheWVyLT5zZXRCb3VuZHMoc2l6ZSk7CisgICAgbGF5ZXIuc2V0Qm91
bmRzKHNpemUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVu
dCk7Ci0gICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VR
KHNpemUsIGxheWVyLmJvdW5kcygpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hl
ZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci0+c2V0TWFza3NU
b0JvdW5kcyh0cnVlKTsKKyAgICBsYXllci5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RS
VUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIubWFza3NU
b0JvdW5kcygpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0
ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgT3duUHRyPFdlYkxheWVyPiBvdGhlckxheWVy
ID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKLSAgICBtX3Jvb3RMYXllci0+YWRkQ2hp
bGQob3RoZXJMYXllci5nZXQoKSk7CisgICAgV2ViTGF5ZXIgb3RoZXJMYXllciA9IFdlYkxheWVy
OjpjcmVhdGUoKTsKKyAgICBtX3Jvb3RMYXllci5hZGRDaGlsZChvdGhlckxheWVyKTsKICAgICBF
WFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgx
KSk7Ci0gICAgbGF5ZXItPnNldE1hc2tMYXllcihvdGhlckxheWVyLmdldCgpKTsKKyAgICBsYXll
ci5zZXRNYXNrTGF5ZXIob3RoZXJMYXllcik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVs
ZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gMC4x
MjNmOwotICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGxheWVyLnNldE9wYWNp
dHkob3BhY2l0eSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xp
ZW50KTsKLSAgICBFWFBFQ1RfRVEob3BhY2l0eSwgbGF5ZXItPm9wYWNpdHkoKSk7CisgICAgRVhQ
RUNUX0VRKG9wYWNpdHksIGxheWVyLm9wYWNpdHkoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2Ns
aWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIt
PnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllci5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfVFJVRShs
YXllci0+b3BhcXVlKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyLm9wYXF1ZSgpKTsKIAogICAg
IEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0
KDEpKTsKLSAgICBsYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOworICAgIGxheWVyLnNldFBvc2l0
aW9uKHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBvc2l0aW9uKCkpOworICAgIEVYUEVD
VF9FUShwb2ludCwgbGF5ZXIucG9zaXRpb24oKSk7CiAKICAgICAvLyBUZXh0dXJlIGxheWVyLgog
ICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci0gICAgT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPiB0ZXh0dXJlTGF5
ZXIgPSBhZG9wdFB0cihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCkpOwotICAgIG1f
cm9vdExheWVyLT5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXItPmxheWVyKCkpOworICAgIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUoKTsKKyAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOwogICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAgICBFWFBFQ1Rf
Q0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0g
ICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CisgICAgdGV4dHVyZUxheWVyLnNldFRl
eHR1cmVJZCgzKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRp
bWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci0+c2V0RmxpcHBlZCh0cnVlKTsKKyAg
ICB0ZXh0dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNj
aGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwogICAgIFdlYkZsb2F0UmVjdCB1
dlJlY3QoMC4xZiwgMC4xZiwgMC45ZiwgMC45Zik7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRVVlJl
Y3QodXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5ZXIuc2V0VVZSZWN0KHV2UmVjdCk7CiAgICAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogCkBAIC0xNzksMTQg
KzE3OCwxNCBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiAgICAgTW9ja1dlYkNvbnRl
bnRMYXllckNsaWVudCBjb250ZW50Q2xpZW50OwogICAgIEVYUEVDVF9DQUxMKGNvbnRlbnRDbGll
bnQsIHBhaW50Q29udGVudHMoXywgXywgXykpLlRpbWVzKEFueU51bWJlcigpKTsKICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkp
OwotICAgIE93blB0cjxXZWJDb250ZW50TGF5ZXI+IGNvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdl
YkNvbnRlbnRMYXllcjo6Y3JlYXRlKCZjb250ZW50Q2xpZW50KSk7Ci0gICAgbV9yb290TGF5ZXIt
PmFkZENoaWxkKGNvbnRlbnRMYXllci0+bGF5ZXIoKSk7CisgICAgV2ViQ29udGVudExheWVyIGNv
bnRlbnRMYXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKCZjb250ZW50Q2xpZW50KTsKKyAg
ICBtX3Jvb3RMYXllci5hZGRDaGlsZChjb250ZW50TGF5ZXIpOwogICAgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVu
dCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgY29udGVudExh
eWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOworICAgIGNvbnRlbnRMYXllci5z
ZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+
ZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250
ZW50KCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwCmluZGV4IDFjMTYwMmMyMzQxNjk5ZDk4NjVlODM5Mzlh
ZDEwNGQwYjNiMTA5ZGEuLmJlYzJjNjAzNWFjYWVmMDczNDBhMWI4YzM2NGUxYTk5MDgyZjNjZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmll
d1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVl
Vmlld1Rlc3QuY3BwCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKQogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZUNvbXBvc2l0b3IoKTsKLSAgICAgICAg
bV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CisgICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6
OmNyZWF0ZSgpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQo
KSwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKICAgICAgICAg
bV92aWV3LnNldFN1cmZhY2VSZWFkeSgpOwogICAgIH0KIApAQCAtNzAsMTMgKzcwLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoY2xpZW50KCkp
OwogCiAgICAgICAgIG1fdmlldy5zZXRSb290TGF5ZXIoMCk7Ci0gICAgICAgIG1fcm9vdExheWVy
LmNsZWFyKCk7CisgICAgICAgIG1fcm9vdExheWVyLnJlc2V0KCk7CiAgICAgICAgIG1fdmlldy5y
ZXNldCgpOwogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgT3duUHRyPFdlYkxheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBX
ZWJMYXllciBtX3Jvb3RMYXllcjsKICAgICBXZWJMYXllclRyZWVWaWV3IG1fdmlldzsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>