<?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>91712</bug_id>
          
          <creation_ts>2012-07-18 22:40:06 -0700</creation_ts>
          <short_desc>REGRESSION(r123065): break mac chromium build (Requested by morrita on #webkit).</short_desc>
          <delta_ts>2022-03-01 03:00:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>91044</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>piman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>673182</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 22:40:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/123065 broke the build:
break mac chromium build (Requested by morrita 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>673184</commentid>
    <comment_count>1</comment_count>
      <attachid>153180</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 22:40:46 -0700</bug_when>
    <thetext>Created attachment 153180
ROLLOUT of r123065

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>872453</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 17:06:41 -0700</bug_when>
    <thetext>Marked LayoutTest bugs, bugs with Chromium IDs, and some others as WontFix. Test failure bugs still are trackable via TestExpectations or disabled unit tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153180</attachid>
            <date>2012-07-18 22:40:46 -0700</date>
            <delta_ts>2022-03-01 03:00:03 -0800</delta_ts>
            <desc>ROLLOUT of r123065</desc>
            <filename>bug-91712-20120719054619.patch</filename>
            <type>text/plain</type>
            <size>344584</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3NmMxNzEzM2YzOGQ4
MDE0ZWY5MGMzOTZhNzI0NWU0NzhhOTNmMTNhLi4xMGZkNWQyMTNhODMzYjhhMmUxNmJlMDdjNzQ1
ZDJjZTk2Mzg4OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0xOCAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMzA2NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTIzMDY1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTcxMgorCisgICAgICAgIGJyZWFrIG1hYyBjaHJvbWl1bSBidWlsZCAo
UmVxdWVzdGVkIGJ5IG1vcnJpdGEgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6
OnRleHR1cmVJZCk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxl
UXVhZC5oOgorICAgICAgICAoV2ViQ29tcG9zaXRvclRpbGVRdWFkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkOjp0ZXh0dXJlSWQpOgorCiAyMDEyLTA3LTE4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIElu
dHJvZHVjZSBDQ1Jlc291cmNlUHJvdmlkZXIsIHJlcGxhY2luZyBUZXh0dXJlQWxsb2NhdG9yIGFu
ZCBoaWRpbmcgdGV4dHVyZXMgZnJvbSBjbGllbnRzIHRvIGFsbG93IHRyYW5zcG9ydApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDQ4NmIzZTlmNWQyZjAxMjVkNWE1YTlhOGRkOTlhNTE0ZGY4Yjg0NmUuLjVkNDZlZGM3
NjNlZjFkNzM4YTBhM2VhOWY2MDE4OWZlMDI1OGIyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NTcgQEAKKzIwMTItMDctMTggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjMwNjUuCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzA2NQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE3MTIKKworICAgICAgICBicmVhayBt
YWMgY2hyb21pdW0gYnVpbGQgKFJlcXVlc3RlZCBieSBtb3JyaXRhIG9uICN3ZWJraXQpLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3Np
dG9yVGV4dHVyZVF1YWQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2Nl
bGVyYXRlZENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChUZXh0dXJlKToKKyAgICAgICAgKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoSW1hZ2VMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJl
UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1
cmZhY2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjpMYXllclRleHR1cmVTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6c2V0U3ViSW1hZ2VTaXpl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6
dXBsb2FkV2l0aFRleFN1YkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1
YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKExheWVyVGV4dHVyZVN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dyYXBoaWNzQ29u
dGV4dC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlQWxsb2NhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3I6On5UZXh0dXJlQWxsb2NhdG9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoK
KyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2Fk
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6
CisgICAgICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6On5UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6dGV4dHVyZVRvU3RvcmFnZUZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjppc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVBbGxUZXh0dXJlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3VycmVudE1lbW9yeVVzZUJ5dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6c2V0VGV4dHVyZVVzYWdlSGludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OnNldFVzZVRleHR1cmVT
dG9yYWdlRXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3
aWxsRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1
cmZhY2VMYXllckltcGwuaDoKKyAgICAgICAgKENDSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OmRpZERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmNv
bnRlbnRzVGV4dHVyZUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVySW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRpZERyYXdBbGxMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6On5D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxs
TWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXNrVGV4dHVyZUlkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OkNDU2NvcGVkVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmFsbG9jYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6ZnJlZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENDU2Nv
cGVkVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXll
ckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OnNldEJhY2tUcmFja1RleHR1
cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0Rm9yZVRy
YWNrVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpz
ZXRUaHVtYlRleHR1cmVJZCk6CisgICAgICAgIChDQ1Njcm9sbGJhckxheWVySW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZTo6c2V0SWQp
OgorICAgICAgICAoQ0NUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0
dXJlTGF5ZXJJbXBsOjpDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXll
clRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3YWJsZVRpbGU6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJs
ZVRpbGU6OnNldFRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OkRy
YXdhYmxlVGlsZSk6CisgICAgICAgIChEcmF3YWJsZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaWxlZExheWVySW1wbDo6Y29udGVudHNUZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaWxlZExheWVySW1wbDo6aGFzVGV4dHVyZUlkRm9yVGlsZUF0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxl
ZExheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpD
Q1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6On5D
Q1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6Ondp
bGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjphbGxvY2F0ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAg
ICAgICAgKENDVmlkZW9MYXllckltcGwpOgorICAgICAgICAoRnJhbWVQbGFuZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpGcmFtZVBsYW5lKToKKwog
MjAxMi0wNy0xOCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBJbXBsZW1lbnQgcGFpbnRpbmcgc2xpZGVyIHRpY2sgbWFya3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMmY5MTg1MGEzYWJjMzk5ODZlY2Q2M2E2NTRjZTI4Y2JkOGQ1MWQ0YS4uMmU1
MGM3NzkxZGIwNmQ0ZjIxNTYyYmNhYzY2YmQ3NjVjMTAyNTUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMi0wNy0xOCAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEyMzA2NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIz
MDY1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTcx
MgorCisgICAgICAgIGJyZWFrIG1hYyBjaHJvbWl1bSBidWlsZCAoUmVxdWVzdGVkIGJ5IG1vcnJp
dGEgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0OjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3Q6On5DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RG
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OmNyZWF0ZU1hbmFnZXIpOgorICAgICAgICAoV1RG
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OnZhbGlkYXRlVGV4dHVyZSk6CisgICAgICAgIChX
VEY6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6YWxsb2NhdG9yKToKKyAgICAgICAgKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NSZXNvdXJjZVBy
b3ZpZGVyVGVzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvQ0NTY29wZWRUZXh0dXJl
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRU
ZXN0cyk6CisgICAgICAgIChUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6Om51
bVRleHR1cmVzKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHA6Cisg
ICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXll
clRlc3RDb21tb246OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpU
RVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRl
UmVjdCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oOgorICAgICAg
ICAoVGV4dHVyZSk6CisgICAgICAgIChGYWtlVGV4dHVyZUFsbG9jYXRvcik6CisgICAgICAgIChX
ZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmNv
cHlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZUNvcGllcjo6Y29w
eVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6
dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoVEVTVCk6Cisg
ICAgICAgICogdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTE4ICBBbnRvaW5lIExhYm91ciAg
PHBpbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEludHJvZHVjZSBDQ1Jl
c291cmNlUHJvdmlkZXIsIHJlcGxhY2luZyBUZXh0dXJlQWxsb2NhdG9yIGFuZCBoaWRpbmcgdGV4
dHVyZXMgZnJvbSBjbGllbnRzIHRvIGFsbG93IHRyYW5zcG9ydApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaCBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgK
aW5kZXggNmI4ODY5NTY1YzE2YTIyYTk3ZjIyZWFjNjUzZGM5MGRhYjM1ZmM3Ny4uOWJlNmZkM2U2
ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCkBA
IC00MywxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb21wb3NpdG9y
VGV4dHVyZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgewogcHVibGljOgogI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JU
ZXh0dXJlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0
aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBw
ZWQpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZD4gY3Jl
YXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9CiAjZW5kaWYK
IAotICAgIHVuc2lnbmVkIHJlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7
IH0KKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsg
fQogICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4gIG1fcHJlbXVs
dGlwbGllZEFscGhhOyB9CiAgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGlw
cGVkOyB9CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JR
dWFkKik7CiBwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBw
cmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29s
IGZsaXBwZWQpOworICAgIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5z
aWduZWQgdGV4dHVyZV9pZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOwogI2VuZGlmCiAKLSAgICB1bnNpZ25l
ZCBtX3Jlc291cmNlSWQ7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CiAgICAgYm9vbCBtX3By
ZW11bHRpcGxpZWRBbHBoYTsKICAgICBXZWJGbG9hdFJlY3QgbV91dlJlY3Q7CiAgICAgYm9vbCBt
X2ZsaXBwZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JUaWxlUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yVGlsZVF1YWQuaAppbmRleCBlMjBkZTcyMzMxMGE2ODk1N2E3OTljMmViOTdh
ODAxNTRhYjFiYjdlLi5lMGEyNTViYjI1ZGEzNzhiYmFmNDU5OTY1ZTYyMmQ0MjNlMjk3ODZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JU
aWxlUXVhZC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJDb21wb3NpdG9yVGlsZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgewogcHVi
bGljOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JUaWxlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRleHR1cmVT
aXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxl
ZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVk
Z2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBjcmVh
dGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVP
ZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1
cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9w
RWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAKLSAgICB1bnNp
Z25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9CisgICAgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQog
ICAgIFdlYkNvcmU6OkludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVPZmZzZXQ7IH0KICAgICBXZWJDb3JlOjpJbnRTaXplIHRleHR1cmVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQogICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQpAQCAtNTgsMTAgKzU4LDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclRpbGVRdWFkKiBtYXRlcmlhbENhc3Qo
Y29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKIHByaXZhdGU6CiAjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCi0gICAgIFdlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywg
Ym9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBi
b3R0b21FZGdlQUEpOworICAgICBXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3QgV2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dp
enpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0
RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAjZW5kaWYKIAotICAgIHVuc2lnbmVkIG1fcmVz
b3VyY2VJZDsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOwogICAgIFdlYlBvaW50
IG1fdGV4dHVyZU9mZnNldDsKICAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7CiAgICAgR0MzRGlu
dCBtX3RleHR1cmVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDI1MmViZjViNjQ5NDYwNzQ2
OTA1MGQ0ZjA5ZGE5OGI1NWYzZmU1Yy4uMDlkOTcwZjFmOWZkZDQwNjljNjliMGIyMWYxODRkNmY0
ZGFlOWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODI4OCw2ICs4Mjg4LDggQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwJywKQEAgLTgzNjksOCArODM3MSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRl
cnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJpbmdTdGF0cy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCmluZGV4IGRkMGI2
N2E0MWEyM2Y2YTFiODA4MjY5NjYzMDIwZjA3ZmQ2MDU5MjguLmU1ZjQ1ZmRjNGNiMmE1OGY3Mjg3
ZjVmYWM1ZGM1NmJkZDIzMDQwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZC5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
PiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25z
dCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQorUGFzc093blB0cjxXZWJDb21wb3Np
dG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdl
YktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxp
ZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCByZXNvdXJjZUlkLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxp
cHBlZCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhh
LCB1dlJlY3QsIGZsaXBwZWQpKTsKIH0KIAotV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25l
ZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1
dlJlY3QsIGJvb2wgZmxpcHBlZCkKK1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9z
aXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4
dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3Qs
IGJvb2wgZmxpcHBlZCkKICAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwg
V2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1fcmVz
b3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwg
bV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQogICAgICwgbV91dlJlY3Qo
dXZSZWN0KQogICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JU
aWxlUXVhZC5jcHAKaW5kZXggZGUwZTgxZGZjZmVjZTAyMDM4NzdhODJjNGZmNmJlYjY4MDNkMzFl
ZC4uMjdhYTc3NTA4MTc0MWIxMTQxOWI4MTE3Njg3YTk5NmFmOTJkMWNlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGls
ZVF1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxXZWJDb21w
b3NpdG9yVGlsZVF1YWQ+IFdlYkNvbXBvc2l0b3JUaWxlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNv
bXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRvclRpbGVR
dWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zm
c2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBi
b29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9v
bCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJDb21wb3NpdG9yVGlsZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgb3Bh
cXVlUmVjdCwgcmVzb3VyY2VJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVG
aWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VB
QSwgYm90dG9tRWRnZUFBKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9y
VGlsZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgb3BhcXVlUmVjdCwgdGV4dHVyZUlk
LCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRl
bnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsK
IH0KIAotV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3Qg
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3Vy
Y2VJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSkKK1dlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkKGNv
bnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKQogICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0
YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVjdCkKLSAgICAsIG1f
cmVzb3VyY2VJZChyZXNvdXJjZUlkKQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAg
ICwgbV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZzZXQpCiAgICAgLCBtX3RleHR1cmVTaXplKHRl
eHR1cmVTaXplKQogICAgICwgbV90ZXh0dXJlRmlsdGVyKHRleHR1cmVGaWx0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGQy
NDRkZTY3NGEyNmJhNGQ3YWVjNWFhY2U2YTJhZWQxNGExYWVhOWQuLmQ3NWNmMDU0ZGM1MmU5YjI3
Zjg1NTRhYTVlNWFkN2JmNTllODIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAi
TGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3Iu
aCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgInNraWEvZXh0
L3BsYXRmb3JtX2NhbnZhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NywxOSArNDks
MjAgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUo
KQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlKCks
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0
dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyKQorUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIocGFpbnRlcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOwogfQogCi1CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCitCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCiAgICAgLCBt
X29wYXF1ZShmYWxzZSkKKyAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCiB7
CiB9CiAKQEAgLTgxLDYgKzg0LDggQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKIAogdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBmbG9hdCBjb250ZW50
c1dpZHRoU2NhbGUsIGZsb2F0IGNvbnRlbnRzSGVpZ2h0U2NhbGUsIEludFJlY3QmIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpCiB7CisgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNp
emUpOworCiAgICAgaWYgKG1fY2FudmFzU2l6ZSAhPSBjb250ZW50UmVjdC5zaXplKCkpIHsKICAg
ICAgICAgbV9jYW52YXNTaXplID0gY29udGVudFJlY3Quc2l6ZSgpOwogICAgICAgICBtX2NhbnZh
cyA9IGFkb3B0UHRyKHNraWE6OkNyZWF0ZUJpdG1hcENhbnZhcyhtX2NhbnZhc1NpemUud2lkdGgo
KSwgbV9jYW52YXNTaXplLmhlaWdodCgpLCBtX29wYXF1ZSkpOwpAQCAtODksMTIgKzk0LDEzIEBA
IHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgcGFpbnRDb250ZW50cyhtX2NhbnZhcy5nZXQo
KSwgY29udGVudFJlY3QsIGNvbnRlbnRzV2lkdGhTY2FsZSwgY29udGVudHNIZWlnaHRTY2FsZSwg
cmVzdWx0aW5nT3BhcXVlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gbV9jYW52YXMtPmdldERldmljZSgp
LT5hY2Nlc3NCaXRtYXAoZmFsc2UpOwogICAgIGJpdG1hcC5sb2NrUGl4ZWxzKCk7CiAKLSAgICB0
ZXh0dXJlLT51cGxvYWQocmVzb3VyY2VQcm92aWRlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJpdG1hcC5nZXRQaXhlbHMoKSksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaXRtYXAu
Z2V0UGl4ZWxzKCkpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVy
ZS0+Zm9ybWF0KCksIGNvbnRleHQpOwogICAgIGJpdG1hcC51bmxvY2tQaXhlbHMoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IGE3ZjExZmE1MzZjMjk4NzlmNDk3N2M0ZTQ5ZDYwNDE3ZTk5Mzc3NjguLjI3NmUyYjM5MTc5MjY3
M2M0YTRmMmI0NDI5ZmRhZDg4NmI0ZWRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDEyICszMCwxNSBAQAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogCiBjbGFzcyBTa0Nh
bnZhczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1
bTsKK2NsYXNzIENDR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAog
Ly8gVGhpcyBjbGFzcyByYXN0ZXJpemVzIHRoZSBjb250ZW50UmVjdCBpbnRvIGEgc2tpYSBiaXRt
YXAgY2FudmFzLiBJdCB0aGVuIHVwZGF0ZXMKIC8vIHRleHR1cmVzIGJ5IGNvcHlpbmcgZnJvbSB0
aGUgY2FudmFzIGludG8gdGhlIHRleHR1cmUsIHVzaW5nIE1hcFN1YkltYWdlIGlmCkBAIC00Nyw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiwgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4pOwogICAgICAgICB2
aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChD
Q0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU1LDIyICs1OCwyMyBAQCBwdWJs
aWM6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVw
ZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1
YkltYWdlKTsKICAgICB2aXJ0dWFsIH5CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7
CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFs
IFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZv
cm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRlbnRzV2lkdGhT
Y2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3BhcXVl
UmVjdCkgT1ZFUlJJREU7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ1Jlc291cmNlUHJv
dmlkZXIqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEND
R3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBPVkVSUklERTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKyAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1Yklt
YWdlKTsKIAogICAgIE93blB0cjxTa0NhbnZhcz4gbV9jYW52YXM7CiAgICAgSW50U2l6ZSBtX2Nh
bnZhc1NpemU7CiAgICAgYm9vbCBtX29wYXF1ZTsKKyAgICBMYXllclRleHR1cmVTdWJJbWFnZSBt
X3RleFN1YkltYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCAyODU5MjQyNTM5ODRlMjcyOGQ1ZGVkMWIzYWViZDFiODgyZjRlZjBmLi44NmZi
MmM4YzNiNDEzODg1ZmViOWZkZTgyM2Y5NTIwODI4OWViMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRl
ICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrRGV2aWNlLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFs
bG9jYXRvci5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTMsMjEgKzU1LDI0IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVj
CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoJmNhbnZhcywgc291cmNl
UmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlk
ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1
cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQogeworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
KwogICAgIG1fYml0bWFwLmxvY2tQaXhlbHMoKTsKLSAgICB0ZXh0dXJlKCktPnVwbG9hZChyZXNv
dXJjZVByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkp
LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwg
c3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSk7CiAgICAgbV9iaXRt
YXAudW5sb2NrUGl4ZWxzKCk7CiAgICAgbV9iaXRtYXAucmVzZXQoKTsKIH0KIAotUGFzc1JlZlB0
cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlcikKK1Bhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wg
dXNlTWFwVGV4U3ViSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRl
ciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKIH0KIAotQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQ
YXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQorQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29s
IHVzZU1hcFRleFN1YkltYWdlKQogICAgIDogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcihwYWludGVyKQorICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsK
IH0KIApAQCAtODcsNiArOTIsMTIgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAg
ICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCit2b2lkIEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRl
bnRzV2lkdGhTY2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0
aW5nT3BhcXVlUmVjdCkKK3sKKyAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxl
U2l6ZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgY29udGVudHNXaWR0aFNjYWxlLCBjb250ZW50
c0hlaWdodFNjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKK30KKwogdm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZh
cyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewogICAgIC8vIFRyYW5zbGF0
ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Ygc291cmNlUmVjdC4KQEAgLTk1
LDUgKzEwNiwxMCBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YQogICAgIGRyYXdQaWN0dXJlKGNh
bnZhcyk7CiB9CiAKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdDM0RlbnVt
IGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykK
K3sKKyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVjdCwg
ZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5k
ZXggODU1ZDQwNTg1NmU0MGU1ODZhOWE4MDcxYTI3NDZkYmIzNjdkODNlYS4uOWYxMzg4ODI3YjM2
ZDc3Y2E4OTNmMzNmM2I3MTMwZjU2MzE2ZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMjgsMTEg
KzI4LDE0IEBACiAjZGVmaW5lIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXJfaAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKKwogLy8gVGhpcyBjbGFzcyByZWNvcmRzIHRoZSBj
b250ZW50UmVjdCBpbnRvIGFuIFNrUGljdHVyZSwgdGhlbiBzb2Z0d2FyZSByYXN0ZXJpemVzCiAv
LyB0aGUgU2tQaWN0dXJlIGludG8gYml0bWFwcyBmb3IgZWFjaCB0aWxlLiBUaGlzIGltcGxlbWVu
dHMgQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nLgogY2xhc3MgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIHsKQEAgLTQyLDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpA
QCAtNTEsMTUgKzU0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2Up
OwogICAgIHZpcnR1YWwgfkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
KTsKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
ZmxvYXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRS
ZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KSBPVkVSUklERTsKICAgICB2b2lkIHBhaW50Q29udGVu
dHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIEdDM0RlbnVtIGZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQ
YXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CisgICAgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisKKyAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3Rl
eFN1YkltYWdlOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzE5ZjlkODk5MTE2ZTNhNDFhOTlhODdkNjdmODgyNjYyODEwNTRmMC4uOWY0MGY3ZmUx
ODhiOTM5ZGQxNjRhZTRhNTJiZWQ3OTllNGJlODgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgIGlmIChsYXllclRyZWVIb3N0
KCktPnNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nKQogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAgICBlbHNlIGlm
IChDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKKyAgICAgICAgbV90
ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJl
ZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICBl
bHNlCi0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsK
KyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVy
VHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAg
ICBtX3RleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUob3BhcXVlKCkpOwogCiAgICAgR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLmJlc3RUZXh0dXJlRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
NDM2ZjM0NmQ0YjExYTVkNThlOWQ5ODg4ODRhYzhmZTIyMGNiMjExMy4uN2U5YWMwYTZjNjVmYTAw
ZjU5ZTY4MDA0OWE1MmNkMDllNWZhZDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CkBAIC0zOSwxNiArMzksMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFBhc3NP
d25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludFNpemUgY2FudmFzU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogeworICAgIC8vIEFsbG9jYXRl
IHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHRleHR1cmUgaWQuCisgICAgdGV4dHVyZS0+YWNxdWly
ZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7CisKICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9
IGNvbnRleHQtPmdyQ29udGV4dCgpOworICAgIEludFNpemUgY2FudmFzU2l6ZSA9IHRleHR1cmUt
PnNpemUoKTsKICAgICBHclBsYXRmb3JtVGV4dHVyZURlc2MgdGV4dHVyZURlc2M7CiAgICAgdGV4
dHVyZURlc2MuZkZsYWdzID0ga1JlbmRlclRhcmdldF9HclBsYXRmb3JtVGV4dHVyZUZsYWc7CiAg
ICAgdGV4dHVyZURlc2MuZldpZHRoID0gY2FudmFzU2l6ZS53aWR0aCgpOwogICAgIHRleHR1cmVE
ZXNjLmZIZWlnaHQgPSBjYW52YXNTaXplLmhlaWdodCgpOwogICAgIHRleHR1cmVEZXNjLmZDb25m
aWcgPSBrU2tpYTg4ODhfUE1fR3JQaXhlbENvbmZpZzsKLSAgICB0ZXh0dXJlRGVzYy5mVGV4dHVy
ZUhhbmRsZSA9IHRleHR1cmVJZDsKKyAgICB0ZXh0dXJlRGVzYy5mVGV4dHVyZUhhbmRsZSA9IHRl
eHR1cmUtPnRleHR1cmVJZCgpOwogICAgIFNrQXV0b1RVbnJlZjxHclRleHR1cmU+IHRhcmdldChn
ckNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlRGVzYykpOwogICAgIFNrQXV0
b1RVbnJlZjxTa0RldmljZT4gZGV2aWNlKG5ldyBTa0dwdURldmljZShnckNvbnRleHQsIHRhcmdl
dC5nZXQoKSkpOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2tDYW52YXMoZGV2aWNlLmdldCgp
KSk7CkBAIC02NCwxMiArNjgsMTIgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBo
aWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBzaGFyZWRDb250ZXh0ID0gQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpID8g
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZvckltcGxUaHJlYWQoKSA6IFNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEOjpnZXQoKTsKICAgICBpZiAoIXNoYXJlZENvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChzaGFyZWRDb250
ZXh0LnJlbGVhc2UoKSwgcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVk
Q29udGV4dC5yZWxlYXNlKCksIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAt
OTcsMTcgKzEwMSwxNSBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJl
Y3QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gcHJwQ29udGV4dCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lk
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4
dHVyZVJlY3QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gcHJwQ29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KHBycENvbnRleHQpOwogCiAgICAgLy8g
TWFrZSBzdXJlIGdhbmVzaCB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCiAgICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICB0ZXh0dXJlLT5hY3F1aXJlQmFja2luZ1Rl
eHR1cmUocmVzb3VyY2VQcm92aWRlcik7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0
ZSBsb2NrKHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPnJlc291cmNlSWQoKSk7CiAgICAgLy8g
Q3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgotICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dC5nZXQoKSwgdGV4
dHVyZS0+c2l6ZSgpLCBsb2NrLnRleHR1cmVJZCgpKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQuZ2V0KCksIGFsbG9jYXRvciwg
dGV4dHVyZSk7CiAKICAgICAvLyBUaGUgY29tcG9zaXRvciBleHBlY3RzIHRoZSB0ZXh0dXJlcyB0
byBiZSB1cHNpZGUtZG93biBzbyBpdCBjYW4gZmxpcAogICAgIC8vIHRoZSBmaW5hbCBjb21wb3Np
dGVkIGltYWdlLiBHYW5lc2ggcmVuZGVycyB0aGUgaW1hZ2UgdXByaWdodCBzbyB3ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0NDY0OWU0NzNjNjlkMjQ0YzkxYzA5YTU2YWI3MTljMjBl
MWE0ZWI2Li44ZjYzMGE5MjI4MjY0MTIzYmRmZjVmN2Q4NGQ5Yjg3M2I4YWEyOTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRl
eHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVy
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9W
RVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4
dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0
aXplZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiwgVGV4dHVyZUFsbG9jYXRvciosIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcAppbmRleCBiYTYwOTQzNzliYWM0ZDRjMTNmNjRmMmJlNWFkYzU3ZWE1
MWI0NDNhLi42OTY1NjNhY2ZlOWFjMTFkY2ZiNjk5NWIyYTVkZjE4NmJlMTc0NGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUg
IkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
b2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgpAQCAtNTAsOSArNTEsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERQogICAgICAgICB7Ci0gICAgICAgICAgICB0
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC02MSw5ICs2
Miw5IEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1
cmVVcGRhdGVyOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXI+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyPiBjcmVhdGUoYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcih1c2VNYXBU
ZXhTdWJJbWFnZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpIHsgfQpAQCAtNzksOCArODAsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZvaWQgdXBkYXRl
VGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1ByaW9y
aXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRp
emVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiAgICAgeworICAgICAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250
ZXh0LCBhbGxvY2F0b3IpOworCiAgICAgICAgIC8vIFNvdXJjZSByZWN0IHNob3VsZCBuZXZlciBn
byBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4gaWYgdGhpcwogICAgICAgICAvLyBpcyBy
ZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRlbmRzIG91dHNpZGUgdGhlIGltYWdlLgog
ICAgICAgICBJbnRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKQEAgLTkyLDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVk
U291cmNlUmVjdC5zaXplKCkpOwogCiAgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jayhtX2Jp
dG1hcCk7Ci0gICAgICAgIHRleHR1cmUtPnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBpbWFnZVJlY3QsIGNs
aXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QpOworICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkp
LCBpbWFnZVJlY3QsIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUt
PmZvcm1hdCgpLCBjb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIHNldEJpdG1hcChjb25zdCBT
a0JpdG1hcCYgYml0bWFwKQpAQCAtMTAxLDkgKzEwNCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQorICAgIGV4cGxpY2l0
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihib29sIHVzZU1hcFRleFN1YkltYWdlKQorICAgICAg
ICA6IG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgeworICAgIH0KIAogICAg
IFNrQml0bWFwIG1fYml0bWFwOworICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1h
Z2U7CiB9OwogCiBQYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gSW1hZ2VMYXllckNocm9t
aXVtOjpjcmVhdGUoKQpAQCAtMTU5LDcgKzE2Niw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVt
OjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKICAgICBpZiAobV90ZXh0dXJlVXBkYXRl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKCk7CisgICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdlTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0g
bGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVzdFRleHR1cmVG
b3JtYXQ7CiAgICAgc2V0VGV4dHVyZUZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKICAgICBzZXRTYW1w
bGVkVGV4ZWxGb3JtYXQodGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KHRleHR1
cmVGb3JtYXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDU3
ZWE5ODEyYTU2Mzk0N2VmNjMxNDkzYjI3ZDYzMTllNzIxMTkxNDUuLjMzN2Q3NDY5NzhmNTU3MTZl
ODFkZTcxZWVhNDA1ODg3NjExODU5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlNrQ29sb3IuaCIKICNpbmNsdWRl
ICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisj
aW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NEYW1h
Z2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclF1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q01hdGhVdGlsLmgiCkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0J1c3koKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblVwbG9hZHMoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2Fkcygp
IE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0
KSBPVkVSUklERSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERSB7IHRleHR1cmUtPnVwZGF0ZVJlY3Qo
Y29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CkBAIC0xMzMsOSArMTM0LDkg
QEAgcHJvdGVjdGVkOgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotUGFzc093blB0cjxM
YXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKENDUmVu
ZGVyZXJDbGllbnQqIGNsaWVudCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKK1Bhc3NPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShD
Q1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKLSAgICBPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXll
clJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlVXBsb2Fk
ZXJTZXR0aW5nKSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQs
IHRleHR1cmVVcGxvYWRlclNldHRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0
aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDMsMTUgKzE0NCwxNCBA
QCBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudAogfQogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBs
b2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRS
ZW5kZXJQYXNzKDApCiAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApCiAgICAgLCBtX29mZnNjcmVl
bkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgt
MC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQotICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291
cmNlUHJvdmlkZXIpCi0gICAgLCBtX2NvbnRleHQocmVzb3VyY2VQcm92aWRlci0+Z3JhcGhpY3ND
b250ZXh0M0QoKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kZWZhdWx0UmVu
ZGVyUGFzcygwKQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNG
cmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxzZSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29u
c3QgQ0NSZW5kZXJQYQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNzZXNJ
bkRyYXdPcmRlci5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1fcmVuZGVyUGFzc1RleHR1
cmVzLmNvbnRhaW5zKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKSkgewotICAgICAg
ICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6
Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRU
ZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFs
bG9jYXRvci5nZXQoKSk7CiAgICAgICAgICAgICBtX3JlbmRlclBhc3NUZXh0dXJlcy5zZXQocmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCksIHRleHR1cmUucmVsZWFzZSgpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTUyOSw5ICs1MjksNyBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFw
cGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAK
ICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAKLSAgICBDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvcldyaXRlIGxvY2sobGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigp
LCBzb3VyY2VUZXh0dXJlLT5pZCgpKTsKLSAgICBTa0JpdG1hcCBzb3VyY2UgPSBDQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0ZXJzLCBsb2NrLnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0
dXJlLT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBzb3VyY2U7Cisg
ICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRl
eHR1cmUtPmlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7
CiB9CiAKIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCwg
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKQpA
QCAtNTcxLDcgKzU2OSw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAKICAgICBkZXZpY2VS
ZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3Qo
KSk7CiAKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVy
ZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRl
eHR1cmU6OmNyZWF0ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKICAgICBpZiAoIWdl
dEZyYW1lYnVmZmVyVGV4dHVyZShkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNl
UmVjdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01ODIsOCArNTgwLDggQEAgUGFz
c093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tn
cm91bmRGaWx0ZXJzKGNvbnN0IEMKICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJl
dF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZC5nZXRUZXh0dXJlKCkp
OwogICAgIGludCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQgPSB0ZXh0dXJlLT5n
ZXRUZXh0dXJlSGFuZGxlKCk7CiAKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3Jv
dW5kVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7
Ci0gICAgaWYgKCFiYWNrZ3JvdW5kVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBv
b2wsIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlcikpCisgICAgT3duUHRyPEND
U2NvcGVkVGV4dHVyZT4gYmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0
ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBpZiAoIWJhY2tncm91bmRUZXh0
dXJlLT5hbGxvY2F0ZShxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFz
cyogdGFyZ2V0UmVuZGVyUGFzcyA9IG1fY3VycmVudFJlbmRlclBhc3M7CkBAIC02MjgsMjEgKzYy
NiwxNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNv
bnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIC8vIEZJWE1FOiBDYWNoZSB0aGlz
IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUgc3VyZmFj
ZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMg
dGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnModGhpcywg
cXVhZC0+ZmlsdGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAgIE93blB0cjxDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOwotICAgIHVuc2lnbmVkIGNv
bnRlbnRzVGV4dHVyZUlkID0gMDsKKyAgICBpbnQgY29udGVudHNUZXh0dXJlSWQgPSBjb250ZW50
c1RleHR1cmUtPmlkKCk7CiAgICAgaWYgKGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpIHsKICAg
ICAgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihm
aWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKTsKICAgICAgICAgY29udGVudHNUZXh0dXJlSWQgPSB0
ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGVu
dHNSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
KG1fcmVzb3VyY2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGNv
bnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAg
IH0KIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUu
CiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5k
VGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3Jv
dW5kVGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsb2Nr
LnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9y
bSgpKTsKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGJhY2tncm91bmRUZXh0dXJl
LT5pZCgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9ybSgpKTsK
ICAgICB9CiAKICAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKQEAgLTY1OCwxMiArNjUxLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1Jl
bmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICAgICAgZGV2aWNlTGF5ZXJFZGdlcy5pbmZsYXRl
QW50aUFsaWFzaW5nRGlzdGFuY2UoKTsKICAgICB9CiAKLSAgICBPd25QdHI8Q0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkPiBtYXNrUmVzb3VyY2VMb2NrOwotICAgIHVuc2lnbmVkIG1hc2tUZXh0
dXJlSWQgPSAwOwotICAgIGlmIChxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSB7Ci0gICAgICAgIG1h
c2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
KG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jlc291cmNlSWQoKSkpOwotICAgICAgICBt
YXNrVGV4dHVyZUlkID0gbWFza1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7Ci0gICAgfQorICAg
IGJvb2wgdXNlTWFzayA9IHF1YWQtPm1hc2tUZXh0dXJlSWQoKTsKIAogICAgIC8vIEZJWE1FOiB1
c2UgdGhlIGJhY2tncm91bmRUZXh0dXJlIGFuZCBibGVuZCB0aGUgYmFja2dyb3VuZCBpbiB3aXRo
IHRoaXMgZHJhdyBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIGNvcHkgb2YgdGhlIGJhY2tn
cm91bmQgdGV4dHVyZS4KIApAQCAtNjc1LDcgKzY2Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1
YWQpCiAgICAgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hh
ZGVyTWF0cml4TG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IC0x
OwotICAgIGlmICh1c2VBQSAmJiBtYXNrVGV4dHVyZUlkKSB7CisgICAgaWYgKHVzZUFBICYmIHVz
ZU1hc2spIHsKICAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHByb2dyYW0g
PSByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2Ft
cGxlckxvY2F0aW9uKCksIDApKTsKQEAgLTY4NSw3ICs2NzMsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBxdWFkKQogICAgICAgICBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlck1hdHJp
eExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAg
ICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxw
aGFMb2NhdGlvbigpOwotICAgIH0gZWxzZSBpZiAoIXVzZUFBICYmIG1hc2tUZXh0dXJlSWQpIHsK
KyAgICB9IGVsc2UgaWYgKCF1c2VBQSAmJiB1c2VNYXNrKSB7CiAgICAgICAgIGNvbnN0IFJlbmRl
clBhc3NNYXNrUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOwogICAg
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3Jh
bSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKQEAgLTY5Myw3ICs2
ODEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNv
bnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBzaGFkZXJNYXNrU2FtcGxl
ckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9u
KCk7CiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwotICAgIH0gZWxzZSBpZiAodXNl
QUEgJiYgIW1hc2tUZXh0dXJlSWQpIHsKKyAgICB9IGVsc2UgaWYgKHVzZUFBICYmICF1c2VNYXNr
KSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQ
YXNzUHJvZ3JhbUFBKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJv
Z3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24o
KSwgMCkpOwpAQCAtNzE0LDcgKzcwMiw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAg
aWYgKHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gIT0gLTEpIHsKICAgICAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShzaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uLCAxKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tUZXh0dXJlSWQpOworICAgICAgICBj
b250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFk
LT5tYXNrVGV4dHVyZUlkKCkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgfQogCkBAIC04
NDksOCArODM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChj
b25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PnVzZVByb2dyYW0odW5pZm9ybXMucHJvZ3JhbSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dW5pZm9ybTFpKHVuaWZvcm1zLnNhbXBsZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgcXVhZFJlc291cmNlTG9j
ayhtX3Jlc291cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7Ci0gICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgcXVhZFJlc291cmNlTG9jay50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQt
PnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1cmVG
aWx0ZXIoKSkpOwogCkBAIC05NDQsMTUgKzkzMSwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIHF1YWQpCiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lID0gcXVhZC0+dVBs
YW5lKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lID0g
cXVhZC0+dlBsYW5lKCk7CiAKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgeVBsYW5l
TG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHlQbGFuZS5yZXNvdXJjZUlkKTsKLSAgICBDQ1Njb3Bl
ZExvY2tSZXNvdXJjZUZvclJlYWQgdVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQbGFu
ZS5yZXNvdXJjZUlkKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgdlBsYW5lTG9j
ayhtX3Jlc291cmNlUHJvdmlkZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUx
KSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgeVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHlQbGFuZS50ZXh0dXJlSWQpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUyKSk7Ci0gICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgdVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHVQbGFuZS50
ZXh0dXJlSWQpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUzKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdlBsYW5lTG9j
ay50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHZQbGFuZS50ZXh0dXJlSWQpKTsKIAog
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFt
KCkpKTsKIApAQCAtMTA2Myw4ICsxMDQ3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlUXVhZChjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00ZihiaW5kaW5nLnRleFRyYW5zZm9ybUxvY2F0
aW9uLCB1dlJlY3QueCgpLCB1dlJlY3QueSgpLCB1dlJlY3Qud2lkdGgoKSwgdXZSZWN0LmhlaWdo
dCgpKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JS
ZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlk
KCkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKKyAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOwogCiAgICAgLy8gRklYTUU6IHNldHRp
bmcgdGhlIHRleHR1cmUgcGFyYW1ldGVycyBldmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0
aGlzIGNvZGUgc29tZXdoZXJlCiAgICAgLy8gd2hlcmUgaXQgd2lsbCBvbmx5IGhhcHBlbiBvbmNl
IHBlciB0ZXh0dXJlLgpAQCAtMTExMSw2ICsxMDk0LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBxdWFk
KQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRU
ZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBxdWFkLT5pb1N1cmZh
Y2VUZXh0dXJlSWQoKSkpOwogCisgICAgLy8gRklYTUU6IHNldHRpbmcgdGhlIHRleHR1cmUgcGFy
YW1ldGVycyBldmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0aGlzIGNvZGUgc29tZXdoZXJl
CisgICAgLy8gd2hlcmUgaXQgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHBlciB0ZXh0dXJlLgorICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwor
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9f
RURHRSkpOworCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1
YWQtPnF1YWRUcmFuc2Zvcm0oKTsKICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJl
Y3QoKTsKICAgICBxdWFkVHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVj
dC53aWR0aCgpIC8gMi4wLCBxdWFkUmVjdC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7
CkBAIC0xMTMyLDggKzExMjIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hl
YWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogICAgIGNvbnN0
IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgp
OwogICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIGh1ZFRleHR1cmUtPmlkKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4
dHVyZUlkKCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBodWRUZXh0dXJlLT5pZCgpKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTE0Nyw3ICsxMTM2LDYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShjb25zdCBDQ1Nj
b3BlZFRleHR1cmUqIGh1ZFRleHR1cmUKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZp
bmlzaERyYXdpbmdGcmFtZSgpCiB7Ci0gICAgbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrLmNsZWFy
KCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpTQ0lTU09SX1RFU1QpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2Fi
bGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiB9CkBAIC0xMzgyLDExICsxMzcwLDEwIEBA
IGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoQ0NTY29w
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zCiB7CiAgICAgQVNTRVJUKCF0ZXh0dXJlLT5pZCgpIHx8
ICh0ZXh0dXJlLT5zaXplKCkgPT0gZGV2aWNlUmVjdC5zaXplKCkgJiYgdGV4dHVyZS0+Zm9ybWF0
KCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikpOwogCi0gICAgaWYgKCF0ZXh0dXJlLT5pZCgp
ICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgZGV2aWNlUmVjdC5z
aXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVy
ZVVzYWdlQW55KSkKKyAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRl
KGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKG1fcmVz
b3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0
dXJlSWQoKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPmlkKCkpKTsKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCB0ZXh0dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNl
UmVjdC53aWR0aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xNDAzLDcgKzEzOTAsNiBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVu
ZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCiAgICAgbV9jdXJyZW50VGV4
dHVyZSA9IDA7CiAKICAgICBpZiAocmVuZGVyUGFzcyA9PSBtX2RlZmF1bHRSZW5kZXJQYXNzKSB7
Ci0gICAgICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigpOwogICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIDApKTsKICAgICAgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChyZW5kZXJQ
YXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTQxMiw3ICsxMzk4LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogICAgIENDU2NvcGVkVGV4
dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgp
KTsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAKLSAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRl
eHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCByZW5kZXJQYXNzVGV4dHVyZVNp
emUocmVuZGVyUGFzcyksIHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3MpLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKSkKKyAgICBpZiAoIXRleHR1
cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5k
ZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcykpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1
cmUsIHJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKQEAgLTE0MjEsNiArMTQw
Nyw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IEND
UmVuZGVyUGFzcyogcmVuZGVyUGFzcykKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VT
Y29wZWRUZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgdmlld3BvcnRSZWN0KQogewogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKKwogICAgIG1f
Y3VycmVudFJlbmRlclBhc3MgPSAwOwogICAgIG1fY3VycmVudFRleHR1cmUgPSB0ZXh0dXJlOwog
CkBAIC0xNDMyLDggKzE0MTksNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZy
YW1lYnVmZmVyVG9UZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dAogICAgIEFTU0VS
VCh0ZXh0dXJlLT5pZCgpKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFt
ZWJ1ZmZlcklkKSk7Ci0gICAgbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrID0gYWRvcHRQdHIobmV3
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJl
LT5pZCgpKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY3VycmVu
dEZyYW1lYnVmZmVyTG9jay0+dGV4dHVyZUlkKCksIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+aWQoKSwgMCkpOwogCiAjaWYgIWRlZmluZWQgKCBO
REVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKQEAgLTE1MTAsNiArMTQ5NiwxNCBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX3RleHR1cmVVcGxv
YWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAg
ZWxzZQogICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpjcmVhdGUoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMubWF4VGV4
dHVyZVNpemUpOworICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXpl
KTsKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQorICAgICAg
ICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKKyAgICBpZiAobV9jYXBhYmls
aXRpZXMudXNpbmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgeworICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7CisgICAgICAg
IG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwor
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAppbmRleCBjZDViMmNjMmIyOTIxNWNlMWVmNDYyNGM0ZWIxY2Y0ODQ4YmM5Mjg3Li5iZDdi
NGUxNTE3OTllNTg1NTAyYmE5YzMwNjRhNzY5NTUwMTkyODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCisjaW5jbHVkZSAiVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKQEAgLTY1LDcgKzY2LDcgQEAgY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtIDogcHVibGljIENDUmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2ViR3JhcGhp
Y3NDb250ZXh0TG9zdENhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJl
bmRlcmVyQ2hyb21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQqLCBDQ1Jlc291cmNlUHJvdmlk
ZXIqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAogICAgIHZpcnR1YWwg
fkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0xMDEsNiArMTAyLDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJl
VXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4
dHVyZVVwbG9hZGVyLmdldCgpOyB9CisgICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBpbXBs
VGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1wbFRleHR1cmVB
bGxvY2F0b3IuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgp
IE9WRVJSSURFOwogCkBAIC0xMTAsMTEgKzExMyw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgRmxvYXRRdWFkJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0
aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7CiAgICAgdm9pZCBjb3B5
VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRz
LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKLSAg
ICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlUHJvdmlkZXI7IH0KIAogcHJvdGVjdGVkOgotICAgIExheWVyUmVuZGVyZXJDaHJv
bWl1bShDQ1JlbmRlcmVyQ2xpZW50KiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgVGV4dHVyZVVwbG9h
ZGVyT3B0aW9uKTsKLQorICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50
KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVVcGxvYWRlck9wdGlvbik7
CiAKICAgICBib29sIGlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RnJhbWVidWZmZXJEaXNjYXJkZWQ7IH0KICAgICBib29sIGluaXRpYWxpemUoKTsKQEAgLTE3Niw3
ICsxNzcsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2N1cnJlbnRS
ZW5kZXJQYXNzOwogICAgIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogbV9jdXJyZW50VGV4dHVyZTsK
LSAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZT4gbV9jdXJyZW50RnJhbWVi
dWZmZXJMb2NrOwogICAgIHVuc2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKIAogICAg
IE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CkBAIC0yNjIsOSArMjYy
LDEwIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFNvbGlkQ29sb3JQcm9ncmFtPiBtX3NvbGlkQ29s
b3JQcm9ncmFtOwogICAgIE93blB0cjxIZWFkc1VwRGlzcGxheVByb2dyYW0+IG1faGVhZHNVcERp
c3BsYXlQcm9ncmFtOwogCi0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlk
ZXI7CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gbV90ZXh0dXJlQ29waWVy
OwogICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOworICAgIE93
blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9y
OworICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1faW1wbFRleHR1cmVBbGxv
Y2F0b3I7CiAKICAgICBIYXNoTWFwPGludCwgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gPiBtX3Jl
bmRlclBhc3NUZXh0dXJlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCmlu
ZGV4IGI2NmQ3OWUwNGViZGFmOGE2NDI3OWQ4YTMzN2JlODNlNDFmYWM1OWQuLmI4N2I0M2Q5NDAx
YTAxZmQxOTk4YjczZjJjZWZlYjZmYzAyNGY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVT
dWJJbWFnZS5jcHAKQEAgLTMyLDE1ICszMiwxMiBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENo
cm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciBHTEMo
KSBtYWNybwogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KLQotdXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsK
KyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIExheWVyVGV4dHVyZVN1YkltYWdlOjpMYXllclRleHR1cmVTdWJJbWFnZShib29sIHVzZU1h
cFRleFN1YkltYWdlKQogICAgIDogbV91c2VNYXBUZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFn
ZSkKLSAgICAsIG1fc3ViSW1hZ2VTaXplKDApCiB7CiB9CiAKQEAgLTQ4LDkgKzQ1LDE4IEBAIExh
eWVyVGV4dHVyZVN1YkltYWdlOjp+TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoKQogewogfQogCit2b2lk
IExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6ZSYgc3Vi
SW1hZ2VTaXplKQoreworICAgIGlmIChzdWJJbWFnZVNpemUgPT0gbV9zdWJJbWFnZVNpemUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc3ViSW1hZ2VTaXplID0gc3ViSW1hZ2VTaXplOworICAg
IG1fc3ViSW1hZ2UuY2xlYXIoKTsKK30KKwogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBs
b2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChtX3VzZU1hcFRleFN1YkltYWdlKQogICAgICAg
ICB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwg
ZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CkBAIC02MCw5ICs2NiwxMSBAQCB2b2lkIExheWVy
VGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdAogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4
U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclRleHR1cmVTdWJJbWFn
ZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIik7CisgICAgaWYgKCFtX3N1YkltYWdlKQorICAgICAg
ICBtX3N1YkltYWdlID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFttX3N1YkltYWdlU2l6ZS53
aWR0aCgpICogbV9zdWJJbWFnZVNpemUuaGVpZ2h0KCkgKiA0XSk7CiAKICAgICAvLyBPZmZzZXQg
ZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3Vy
Y2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0Lnko
KSk7CkBAIC03MSwxMSArNzksNiBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludAogICAgIGlmIChp
bWFnZVJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIW9mZnNldC54KCkpCiAg
ICAgICAgIHBpeGVsU291cmNlID0gJmltYWdlWzQgKiBvZmZzZXQueSgpICogaW1hZ2VSZWN0Lndp
ZHRoKCldOwogICAgIGVsc2UgewotICAgICAgICBzaXplX3QgbmVlZGVkU2l6ZSA9IDQgKiBkZXN0
UmVjdC53aWR0aCgpICogZGVzdFJlY3QuaGVpZ2h0KCk7Ci0gICAgICAgIGlmIChtX3N1YkltYWdl
U2l6ZSA8IG5lZWRlZFNpemUpIHsKLSAgICAgICAgICBtX3N1YkltYWdlID0gYWRvcHRBcnJheVB0
cihuZXcgdWludDhfdFtuZWVkZWRTaXplXSk7Ci0gICAgICAgICAgbV9zdWJJbWFnZVNpemUgPSBu
ZWVkZWRTaXplOwotICAgICAgICB9CiAgICAgICAgIC8vIFN0cmlkZXMgbm90IGVxdWFsLCBzbyBk
byBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20gdGhlCiAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMg
aW50byBhIHRlbXAgYnVmZmVyIGZvciB1cGxvYWRpbmcuCiAgICAgICAgIGZvciAoaW50IHJvdyA9
IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3JvdykKQEAgLTg2LDE5ICs4OSwzMCBAQCB2
b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWlu
dDhfdCogaW1hZ2UsIGNvbnN0IEludAogICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3N1YkltYWdl
WzBdOwogICAgIH0KIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0Lnko
KSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CisgICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAg
aWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGgg
Zm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIEdM
Qyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRo
KCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBwaXhlbFNvdXJjZSkpOwogfQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1
cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlIik7Cisg
ICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29u
dGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgLy8gT2Zmc2V0IGZyb20gaW1hZ2UtcmVjdCB0byBzb3VyY2UtcmVjdC4K
ICAgICBJbnRQb2ludCBvZmZzZXQoc291cmNlUmVjdC54KCkgLSBpbWFnZVJlY3QueCgpLCBzb3Vy
Y2VSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkpOwogCiAgICAgLy8gVXBsb2FkIHRpbGUgZGF0YSB2
aWEgYSBtYXBwZWQgdHJhbnNmZXIgYnVmZmVyCi0gICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGNvbnRleHQtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCks
IGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkp
OworICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0
M2QtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RS
ZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBF
eHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3Qp
IHsKICAgICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwpAQCAtMTIyLDcgKzEzNiw3IEBAIHZv
aWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1
aW50OF90KiBpbWFnZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZz
ZXQueCgpICsgKG9mZnNldC55KCkgKyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKICAgICAg
ICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0
ZXNQZXJDb21wb25lbnQpOwogICAgIH0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5tYXBU
ZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29u
dGV4dDNkLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKaW5kZXgg
MzU3YjY0MTM0NGIyZTBjZmRmNWUzYWZlOTMyYzhkMThhZmFlNzFlNi4uNGYxYzQxNTIxNGQyMzI5
YWI2ZTcyY2RlMWIxZjJmZTIyZjI4YTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFn
ZS5oCkBAIC0zNCwzMSArMzQsMzAgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NHcmFwaGlj
c0NvbnRleHQ7CisKIGNsYXNzIExheWVyVGV4dHVyZVN1YkltYWdlIHsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBMYXllclRleHR1cmVTdWJJbWFnZShib29sIHVzZU1hcFN1YkZvclVwbG9hZCk7CiAg
ICAgfkxheWVyVGV4dHVyZVN1YkltYWdlKCk7CiAKKyAgICB2b2lkIHNldFN1YkltYWdlU2l6ZShj
b25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICBHQzNE
ZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBm
b3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCB1cGxvYWRXaXRoTWFwVGV4U3Vi
SW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhp
Y3NDb250ZXh0Kik7CiAKICAgICBib29sIG1fdXNlTWFwVGV4U3ViSW1hZ2U7Ci0gICAgc2l6ZV90
IG1fc3ViSW1hZ2VTaXplOworICAgIEludFNpemUgbV9zdWJJbWFnZVNpemU7CiAgICAgT3duQXJy
YXlQdHI8dWludDhfdD4gbV9zdWJJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCAxODk5NDJlMjUzNGIwNjg2MzczYmUzYzEyNDQ0NmMwODU2MmVlYmJjLi5mZDhl
ZDg4M2NjNzM0MGNhOWM3NmQ1NjNjZmRlOTk5MjQzODZmMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0zMCwxMyArMzAsMTYgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJjYy9D
Q0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwor
Y2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRl
cj4gewpAQCAtNDksNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0
dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAgICAgICAgIHZvaWQg
c3dhcFRleHR1cmVXaXRoKE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4mIHRleHR1cmUpIHsg
bV90ZXh0dXJlLnN3YXAodGV4dHVyZSk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPENDUHJpb3Jp
dGl6ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAppbmRleCA0OTg4YjMyN2Y0MjUwZmY2ZTJl
NDkzMjQyZGFmYmZlZGJkMjZmNTc2Li5lMDBhMjZlMzlmOWZjNzkyMmM3M2NlYjE0OTcyNTBhNjhi
YjBiZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcApAQCAtNzcs
MTkgKzc3LDE5IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSk7CiAKICAgICBpZiAobV9iYWNrVHJh
Y2sgJiYgbV9iYWNrVHJhY2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAg
ICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJhY2tSZXNvdXJjZUlkKG1fYmFja1RyYWNrLT50
ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNr
VHJhY2tUZXh0dXJlSWQobV9iYWNrVHJhY2stPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwogICAg
IGVsc2UKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEJhY2tUcmFja1Jlc291cmNlSWQoMCk7
CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJhY2tUZXh0dXJlSWQoMCk7CiAKICAg
ICBpZiAobV9mb3JlVHJhY2sgJiYgbV9mb3JlVHJhY2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdU
ZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRGb3JlVHJhY2tSZXNvdXJjZUlk
KG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CisgICAgICAgIHNjcm9sbGJh
ckxheWVyLT5zZXRGb3JlVHJhY2tUZXh0dXJlSWQobV9mb3JlVHJhY2stPnRleHR1cmUoKS0+dGV4
dHVyZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFj
a1Jlc291cmNlSWQoMCk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRGb3JlVHJhY2tUZXh0
dXJlSWQoMCk7CiAKICAgICBpZiAobV90aHVtYiAmJiBtX3RodW1iLT50ZXh0dXJlKCktPmhhdmVC
YWNraW5nVGV4dHVyZSgpKQotICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0VGh1bWJSZXNvdXJj
ZUlkKG1fdGh1bWItPnRleHR1cmUoKS0+cmVzb3VyY2VJZCgpKTsKKyAgICAgICAgc2Nyb2xsYmFy
TGF5ZXItPnNldFRodW1iVGV4dHVyZUlkKG1fdGh1bWItPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkp
OwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFRodW1iUmVzb3VyY2VJZCgw
KTsKKyAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFRodW1iVGV4dHVyZUlkKDApOwogCiAgICAg
VmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKICAgICBtX3Njcm9sbGJhci0+Z2V0VGlja21hcmtz
KHRpY2ttYXJrcyk7CkBAIC0yMDUsMjMgKzIwNSwyNCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hy
b21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogCiB2b2lkIFNj
cm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewor
ICAgIGJvb2wgdXNlTWFwU3ViSW1hZ2UgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YjsKICAgICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclRy
ZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsK
IAogICAgIGlmICghbV9iYWNrVHJhY2tVcGRhdGVyKQotICAgICAgICBtX2JhY2tUcmFja1VwZGF0
ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFj
a2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1Ry
YWNrUGFydCkpOworICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0
ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1RyYWNrUGFydCksIHVzZU1hcFN1Yklt
YWdlKTsKICAgICBpZiAoIW1fYmFja1RyYWNrKQogICAgICAgICBtX2JhY2tUcmFjayA9IG1fYmFj
a1RyYWNrVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4
dHVyZU1hbmFnZXIoKSk7CiAKICAgICAvLyBPbmx5IGNyZWF0ZSB0d28tcGFydCB0cmFjayBpZiB3
ZSB0aGluayB0aGUgdHdvIHBhcnRzIGNvdWxkIGJlIGRpZmZlcmVudCBpbiBhcHBlYXJhbmNlLgog
ICAgIGlmIChtX3Njcm9sbGJhci0+aXNDdXN0b21TY3JvbGxiYXIoKSkgewogICAgICAgICBpZiAo
IW1fZm9yZVRyYWNrVXBkYXRlcikKLSAgICAgICAgICAgIG1fZm9yZVRyYWNrVXBkYXRlciA9IEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5k
UGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdldCgpLCB0aGVtZSgpLCBGb3J3YXJkVHJhY2tQ
YXJ0KSk7CisgICAgICAgICAgICBtX2ZvcmVUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0
ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgRm9yd2FyZFRyYWNrUGFydCksIHVzZU1hcFN1
YkltYWdlKTsKICAgICAgICAgaWYgKCFtX2ZvcmVUcmFjaykKICAgICAgICAgICAgIG1fZm9yZVRy
YWNrID0gbV9mb3JlVHJhY2tVcGRhdGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKICAgICB9CiAKICAgICBpZiAoIW1fdGh1bWJVcGRh
dGVyKQotICAgICAgICBtX3RodW1iVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5n
ZXQoKSwgdGhlbWUoKSkpOworICAgICAgICBtX3RodW1iVXBkYXRlciA9IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZSht
X3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSksIHVzZU1hcFN1YkltYWdlKTsKICAgICBpZiAoIW1f
dGh1bWIpCiAgICAgICAgIG1fdGh1bWIgPSBtX3RodW1iVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShs
YXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2Nh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
QWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThkZTExNTIyYjRhYWRhZTE2YmNiMjdlMDU0ZmY3Mzdi
ODg2YjgzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaWZuZGVmIFRleHR1cmVBbGxvY2F0b3JfaAorI2RlZmluZSBUZXh0dXJlQWxs
b2NhdG9yX2gKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNy
ZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpID0g
MDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KK307
CisKK30KKworI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCAwYjU5NTk3YTVl
ZTgwOTAwN2EyNDg0MWI1ZDVmN2U5YWY5Yzk0NGZhLi4zMzI0M2M4NTUyZDNmYTJlODUxZWY3Zjg2
M2E1ZGU2MjAzNWM1MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtNjYsNTQgKzY2LDU1
IEBAIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcigp
CiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9m
Ym8pKTsKIH0KIAotdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKHVu
c2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3ZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZShD
Q0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVu
c2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIpOwogCisgICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGNjQ29udGV4dC0+Y29udGV4dDNEKCk7
CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBw
YXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIC8vIE5vdGU6IHRoaXMgY29kZSBkb2VzIG5vdCByZXN0b3JlIHRoZSB2aWV3cG9ydCwgYm91
bmQgcHJvZ3JhbSwgMkQgdGV4dHVyZSwgZnJhbWVidWZmZXIsIGJ1ZmZlciBvciBibGVuZCBlbmFi
bGUuCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBkZXN0VGV4dHVyZUlkLCAwKSk7CisgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZGVzdFRleHR1cmVJZCwg
MCkpOwogCiAjaWYgT1MoQU5EUk9JRCkKICAgICAvLyBDbGVhciBkZXN0aW5hdGlvbiB0byBpbXBy
b3ZlIHBlcmZvcm1hbmNlIG9uIHRpbGluZyBHUFVzLgogICAgIC8vIFRPRE86IFVzZSBFWFRfZGlz
Y2FyZF9mcmFtZWJ1ZmZlciBvciBza2lwIGNsZWFyaW5nIGlmIGl0IGlzbid0IGF2YWlsYWJsZS4K
LSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmNsZWFyKEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSk7CiAjZW5kaWYKIAotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHNvdXJjZVRleHR1cmVJZCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKLSAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSWQp
KTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsK
IAogICAgIGlmICghbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgbV9ibGl0
UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fdXNpbmdCaW5kVW5pZm9ybXMpOworICAg
ICAgICBtX2JsaXRQcm9ncmFtLT5pbml0aWFsaXplKGNvbnRleHQsIG1fdXNpbmdCaW5kVW5pZm9y
bXMpOwogCiAgICAgLy8gVE9ETzogVXNlIEVYVF9mcmFtZWJ1ZmZlcl9ibGl0IGlmIGF2YWlsYWJs
ZS4KLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9ibGl0UHJvZ3Jh
bS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0obV9i
bGl0UHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAKICAgICBjb25zdCBpbnQga1Bvc2l0aW9uQXR0cmli
dXRlID0gMDsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlvbkJ1ZmZlcikpOwotICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihrUG9zaXRpb25BdHRyaWJ1
dGUsIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIDApKTsKLSAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3NpdGlvbkF0
dHJpYnV0ZSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlv
bkJ1ZmZlcikpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVy
KGtQb3NpdGlvbkF0dHJpYnV0ZSwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwg
MCwgMCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CiAKLSAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6QkxFTkQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRyYXdBcnJh
eXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwgNCkpOworICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT52aWV3cG9ydCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
KTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGljc0Nv
bnRleHQzRDo6VFJJQU5HTEVfRkFOLCAwLCA0KSk7CiAKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25B
dHRyaWJ1dGUpKTsKIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbSgw
KSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0oMCkpOwogCi0gICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDApKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIDApKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRUZXh0
dXJlQ29waWVyOjpmbHVzaCgpCi17Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVz
aCgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKSk7CisgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5o
CmluZGV4IGIzODVmNDVlNTQzYTc0MzZlNTU3ODAzMjJiYTFkMmIxNGUyNzdhZTUuLmMyYmNkNDI3
YzMxMDBjMmE1NDhhODEyMzI4YWE3NzJhZWE0ZmFhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YkdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNDEsOCArNDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ29w
eSB0aGUgYmFzZSBsZXZlbCBjb250ZW50cyBvZiB8c291cmNlVGV4dHVyZUlkfCB0byB8ZGVzdFRl
eHR1cmVJZHwuIEJvdGggdGV4dHVyZSBvYmplY3RzCiAgICAgLy8gbXVzdCBiZSBjb21wbGV0ZSBh
bmQgaGF2ZSBhIGJhc2UgbGV2ZWwgb2YgfHNpemV8IGRpbWVuc2lvbnMuIFRoZSBjb2xvciBmb3Jt
YXRzIGRvIG5vdCBuZWVkCiAgICAgLy8gdG8gbWF0Y2gsIGJ1dCB8ZGVzdFRleHR1cmVJZHwgbXVz
dCBoYXZlIGEgcmVuZGVyYWJsZSBmb3JtYXQuCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJl
KHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3Qg
SW50U2l6ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4
dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZUNvcGllcigpIHsgfQpAQCAtNTksOCArNTks
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVkIHNvdXJjZVRleHR1
cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmbHVzaCgpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNz
Q29udGV4dCosIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJ
ZCwgY29uc3QgSW50U2l6ZSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBib29sIHVzaW5nQmluZFVuaWZv
cm1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggOTI4NzBjYjVhNWJmZDkwZWFmYzI4NzNk
NzBjYzBjZjEwZDFiZTEwYi4uMGVhZTJlNjVkZDAyNDY0Y2QyMGZiZjM4ZmRiYjc4ZWNjZGRjODkx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0J1c3koKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2Fk
cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0Nv
bnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAwOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKaW5kZXgg
MjgxZTA4ZmYwNDk4NzgxMjhhODQzMjcwOWVmZmU2OTY5MWI4MGQyZi4uYTgyNTNkMDY1NTE2MjVm
MGIwNzNhZWNmNWRlZjc1Y2RhZTAyYWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuY3BwCkBAIC0xMjAsOSArMTIwLDkgQEAgdm9pZCBUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OmVuZFVwbG9hZHMoKQogICAgIG1fcGVuZGluZ1F1ZXJpZXMuYXBwZW5kKG1fYXZh
aWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7CiB9CiAKLXZvaWQgVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjp1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
Ojpwcm9jZXNzUXVlcmllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
CmluZGV4IGY4YzQzZGMyZDQzMDM5ZjJmZDI3OGNmYTdjNzE3Y2FhMjkwYmE0YzkuLmFlNWI3NDkx
ZjI4NDg0NDBmNDEzMWNlNmJiMTQzZTc1YTRkNmM5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2Fkcygp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUo
Q0NHcmFwaGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0
UmVjdCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGU0ODkxOTVlNDJjMGRlNTIxMmE1MjFlMTliNTIy
ODMyMjlkYTNiYy4uZWVkNWNmYzlhY2UxNjlmNTUxNTI4NzZhMTRlNzRkYzY0MjFhNjFjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQog
ICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGos
IHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc291cmNlSWQoKSwgdGlsZS0+b3BhcXVlUmVjdCgp
KTsKKyAgICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1h
bmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpLCB0aWxlLT5vcGFxdWVSZWN0KCkpOwogICAgICAg
ICB0aWxlLT5pc0luVXNlT25JbXBsID0gdHJ1ZTsKICAgICB9CiAgICAgZm9yIChWZWN0b3I8VXBk
YXRhYmxlVGlsZSo+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaW52YWxpZFRpbGVzLmJlZ2luKCk7
IGl0ZXIgIT0gaW52YWxpZFRpbGVzLmVuZCgpOyArK2l0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWUyOWY5MTJiODhlMzM4YjhkYjBm
MDM4YTRiNWE4MjUwNWM1MzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcApAQCAt
MCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRo
ZSBHTEMoKSBtYWNybworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKKyAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICwgbV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJlU2l6ZSkKKyAgICAsIG1fY3Vy
cmVudE1lbW9yeVVzZUJ5dGVzKDApCisgICAgLCBtX3RleHR1cmVVc2FnZUhpbnQoQW55KQorICAg
ICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0
KTsKK30KKworVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjp+VHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yKCkKK3sKKyAgICBBU1NFUlQoIW1fY3VycmVudE1lbW9yeVVzZUJ5dGVzKTsKK30KKworc3Rh
dGljIEdDM0RlbnVtIHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1h
dCkKK3sKKyAgICBHQzNEZW51bSBzdG9yYWdlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpSR0JBOF9P
RVM7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkJHUkFf
RVhUOgorICAgICAgICBzdG9yYWdlRm9ybWF0ID0gRXh0ZW5zaW9uczNEQ2hyb21pdW06OkJHUkE4
X0VYVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzdG9yYWdlRm9y
bWF0OworfQorCitzdGF0aWMgYm9vbCBpc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdl
KEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICByZXR1cm4gKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSB8fCBmb3JtYXQgPT0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVCk7Cit9CisKK3Vu
c2lnbmVkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRT
aXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgaWYgKHNpemUud2lkdGgoKSA+IG1f
bWF4VGV4dHVyZVNpemUgfHwgc2l6ZS5oZWlnaHQoKSA+IG1fbWF4VGV4dHVyZVNpemUpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgKz0gQ0NUZXh0dXJl
OjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKworICAgIHVuc2lnbmVkIHRleHR1cmVJ
ZCA9IDA7CisgICAgR0xDKG1fY29udGV4dCwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIC8vIERvIGJhc2lj
IGxpbmVhciBmaWx0ZXJpbmcgb24gcmVzaXplLgorICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikp
OworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIC8vIE5QT1QgdGV4dHVyZXMgaW4g
R0wgRVMgb25seSB3b3JrIHdoZW4gdGhlIHdyYXAgbW9kZSBpcyBzZXQgdG8gR3JhcGhpY3NDb250
ZXh0M0Q6OkNMQU1QX1RPX0VER0UuCisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Cisg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisKKyAgICBpZiAobV90ZXh0dXJlVXNhZ2VI
aW50ID09IEZyYW1lYnVmZmVyQXR0YWNobWVudCkKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9VU0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpKTsKKyAgICBpZiAobV91c2VU
ZXh0dXJlU3RvcmFnZUV4dCAmJiBpc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKGZv
cm1hdCkpIHsKKyAgICAgICAgR0MzRGVudW0gc3RvcmFnZUZvcm1hdCA9IHRleHR1cmVUb1N0b3Jh
Z2VGb3JtYXQoZm9ybWF0KTsKKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdG9yYWdlMkRFWFQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDEsIHN0b3JhZ2VGb3JtYXQsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKKyAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMuYWRk
KHRleHR1cmVJZCk7CisgICAgcmV0dXJuIHRleHR1cmVJZDsKK30KKwordm9pZCBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgbV9jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMgLT0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CisgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZCkpOworICAg
IEFTU0VSVChtX2FsbG9jYXRlZFRleHR1cmVJZHMuY29udGFpbnModGV4dHVyZUlkKSk7CisgICAg
bV9hbGxvY2F0ZWRUZXh0dXJlSWRzLnJlbW92ZSh0ZXh0dXJlSWQpOworfQorCit2b2lkIFRyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlQWxsVGV4dHVyZXMoKQoreworICAgIGZvciAoSGFz
aFNldDx1bnNpZ25lZD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hbGxvY2F0ZWRUZXh0dXJlSWRz
LmJlZ2luKCk7IGl0ICE9IG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5lbmQoKTsgKytpdCkKKyAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKCppdCkpOworICAgIG1f
Y3VycmVudE1lbW9yeVVzZUJ5dGVzID0gMDsKKyAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMuY2xl
YXIoKTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM4ZjdjYTA0M2I0ZmQ5NzA1YjU5YmQzM2YzYTliYjcwMTU2MGQxMmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAorI2RlZmluZSBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3JfaAorCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4
dHVyZUFsbG9jYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBpbnQgbWF4VGV4dHVyZVNpemUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250ZXh0LCBtYXhUZXh0dXJlU2l6ZSkpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKTsKKworICAgIHZpcnR1
YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0
dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBPVkVSUklERTsKKworICAgIHNpemVfdCBjdXJy
ZW50TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRl
czsgfQorCisgICAgZW51bSBUZXh0dXJlVXNhZ2VIaW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgfTsKKworICAgIHZvaWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50
IGhpbnQpIHsgbV90ZXh0dXJlVXNhZ2VIaW50ID0gaGludDsgfQorICAgIHZvaWQgc2V0VXNlVGV4
dHVyZVN0b3JhZ2VFeHQoYm9vbCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VF
eHQgPSB1c2VTdG9yYWdlRXh0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGludCBtYXhUZXh0dXJlU2l6
ZSk7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAg
aW50IG1fbWF4VGV4dHVyZVNpemU7CisgICAgc2l6ZV90IG1fY3VycmVudE1lbW9yeVVzZUJ5dGVz
OworICAgIFRleHR1cmVVc2FnZUhpbnQgbV90ZXh0dXJlVXNhZ2VIaW50OworICAgIGJvb2wgbV91
c2VUZXh0dXJlU3RvcmFnZUV4dDsKKyAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FsbG9jYXRlZFRl
eHR1cmVJZHM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmNwcAppbmRleCAwZjZmNmVlMGUyM2U5NWEyY2U0ZWNlZGI0OTQwZmRiYjYwMGRmODg4Li5iZTE5
OTgzZWZiNjI2MzZjMDU2YjY5MDY3OWY1ZmQwMWU5NmY0OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdS
ZWN0SGlzdG9yeS5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNjcsOCArNjgsMTMgQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5Ojpz
aG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QK
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKIHsKICAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0ID0gbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7
CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBw
YXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBpZiAoIW1faHVkVGV4dHVyZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0
dXJlOjpjcmVhdGUobGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CisgICAg
ICAgIG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXIt
PmltcGxUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5n
cyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBVc2Ug
YSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCkBAIC04MSw3ICs4Nyw3
IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXll
clRyZWVIb3N0SW1wbCkKICAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKICAgICB9CiAK
LSAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgaHVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEND
UmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKKyAgICBpZiAoIW1faHVkVGV4dHVy
ZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShodWRTaXplLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlbmRlciBwaXhlbHMgaW50
byB0aGUgdGV4dHVyZS4KQEAgLTk2LDggKzEwMiwyMiBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6
OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgLy8gVXBs
b2FkIHRvIEdMLgogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9j
a2VyKCZjYW52YXMpOwotICAgICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoMCwgMCksIGh1ZFNp
emUpOwotICAgICAgICBsYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLT51cGxv
YWQobV9odWRUZXh0dXJlLT5pZCgpLCBsb2NrZXIucGl4ZWxzKCksIHJlY3QsIHJlY3QsIHJlY3Qp
OworCisgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV9odWRUZXh0dXJlLT5pZCgpKSk7CisgICAgICAgIGJvb2wg
dXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsKKyAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKSB7CisgICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCks
IGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsK
KworICAgICAgICAgICAgaWYgKHBpeGVsRGVzdCkgeworICAgICAgICAgICAgICAgIHVwbG9hZGVk
VmlhTWFwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIu
cGl4ZWxzKCksIGh1ZFNpemUud2lkdGgoKSAqIGh1ZFNpemUuaGVpZ2h0KCkgKiA0KTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3Qp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF1cGxvYWRlZFZpYU1h
cCkgeworICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBjYW52
YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZhcy5zaXplKCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBp
eGVscygpKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVh
ZHNVcERpc3BsYXkobV9odWRUZXh0dXJlLmdldCgpLCBodWRTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCA2ZGFjMmU3YTc3MjkzYWE4Njg1OTQ3MTJm
MGIxMzgzN2E5ZTJjNzNiLi4zNzMyNWQwMWUzNjczYzI3YmQxYWQ2NjNhZmZlMzY0NmFiNWYxYTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC02MCwxMiAr
NjAsMTIgQEAgQ0NJT1N1cmZhY2VMYXllckltcGw6On5DQ0lPU3VyZmFjZUxheWVySW1wbCgpCiAg
ICAgICAgIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShtX2lvU3VyZmFjZVRleHR1cmVJZCk7CiB9
CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3
KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ewotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBDQ0xh
eWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7CiAKICAgICBpZiAobV9p
b1N1cmZhY2VDaGFuZ2VkKSB7Ci0gICAgICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCA9IHJlc291cmNlUHJvdmlkZXItPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAg
ICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNv
bnRleHQzRCgpOwogICAgICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXgg
NDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2JmZTlhYzQ0NS4uMjhhMzVjZDBmMjA4M2E4
NjIxMDE3MTg3OWMxYjkyNmI1MmJkMDRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxh
eWVySW1wbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXco
Q0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3
KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBM
YXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGRiMjRjMDdlNDVhOWNmZWIxNzg0OGMxZGNhMzVh
MTZlN2M0NTU5YWQuLjNmZmY0NjhmMDQ4OTgyYmY3YjkyMzNkMzdkYzkxMzczMTczMThjYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBp
ZCkgY29uc3QKICAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgcXVhZFRy
YW5zZm9ybWF0aW9uLCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3
T3BhY2l0eSwgbV9vcGFxdWUpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqKQordm9pZCBDQ0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlcios
IENDR3JhcGhpY3NDb250ZXh0KikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gd2lsbERyYXcv
ZGlkRHJhdyBtdXN0IGJlIG1hdGNoZWQuCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBDQ0xheWVy
SW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikKICNlbmRpZgogfQogCi12b2lkIEND
TGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopCit2b2lkIENDTGF5ZXJJbXBs
OjpkaWREcmF3KCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fYmV0d2VlbldpbGxE
cmF3QW5kRGlkRHJhdyk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6YXBw
ZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXUKICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRl
cldpZHRoKCkpKTsKIH0KIAotQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDTGF5ZXJJ
bXBsOjpjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdAordW5zaWduZWQgQ0NMYXllckltcGw6OmNv
bnRlbnRzVGV4dHVyZUlkKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDcxZTkzYzU3NDU4MDY2YTQ3NzU4
NDM0ZTVkODk4YjQyZmY2NDYzM2QuLjA4ZTM1OWRhZDdkNWQ4MTE2NDcwMzVmZmU0MmI4YzM1OGVm
ZGM4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUg
ImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKLSNpbmNsdWRlICJjYy9D
Q1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC00NSw2ICs0NCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBDQ0xheWVyU29y
dGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDUXVhZEN1bGxlcjsKQEAg
LTkyLDEyICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBpcyBndWFyYW50ZWVkIHRv
IGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZvcmUKICAgICAvLyB0aGUg
bGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJy
aWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZl
cnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQq
KTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KCk7CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0OworICAgIHZpcnR1
YWwgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCiAgICAgdm9pZCBzZXREcmF3
c0NvbnRlbnQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAzNzdm
NzRkNTQ0ODE5ZWNkMjQ0MjllZDRiNTljNjcwMTE4YjU3OWEyLi4xZjUxZjE5ZDQ1YjExMjY4MGJj
NjFlYjE3YWY0MzQ5Y2ZlZjI4ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoKQogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIHBhcnRpYWwgdXBk
YXRlIGNhcGFiaWxpdHkuCiAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMg
PSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMsIG1fcHJveHktPm1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDAsIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSwgQ0NSZW5kZXJlcjo6Q29udGVudFBv
b2wpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDAsIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5t
YXhUZXh0dXJlU2l6ZSk7CiAgICAgbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXIgPSBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUoSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CkBA
IC0xOTcsMTEgKzE5NywxMSBAQCBDQ0xheWVyVHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0IENDTGF5
ZXJUcmVlSG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKICAgICByZXR1cm4gUmVjcmVhdGVGYWlsZWRB
bmRHYXZlVXA7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOwogICAgIGlmIChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkKLSAgICAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVy
KTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxv
Y2F0b3IpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YWNxdWlyZUxheWVyVGV4dHVyZXMo
KQpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9u
SW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRy
ZWVIb3N0Ojpjb21taXRUbyIpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnkoaG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhv
c3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAppbmRleCA4Mzk3ODU5MDUzZWNlNjIwMmQxZDE5MDlkZDk2ZTFiMDI3ZjE4YTIxLi5iZDY1
NjUwZjRkMzdiZDBjOTE5YjNjNTIwNDQ2NGFhZGQ4NTNmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7
CiBjbGFzcyBSZWdpb247CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOwogc3RydWN0IENDUmVuZGVyaW5nU3RhdHM7CiBzdHJ1Y3QgQ0NT
Y3JvbGxBbmRTY2FsZVNldDsKQEAgLTE4MSw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3
aWxsQ29tbWl0KCkgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CiAgICAgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJhbWUoKTsgfQog
ICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRl
U3dhcEJ1ZmZlcnMoKTsgfQotICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRo
cmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBhY3F1
aXJlTGF5ZXJUZXh0dXJlcygpOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFi
b3J0IHRoaXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDZlNzkxNGE3NDI0MDM3NDcyZTk5ZWQ1NzAxOTBmODAzNDdj
NjZkMDcuLjIwMDhkOWYyOGJhMzdiNTM3Y2Y0ZjcxNTZhN2FkNjUwYWIxOTdjNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
I2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aCIKQEAgLTMyOSw3ICszMzAsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0
ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICAgICAgQ0NSZW5kZXJQYXNz
KiBjb250cmlidXRpbmdSZW5kZXJQYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KGl0LT5yZW5kZXJT
dXJmYWNlKCkpOwogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNl
TGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYmICFvY2NsdXNpb25UcmFj
a2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50UmVjdCgpKSAmJiAhaXQtPnZpc2li
bGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSAmJiAhaXQtPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBpdC0+d2lsbERyYXcobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
KyAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNvbnRleHQo
KSk7CiAgICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQoKml0KTsKIAogICAg
ICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
LCBoYWRNaXNzaW5nVGlsZXMpOwpAQCAtNTIyLDcgKzUyMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVI
b3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQogCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCkKIHsKLSAgICBtX3Jlc291cmNl
UHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsK
KyAgICBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKS0+ZGVsZXRlQWxsVGV4dHVyZXMoKTsKICAg
ICBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0ID0gdHJ1ZTsKICAg
ICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKIH0KQEAgLTU2OCw3ICs1
NjksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVE
YXRhJiBmcmFtZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZGlkRHJhd0FsbExheWVycyhj
b25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJh
bWUud2lsbERyYXdMYXllcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZyYW1lLndpbGxEcmF3TGF5
ZXJzW2ldLT5kaWREcmF3KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgICAgIGZyYW1l
LndpbGxEcmF3TGF5ZXJzW2ldLT5kaWREcmF3KCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKQEAgLTU4Nyw2ICs1ODgsMTEgQEAgY29uc3QgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0SW1wbDo6bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KTsKIH0KIAorVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8g
bV9sYXllclJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSA6IDA7Cit9CisKIGJv
b2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2xh
eWVyUmVuZGVyZXIpOwpAQCAtNjkyLDExICs2OTgsOCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHRSZWYoY29udGV4dCk7Ci0gICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRl
cj4gcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHRS
ZWYuZ2V0KCkpOwogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVy
ZXI7Ci0gICAgaWYgKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpCi0gICAgICAgIGxheWVyUmVuZGVy
ZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCByZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCB0ZXh0dXJlVXBsb2FkZXIpOworICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0M2QsIHRleHR1cmVVcGxvYWRlcik7CiAK
ICAgICAvLyBTaW5jZSB3ZSBub3cgaGF2ZSBhIG5ldyBjb250ZXh0L2xheWVyUmVuZGVyZXIsIHdl
IGNhbm5vdCBjb250aW51ZSB0byB1c2UgdGhlIG9sZAogICAgIC8vIHJlc291cmNlcyAoaS5lLiBy
ZW5kZXJTdXJmYWNlcyBhbmQgdGV4dHVyZSBJRHMpLgpAQCAtNzA2LDkgKzcwOSw4IEBAIGJvb2wg
Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc093blB0cjxD
Q0dyYXBoaWNzQ29udGV4dD4KICAgICB9CiAKICAgICBtX2xheWVyUmVuZGVyZXIgPSBsYXllclJl
bmRlcmVyLnJlbGVhc2UoKTsKLSAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSByZXNvdXJjZVByb3Zp
ZGVyLnJlbGVhc2UoKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVyKQotICAgICAgICBtX2NvbnRl
eHQgPSBjb250ZXh0UmVmLnJlbGVhc2UoKTsKKyAgICAgICAgbV9jb250ZXh0ID0gY29udGV4dDsK
IAogICAgIGlmICghbV92aXNpYmxlICYmIG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgIG1fbGF5
ZXJSZW5kZXJlci0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCmluZGV4IGY5MzZlMzRkZDJjM2M0MzI5MmYyM2IyOGYwMTk5MzE2NWU1M2I0
NTIuLjc1M2FhMzg0YTNkMDA3NmVhMWYwYTk4YzE3NGE0YjU3NWE3MDc5MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI7CiBjbGFz
cyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkOwotY2xh
c3MgQ0NSZXNvdXJjZVByb3ZpZGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOworY2xh
c3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwog
CiAvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50ZXJmYWNlLgpAQCAtMTI3
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKICAgICBDQ1Jl
bmRlcmVyKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9
CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpIGNvbnN0OworICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpIGNvbnN0OwogCiAgICAgYm9vbCBzd2FwQnVmZmVycygpOwogCkBAIC0xNzYsNyAr
MTc3LDYgQEAgcHVibGljOgogCiAgICAgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9mcHNDb3VudGVyLmdldCgpOyB9CiAgICAgQ0NEZWJ1Z1JlY3RIaXN0
b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z1JlY3RIaXN0b3J5
LmdldCgpOyB9Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpOyB9CiAKICAgICBjbGFzcyBDdWxs
UmVuZGVyUGFzc2VzV2l0aENhY2hlZFRleHR1cmVzIHsKICAgICBwdWJsaWM6CkBAIC0yNTIsNyAr
MjUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFt
JiwgaW50IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAogICAgIE93blB0cjxD
Q0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwotICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlk
ZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBPd25QdHI8Q0NSZW5kZXJlcj4gbV9sYXllclJl
bmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOwogICAgIEND
TGF5ZXJJbXBsKiBtX3Jvb3RTY3JvbGxMYXllckltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHAKaW5kZXggNjBjZjFhMWUyY2U1Nzg3MTA3ZmE3MzgzYWE1NTQxYjlk
ZTBiZGRkNC4uMWRmNzcxMzg2Y2FiY2I0YWE5OGJkMWU2YTVjYjgzNzk0ZjU3NDVjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlv
cml0aXplZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNDUHJp
b3JpdHlDYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisj
aW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTg5LDI5ICs5MCw0NiBAQCBib29sIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpyZXF1ZXN0TGF0ZSgpCiAgICAgcmV0dXJuIG1fbWFuYWdlci0+cmVxdWVzdExhdGUo
dGhpcyk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4
dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQogewogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAgaWYg
KG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICBtX21hbmFnZXItPmFjcXVpcmVCYWNr
aW5nVGV4dHVyZUlmTmVlZGVkKHRoaXMsIHJlc291cmNlUHJvdmlkZXIpOworICAgICAgICBtX21h
bmFnZXItPmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKHRoaXMsIGFsbG9jYXRvcik7CiB9
CiAKLUNDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
cmVzb3VyY2VJZCgpIGNvbnN0Cit1bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVy
ZUlkKCkKIHsKICAgICBpZiAobV9iYWNraW5nKQogICAgICAgICByZXR1cm4gbV9iYWNraW5nLT5p
ZCgpOwogICAgIHJldHVybiAwOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1cGxv
YWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBp
bWFnZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1
dG9mZik7CiAgICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICBhY3F1aXJl
QmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgIGFjcXVpcmVCYWNraW5n
VGV4dHVyZShhbGxvY2F0b3IpOwogICAgIEFTU0VSVChtX2JhY2tpbmcpOwotICAgIHJlc291cmNl
UHJvdmlkZXItPnVwbG9hZChyZXNvdXJjZUlkKCksIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKCkpOworfQorCit2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQoreworICAgIEFTU0VSVChtX2lz
QWJvdmVQcmlvcml0eUN1dG9mZik7CisgICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQor
ICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKKyAgICBBU1NFUlQobV9i
YWNraW5nKTsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBj
b250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY29udGV4dDNkLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9B
VFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCgpLCAw
KTsKIH0KIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6bGluayhCYWNraW5nKiBiYWNraW5n
KQpAQCAtMTQxLDMgKzE1OSw0IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNldFRvU2Vs
Zk1hbmFnZWRNZW1vcnlQbGFjZWhvbGRlcihzaXplX3QgYnl0ZXMpCiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKaW5kZXgg
NzY0Y2JlY2VkYzNkY2QyN2EyYjNjNjUwOTM5OTM1MDQxNmQ5MDdhOS4uNDYwNzNjNWYzNDY4OGVk
ZTJlMTg4YTNmZWJhZTRmNDBjMzUyNTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZS5oCkBAIC0yNSwxNiArMjUsMTggQEAKICNpZm5kZWYgQ0NQcmlvcml0aXplZFRleHR1
cmVfaAogI2RlZmluZSBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAKKyNpbmNsdWRlICJDQ1ByaW9y
aXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlICJjYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgotI2luY2x1ZGUgImNjL0ND
UmVzb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKK2NsYXNz
IENDUHJpb3JpdHlDYWxjdWxhdG9yOworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBU
ZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NQcmlvcml0aXplZFRleHR1cmUpOwpAQCAtNzQsNyArNzYsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBJZiBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBpcyB0cnVl
IGFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQogICAgIC8vIGEgYmFja2luZyB0
ZXh0dXJlIGZvciB1c2UuIENhbGwgdGhpcyB3aGVuZXZlciB0aGUgdGV4dHVyZSBpcyBhY3R1YWxs
eSBuZWVkZWQuCi0gICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmUoQ0NSZXNvdXJjZVByb3Zp
ZGVyKik7CisgICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciop
OwogCiAgICAgLy8gRklYTUU6IFJlcXVlc3QgbGF0ZSBpcyByZWFsbHkgYSBoYWNrIGZvciB3aGVu
IHdlIGFyZSB0b3RhbGx5IG91dCBvZiBtZW1vcnkKICAgICAvLyAgICAgICAgKGFsbCB0ZXh0dXJl
cyBhcmUgdmlzaWJsZSkgYnV0IHdlIGNhbiBzdGlsbCBzcXVlZXplIGludG8gdGhlIGxpbWl0CkBA
IC04NSwxMCArODcsMTEgQEAgcHVibGljOgogICAgIC8vICAgICAgICByZWdyZXNzIE9PTXMgc2l0
dWF0aW9ucy4KICAgICBib29sIHJlcXVlc3RMYXRlKCk7CiAKLSAgICAvLyBVcGxvYWRzIHBpeGVs
cyBpbnRvIHRoZSBiYWNraW5nIHJlc291cmNlLiBUaGlzIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0
aGUgYmFja2luZyBpZiBuZWVkZWQuCi0gICAgdm9pZCB1cGxvYWQoQ0NSZXNvdXJjZVByb3ZpZGVy
KiwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotCi0gICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQoKSBjb25zdDsKKyAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgd2lsbCBhY3F1aXJlIHRoZSB0ZXh0dXJlIGlmIHBvc3NpYmxlLiBJZiBu
ZWl0aGVyIGhhdmVCYWNraW5nVGV4dHVyZSgpCisgICAgLy8gbm9yIGNhbkFjcXVpcmVCYWNraW5n
VGV4dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgor
ICAgIHZvaWQgYmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9y
Kik7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCosIFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKTsKIAogICAgIC8vIFNl
bGYtbWFuYWdlZCB0ZXh0dXJlcyBhcmUgYWNjb3VudGVkIGZvciB3aGVuIHByaW9yaXRpemluZyBv
dGhlciB0ZXh0dXJlcywKICAgICAvLyBidXQgdGhleSBhcmUgbm90IGFsbG9jYXRlZC9yZWN5Y2xl
ZC9kZWxldGVkLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGRvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDRhMjQxNzljNTc4MGE2ODJj
NGVkNGFkODMzYzE2YTI3ZTZkMGQ4ZDcuLmQxOWU1YWExOWM4ZjhmMzZjYmU2MjA3MzQ1ZjI5ZGVl
Y2U2NTZiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyLmNwcApAQCAtMzYsMTIgKzM2LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCwgaW50
IHBvb2wpCitDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50KQogICAgIDogbV9tYXhNZW1v
cnlMaW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVz
KDApCiAgICAgLCBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoMCkKICAgICAsIG1fbWVtb3J5QXZh
aWxhYmxlQnl0ZXMoMCkKLSAgICAsIG1fcG9vbChwb29sKQogewogfQogCkBAIC01MCw3ICs0OSw3
IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcigpCiAgICAgd2hpbGUgKG1fdGV4dHVyZXMuc2l6ZSgpID4gMCkKICAgICAgICAgdW5yZWdp
c3RlclRleHR1cmUoKm1fdGV4dHVyZXMuYmVnaW4oKSk7CiAKLSAgICAvLyBFYWNoIHJlbWFpbmlu
ZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0dXJlLiBXZSBkb24ndCBoYXZlIHRoZSBy
ZXNvdXJjZVByb3ZpZGVyCisgICAgLy8gRWFjaCByZW1haW5pbmcgYmFja2luZyBpcyBhIGxlYWtl
ZCBvcGVuZ2wgdGV4dHVyZS4gV2UgZG9uJ3QgaGF2ZSB0aGUgYWxsb2NhdG9yCiAgICAgLy8gdG8g
ZGVsZXRlIHRoZSB0ZXh0dXJlcyBhdCB0aGlzIHRpbWUgc28gY2xlYXJNZW1vcnkoKSBuZWVkcyB0
byBiZSBjYWxsZWQgYmVmb3JlIHRoaXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4g
MCkKICAgICAgICAgZGVzdHJveUJhY2tpbmcoKm1fYmFja2luZ3MuYmVnaW4oKSwgMCk7CkBAIC0x
NjksNyArMTY4LDcgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RM
YXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJl
SWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjph
Y3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVy
ZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVCghdGV4dHVyZS0+
aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKCkpOwpAQCAtMTkxLDggKzE5MCw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4CiAKICAg
ICAvLyBPdGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVzdCBhbGxvY2F0ZSBhIG5ldyBiYWNr
aW5nIHRleHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0gICAgICAgIHJlZHVjZU1lbW9yeSht
X21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgcmVzb3VyY2VQcm92aWRl
cik7Ci0gICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNpemUoKSwgdGV4
dHVyZS0+Zm9ybWF0KCksIHJlc291cmNlUHJvdmlkZXIpOworICAgICAgICByZWR1Y2VNZW1vcnko
bV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1cmUtPmJ5dGVzKCksIGFsbG9jYXRvcik7Cisg
ICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNpemUoKSwgdGV4dHVyZS0+
Zm9ybWF0KCksIGFsbG9jYXRvcik7CiAgICAgfQogCiAgICAgLy8gTW92ZSB0aGUgdXNlZCBiYWNr
aW5nIHRleHR1cmUgdG8gdGhlIGVuZCBvZiB0aGUgZXZpY3Rpb24gbGlzdC4KQEAgLTIwMyw3ICsy
MDIsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogICAgIG1fYmFja2luZ3MuYWRkKGJhY2tp
bmcpOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
KHNpemVfdCBsaW1pdEJ5dGVzLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIp
Cit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBs
aW1pdEJ5dGVzLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgaWYgKG1lbW9y
eVVzZUJ5dGVzKCkgPD0gbGltaXRCeXRlcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDEzICsy
MTIsMTMgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShz
aXplX3QgbGltaXRCeXRlcywgQ0NSZXNvdXJjZVByb3YKICAgICAgICAgQmFja2luZ1NldDo6aXRl
cmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7CiAgICAgICAgIGlmICgoKml0KS0+b3duZXIo
KSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlkZXIp
OworICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKICAgICB9CiB9CiAK
LXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7Ci0gICAg
cmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMsIHJlc291cmNlUHJvdmlkZXIpOwor
ICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCBhbGxvY2F0b3IpOwogICAg
IEFTU0VSVChtZW1vcnlVc2VCeXRlcygpIDw9IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CiAKICAg
ICAvLyBXZSBjdXJyZW50bHkgY29sbGVjdCBiYWNraW5ncyBmcm9tIGRlbGV0ZWQgdGV4dHVyZXMg
Zm9yIGxhdGVyIHJlY3ljbGluZy4KQEAgLTIzNiwxNyArMjM1LDE3IEBAIHZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpCiAgICAgc2l6ZV90IHRlblBlcmNlbnRPZk1lbW9yeSA9IG1fbWVtb3J5QXZhaWxh
YmxlQnl0ZXMgLyAxMDsKICAgICBpZiAod2FzdGVkTWVtb3J5IDw9IHRlblBlcmNlbnRPZk1lbW9y
eSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlZHVjZU1lbW9yeShtZW1vcnlVc2VCeXRlcygpIC0g
KHdhc3RlZE1lbW9yeSAtIHRlblBlcmNlbnRPZk1lbW9yeSksIHJlc291cmNlUHJvdmlkZXIpOwor
ICAgIHJlZHVjZU1lbW9yeShtZW1vcnlVc2VCeXRlcygpIC0gKHdhc3RlZE1lbW9yeSAtIHRlblBl
cmNlbnRPZk1lbW9yeSksIGFsbG9jYXRvcik7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnko
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIC8vIFVubGluayBhbmQgZGVzdHJv
eSBhbGwgYmFja2luZyB0ZXh0dXJlcy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAw
KSB7CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigp
OwogICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpCiAgICAgICAgICAgICAoKml0KS0+b3duZXIo
KS0+dW5saW5rKCk7Ci0gICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCByZXNvdXJjZVByb3Zp
ZGVyKTsKKyAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CiAgICAgfQog
fQogCkBAIC0yNTQsNyArMjUzLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCkKIHsKICAgICAvLyBTYW1lIGFzIGNsZWFy
QWxsTWVtb3J5LCBleGNlcHQgYWxsIG91ciB0ZXh0dXJlcyB3ZXJlIGFscmVhZHkKICAgICAvLyBk
ZWxldGVkIGV4dGVybmFsbHksIHNvIHdlIGRvbid0IGRlbGV0ZSB0aGVtLiBQYXNzaW5nIG5vCi0g
ICAgLy8gcmVzb3VyY2VQcm92aWRlciByZXN1bHRzIGluIGxlYWtpbmcgdGhlIChub3cgaW52YWxp
ZCkgdGV4dHVyZSBpZHMuCisgICAgLy8gYWxsb2NhdG9yIHJlc3VsdHMgaW4gbGVha2luZyB0aGUg
KG5vdyBpbnZhbGlkKSB0ZXh0dXJlIGlkcy4KICAgICBjbGVhckFsbE1lbW9yeSgwKTsKIH0KIApA
QCAtMjkyLDI3ICsyOTEsMjYgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJl
dHVybkJhY2tpbmdUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXgKICAgICB9CiB9CiAK
LUNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK0NDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNr
aW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6ZSBz
aXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKLSAg
ICBBU1NFUlQocmVzb3VyY2VQcm92aWRlcik7CisgICAgQVNTRVJUKGFsbG9jYXRvcik7CiAKLSAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IHJlc291cmNlUHJv
dmlkZXItPmNyZWF0ZVJlc291cmNlKG1fcG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJv
dmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0gICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tp
bmcqIGJhY2tpbmcgPSBuZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcocmVzb3VyY2VJ
ZCwgc2l6ZSwgZm9ybWF0KTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFj
a2luZyA9IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhhbGxvY2F0b3ItPmNyZWF0
ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KSwgc2l6ZSwgZm9ybWF0KTsKICAgICBtX21lbW9yeVVzZUJ5
dGVzICs9IGJhY2tpbmctPmJ5dGVzKCk7CiAgICAgLy8gUHV0IGJhY2tpbmcgdGV4dHVyZSBhdCB0
aGUgZnJvbnQgZm9yIGV2aWN0aW9uLCBzaW5jZSBpdCBpc24ndCBpbiB1c2UgeWV0LgogICAgIG1f
YmFja2luZ3MuaW5zZXJ0QmVmb3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgYmFja2luZyk7CiAgICAg
cmV0dXJuIGJhY2tpbmc7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpk
ZXN0cm95QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5n
KiBiYWNraW5nLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKGJh
Y2tpbmcpOwogICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIo
KS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIo
KSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQobV9i
YWNraW5ncy5maW5kKGJhY2tpbmcpICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCi0gICAgaWYgKHJl
c291cmNlUHJvdmlkZXIpCi0gICAgICAgIHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNl
KGJhY2tpbmctPmlkKCkpOworICAgIGlmIChhbGxvY2F0b3IpCisgICAgICAgIGFsbG9jYXRvci0+
ZGVsZXRlVGV4dHVyZShiYWNraW5nLT5pZCgpLCBiYWNraW5nLT5zaXplKCksIGJhY2tpbmctPmZv
cm1hdCgpKTsKICAgICBpZiAoYmFja2luZy0+b3duZXIoKSkKICAgICAgICAgYmFja2luZy0+b3du
ZXIoKS0+dW5saW5rKCk7CiAgICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBiYWNraW5nLT5ieXRlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRl
eCBiMTZlYzEwMzRkMzliNmMzZWJhMzg0ZmQ1ZTg4MWI1OTdmNmUyMDZjLi4wMTljNDVjZjRlMzMz
ZTU0Y2Y5ZWE0ZDBiY2Q1OWM2Nzk5MWIzY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDQ1ByaW9y
aXR5Q2FsY3VsYXRvcjsKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNy
ZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplLCBpbnQg
cG9vbCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIobWF4TWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUsIHBvb2wpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIobWF4TWVt
b3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUpKTsKICAgICB9CiAgICAgUGFzc093blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZT4gY3JlYXRlVGV4dHVyZShJbnRTaXplIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKICAgICB7CkBAIC03MywxMSArNzMsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBy
ZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwogCi0gICAgdm9pZCByZWR1Y2VNZW1v
cnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdm9pZCBjbGVhckFsbE1lbW9yeShDQ1Jlc291
cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIHJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKik7
CisgICAgdm9pZCBjbGVhckFsbE1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBh
bGxCYWNraW5nVGV4dHVyZXNXZXJlRGVsZXRlZCgpOwogCi0gICAgdm9pZCBhY3F1aXJlQmFja2lu
Z1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUmVzb3VyY2VQcm92aWRl
ciopOworICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXpl
ZFRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKICAgICB2b2lkIHJlZ2lzdGVyVGV4dHVy
ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwogICAgIHZvaWQgdW5yZWdpc3RlclRleHR1cmUoQ0NQ
cmlvcml0aXplZFRleHR1cmUqKTsKQEAgLTEwNSwxOSArMTA1LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHByaW9yaXR5
QSwgcHJpb3JpdHlCKTsKICAgICB9CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIo
c2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHBvb2wp
OworICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRC
eXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKIAotICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVf
dCBsaW1pdCwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCByZWR1Y2VNZW1vcnkoc2l6
ZV90IGxpbWl0LCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVy
ZTo6QmFja2luZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIENDUmVz
b3VyY2VQcm92aWRlciopOwotICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcqLCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICBDQ1ByaW9yaXRpemVk
VGV4dHVyZTo6QmFja2luZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQs
IFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiwgVGV4dHVyZUFsbG9jYXRvciopOwogCiAgICAgc2l6ZV90IG1f
bWF4TWVtb3J5TGltaXRCeXRlczsKICAgICB1bnNpZ25lZCBtX3ByaW9yaXR5Q3V0b2ZmOwogICAg
IHNpemVfdCBtX21lbW9yeVVzZUJ5dGVzOwogICAgIHNpemVfdCBtX21lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXM7Ci0gICAgaW50IG1fcG9v
bDsKIAogICAgIHR5cGVkZWYgSGFzaFNldDxDQ1ByaW9yaXRpemVkVGV4dHVyZSo+IFRleHR1cmVT
ZXQ7CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2lu
Zyo+IEJhY2tpbmdTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAK
aW5kZXggMmQ3NGEyMjc4MDNmZTRhZmFlOTFmYzNjYjE1MmY3MWYzOTc2M2E4Yi4uNTlhYmZiYmNj
MGEzZWJmZjBmOGFjYTA4OTM3MmE1MTVkNmFjMTk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMzEsMTkgKzMxLDE5IEBAIHVzaW5nIFdlYktpdDo6V2Vi
Q29tcG9zaXRvclF1YWQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1Jl
bmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRl
clBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBh
c3NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzSWQsIGlzUmVw
bGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tSZXNv
dXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
cmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91
bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkp
OwogfQogCi1DQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lKQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdR
dWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBp
c1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQg
bWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJh
bWUpCiAgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0
b3JRdWFkOjpSZW5kZXJQYXNzLCBxdWFkUmVjdCkKICAgICAsIG1fcmVuZGVyUGFzc0lkKHJlbmRl
clBhc3NJZCkKICAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKICAgICAsIG1fZHJhd1RyYW5z
Zm9ybShkcmF3VHJhbnNmb3JtKQogICAgICwgbV9maWx0ZXJzKGZpbHRlcnMpCiAgICAgLCBtX2Jh
Y2tncm91bmRGaWx0ZXJzKGJhY2tncm91bmRGaWx0ZXJzKQotICAgICwgbV9tYXNrUmVzb3VyY2VJ
ZChtYXNrUmVzb3VyY2VJZCkKKyAgICAsIG1fbWFza1RleHR1cmVJZChtYXNrVGV4dHVyZUlkKQog
ICAgICwgbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZShjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSkKIHsKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQgPiAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCmluZGV4IDZmMzk5YmU2N2Y4NjUyOTc4NzU2ZDY1
YmYxYjc0ODZhMmZiMmU4NzkuLmExMmYyMDRjYTVmNjI4NjIxMzQ3MWRiMDQ1NDcyN2ZkODJhNGMz
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAtMjYsNyArMjYs
NiBAQAogI2lmbmRlZiBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAjZGVmaW5lIENDUmVuZGVyUGFz
c0RyYXdRdWFkX2gKIAotI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yUXVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0
ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4
Lmg+CkBAIC0zOSwxMSArMzgsMTEgQEAgY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCBy
ZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBj
b25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgaW50
IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9v
bCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQotICAgIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFza1Jlc291cmNlSWQ7IH0KKyAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXNrVGV4dHVyZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNl
TGFzdEZyYW1lOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQg
d2Ugc2hvdWxkIGRyYXcgdGhlIFJlbmRlclBhc3Mgd2l0aCB0aGUgcXVhZFRyYW5zZm9ybS4KQEAg
LTU0LDE0ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIG1hdGVyaWFsQ2FzdChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7
CiBwcml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lk
LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0No
YW5nZWRTaW5jZUxhc3RGcmFtZSk7CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCBy
ZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBj
b25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNp
Z25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxh
c3RGcmFtZSk7CiAKICAgICBpbnQgbV9yZW5kZXJQYXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGlj
YTsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsK
ICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwogICAgIFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwotICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCBtX21hc2tSZXNvdXJjZUlkOworICAgIHVuc2lnbmVkIG1fbWFz
a1RleHR1cmVJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCBlZmYwNjhhYjQ0ODlj
NDgwNzBkZTkxZDU2MjQwNWU2MzZkZTI0NzczLi44MmNiNTQ3NjA3MjI2ODFhMzI5MGM3Nzk5ZThm
ZWNkYTcxMmJkNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTIwOSwx
NCArMjA5LDE0IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAgICAgICAgICAgICBtYXNrTGF5
ZXIgPSAwOwogICAgIH0KIAotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCA9IG1hc2tMYXllciA/IG1hc2tMYXllci0+Y29udGVudHNSZXNvdXJjZUlkKCkg
OiAwOworICAgIGludCBtYXNrVGV4dHVyZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250
ZW50c1RleHR1cmVJZCgpIDogMDsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJh
bnNmb3JtID0gZm9yUmVwbGljYSA/IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gOiBtX2RyYXdUcmFu
c2Zvcm07CiAgICAgSW50UmVjdCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSA9IGNvbnRl
bnRzQ2hhbmdlZCgpID8gbV9jb250ZW50UmVjdCA6IEludFJlY3QoKTsKIAogICAgIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmZpbHRl
cnMoKTsKICAgICBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRG
aWx0ZXJzID0gbV9vd25pbmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKTsKIAotICAgIHF1YWRM
aXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5z
Zm9ybSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50
c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCks
IHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dy
b3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCBkOTMxMDIyZGM1NTU3NWUxZThlZjZm
OWI4MzMyMzNhNmY3MTRiZjMxLi42YjA1ZDk0OTRjMmMxZDg2MGIyOWI3NjNkZGJhNGQ2YTFjZTIy
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC0zNiw3ICszNiw5IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDU2NvcGVkVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CiBjbGFzcyBUZXh0dXJlQ29waWVyOworY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiBjbGFzcyBUZXh0
dXJlVXBsb2FkZXI7CiAKIGVudW0gVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBs
b2FkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIgfTsKQEAgLTU1LDEzICs1Nyw2IEBAIHB1YmxpYzoK
IGNsYXNzIENDUmVuZGVyZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyZXIp
OwogcHVibGljOgotICAgIC8vIFRoaXMgZW51bSBkZWZpbmVzIHRoZSB2YXJpb3VzIHJlc291cmNl
IHBvb2xzIGZvciB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyCi0gICAgLy8gd2hlcmUgdGV4dHVyZXMg
Z2V0IGFsbG9jYXRlZC4KLSAgICBlbnVtIFJlc291cmNlUG9vbCB7Ci0gICAgICBJbXBsUG9vbCA9
IDEsIC8vIFRoaXMgcG9vbCBpcyBmb3IgdGV4dHVyZXMgdGhhdCBnZXQgYWxsb2NhdGVkIG9uIHRo
ZSBpbXBsIHRocmVhZCAoZS5nLiBSZW5kZXJTdXJmYWNlcykuCi0gICAgICBDb250ZW50UG9vbCAv
LyBUaGlzIHBvb2wgaXMgZm9yIHRleHR1cmVzIHRoYXQgZ2V0IGFsbG9jYXRlZCBvbiB0aGUgbWFp
biB0aHJlYWQgKGUuZy4gdGlsZXMpLgotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5DQ1JlbmRlcmVy
KCkgeyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0ID0gMDsKQEAgLTk2LDYgKzkxLDggQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRMb3N0KCkgeyByZXR1
cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmODJiZjIyYTU5NWVkN2Q5ODZiMTQ0YWUxNjY3MmQw
NTZmMDQ4OTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVBy
b3ZpZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkludFJl
Y3QuaCIKLSNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMo
KSBtYWNybwotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCi0jaW5jbHVkZSA8
cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Ci0KLXVzaW5nIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEdDM0RlbnVtIHRl
eHR1cmVUb1N0b3JhZ2VGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKLXsKLSAgICBHQzNE
ZW51bSBzdG9yYWdlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpSR0JBOF9PRVM7Ci0gICAgc3dpdGNo
ICh0ZXh0dXJlRm9ybWF0KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOgotICAgICAgICBz
dG9yYWdlRm9ybWF0ID0gRXh0ZW5zaW9uczNEQ2hyb21pdW06OkJHUkE4X0VYVDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBzdG9yYWdlRm9ybWF0OwotfQotCi1zdGF0
aWMgYm9vbCBpc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKEdDM0RlbnVtIGZvcm1h
dCkKLXsKLSAgICByZXR1cm4gKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSB8fCBm
b3JtYXQgPT0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVCk7Ci19Ci0KLVBhc3NPd25QdHI8Q0NSZXNv
dXJjZVByb3ZpZGVyPiBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKLXsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVBy
b3ZpZGVyKGFkb3B0UHRyKG5ldyBDQ1Jlc291cmNlUHJvdmlkZXIoY29udGV4dCkpKTsKLSAgICBp
ZiAoIXJlc291cmNlUHJvdmlkZXItPmluaXRpYWxpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIHJlc291cmNlUHJvdmlkZXIucmVsZWFzZSgpOwotfQotCi1DQ1Jlc291
cmNlUHJvdmlkZXI6On5DQ1Jlc291cmNlUHJvdmlkZXIoKQotewotfQotCi1XZWJHcmFwaGljc0Nv
bnRleHQzRCogQ0NSZXNvdXJjZVByb3ZpZGVyOjpncmFwaGljc0NvbnRleHQzRCgpCi17Ci0gICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LT5j
b250ZXh0M0QoKTsKLX0KLQotYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1l
cihSZXNvdXJjZUlkIGlkKQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0g
ICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKLSAgICByZXR1cm4gISFpdC0+c2Vj
b25kLmxvY2tGb3JSZWFkQ291bnQ7Ci19Ci0KLUNDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRT
aXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQgaGludCkKLXsKLSAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIHVuc2lnbmVkIHRleHR1cmVJ
ZCA9IDA7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+
Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgR0xDKGNvbnRleHQzZCwgdGV4dHVyZUlkID0gY29udGV4dDNkLT5j
cmVhdGVUZXh0dXJlKCkpOwotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwotICAgIEdMQyhj
b250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdM
Qyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkp
OwotCi0gICAgaWYgKG1fdXNlVGV4dHVyZVVzYWdlSGludCAmJiBoaW50ID09IFRleHR1cmVVc2Fn
ZUZyYW1lYnVmZmVyKQotICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVt
OjpHTF9URVhUVVJFX1VTQUdFX0FOR0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9BTkdMRSkpOwotICAgIGlmIChtX3VzZVRleHR1cmVTdG9yYWdlRXh0
ICYmIGlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoZm9ybWF0KSkgewotICAgICAg
ICBHQzNEZW51bSBzdG9yYWdlRm9ybWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChmb3JtYXQp
OwotICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFN0b3JhZ2UyREVYVChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEdMQyhjb250ZXh0M2QsIGNv
bnRleHQzZC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKLSAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQr
KzsKLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIHBvb2wsIDAsIGZhbHNlLCBm
YWxzZSwgc2l6ZSwgZm9ybWF0fTsKLSAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsK
LSAgICByZXR1cm4gaWQ7Ci19Ci0KLUNDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25l
ZCB0ZXh0dXJlSWQpCi17Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAg
ICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKLSAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0
ZXh0dXJlSWQsIDAsIDAsIGZhbHNlLCB0cnVlLCBJbnRTaXplKCksIDB9OwotICAgIG1fcmVzb3Vy
Y2VzLmFkZChpZCwgcmVzb3VyY2UpOwotICAgIHJldHVybiBpZDsKLX0KLQotdm9pZCBDQ1Jlc291
cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291cmNlKFJlc291cmNlSWQgaWQpCi17Ci0gICAgQVNTRVJU
KENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewot
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tG
b3JSZWFkQ291bnQpOwotICAgIGlmICghaXQtPnNlY29uZC5leHRlcm5hbCkKLSAgICAgICAgR0xD
KGNvbnRleHQzZCwgY29udGV4dDNkLT5kZWxldGVUZXh0dXJlKGl0LT5zZWNvbmQuZ2xJZCkpOwot
ICAgIG1fcmVzb3VyY2VzLnJlbW92ZShpdCk7Ci19Ci0KLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpkZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCkKLXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwotICAgIFZlY3RvcjxSZXNvdXJjZUlkPiB0b0RlbGV0ZTsKLSAgICBm
b3IgKFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+c2Vjb25kLnBvb2wg
PT0gcG9vbCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCkKLSAgICAgICAgICAgIHRvRGVsZXRlLmFw
cGVuZChpdC0+Zmlyc3QpOwotICAgIH0KLSAgICBmb3IgKFZlY3RvcjxSZXNvdXJjZUlkPjo6aXRl
cmF0b3IgaXQgPSB0b0RlbGV0ZS5iZWdpbigpOyBpdCAhPSB0b0RlbGV0ZS5lbmQoKTsgKytpdCkK
LSAgICAgICAgZGVsZXRlUmVzb3VyY2UoKml0KTsKLX0KLQotdm9pZCBDQ1Jlc291cmNlUHJvdmlk
ZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKLXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAg
IEFTU0VSVChtX3RleFN1YkltYWdlLmdldCgpKTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkg
ewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVzb3VyY2VNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxv
Y2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotCi0gICAgY29udGV4dDNk
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5n
bElkKTsKLSAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNl
UmVjdCwgZGVzdFJlY3QsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOwotfQotCi11bnNp
Z25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQotewot
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fcmVz
b3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25k
LmxvY2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNv
bmQubG9ja2VkRm9yV3JpdGUgPSB0cnVlOwotICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Ci19
Ci0KLXZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlk
KQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5z
ZWNvbmQuZXh0ZXJuYWwpOwotICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsK
LX0KLQotdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmZsdXNoKCkKLXsKLSAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGlu
Zy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0M2QtPmZsdXNoKCk7Ci19Ci0K
LXVuc2lnbmVkIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkK
LXsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAhPSBt
X3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgKyso
aXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKLSAgICByZXR1cm4gaXQtPnNlY29uZC5nbElk
OwotfQotCi12b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlk
IGlkKQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgUmVzb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7Ci0gICAgQVNTRVJUKGl0
ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCA+IDAp
OwotICAgIC0tKGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Ci19Ci0KLUNDUmVzb3VyY2VQ
cm92aWRlcjo6Q0NSZXNvdXJjZVByb3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQot
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX25leHRJZCgxKQotICAgICwgbV91c2VU
ZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkKLSAgICAsIG1fdXNlVGV4dHVyZVVzYWdlSGludChmYWxz
ZSkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUoMCkKLXsKLX0KLQotYm9vbCBDQ1Jlc291cmNlUHJv
dmlkZXI6OmluaXRpYWxpemUoKQotewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29u
dGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QgfHwgIWNvbnRleHQzZC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIFN0
cmluZyBleHRlbnNpb25zU3RyaW5nID0gY29udGV4dDNkLT5nZXRTdHJpbmcoR3JhcGhpY3NDb250
ZXh0M0Q6OkVYVEVOU0lPTlMpOwotICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7Ci0gICAg
ZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcsIGV4dGVuc2lvbnMpOwotICAgIGJvb2wgdXNlTWFw
U3ViID0gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldID09ICJHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIikKLSAgICAgICAgICAgIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB0cnVlOwotICAg
ICAgICBlbHNlIGlmIChleHRlbnNpb25zW2ldID09ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIikK
LSAgICAgICAgICAgIG1fdXNlVGV4dHVyZVVzYWdlSGludCA9IHRydWU7Ci0gICAgICAgIGVsc2Ug
aWYgKGV4dGVuc2lvbnNbaV0gPT0gIkdMX0NIUk9NSVVNX21hcF9zdWIiKQotICAgICAgICAgICAg
dXNlTWFwU3ViID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBtX3RleFN1YkltYWdlID0gYWRvcHRQdHIo
bmV3IExheWVyVGV4dHVyZVN1YkltYWdlKHVzZU1hcFN1YikpOwotICAgIEdMQyhjb250ZXh0M2Qs
IGNvbnRleHQzZC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJ
WkUsICZtX21heFRleHR1cmVTaXplKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVz
b3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA0NzZmMGU4ODZjOWUzMzExMjEzZWFhZmMyMzExOTIxZjRiNDUzZjguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lmbmRlZiBDQ1Jlc291cmNlUHJvdmlkZXJfaAot
I2RlZmluZSBDQ1Jlc291cmNlUHJvdmlkZXJfaAotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKLWNsYXNzIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yUmVhZDsKLWNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU7Ci1j
bGFzcyBMYXllclRleHR1cmVTdWJJbWFnZTsKLQotLy8gVGhyZWFkLXNhZmV0eSBub3RlczogdGhp
cyBjbGFzcyBpcyBub3QgdGhyZWFkLXNhZmUgYW5kIGNhbiBvbmx5IGJlIGNhbGxlZAotLy8gZnJv
bSB0aGUgdGhyZWFkIGl0IHdhcyBjcmVhdGVkIG9uIChpbiBwcmFjdGljZSwgdGhlIGNvbXBvc2l0
b3IgdGhyZWFkKS4KLWNsYXNzIENDUmVzb3VyY2VQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ0NSZXNvdXJjZVByb3ZpZGVyKTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHVuc2ln
bmVkIFJlc291cmNlSWQ7Ci0gICAgZW51bSBUZXh0dXJlVXNhZ2VIaW50IHsgVGV4dHVyZVVzYWdl
QW55LCBUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlciB9OwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NSZXNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoQ0NHcmFwaGljc0NvbnRleHQqKTsKLQotICAgIHZp
cnR1YWwgfkNDUmVzb3VyY2VQcm92aWRlcigpOwotCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKTsKLSAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX21heFRleHR1cmVTaXplOyB9Ci0gICAgdW5zaWduZWQgbnVtUmVzb3Vy
Y2VzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuc2l6ZSgpOyB9Ci0KLSAgICAvLyBDaGVj
a3Mgd2hldGhlciBhIHJlc291cmNlIGlzIGluIHVzZSBieSBhIGNvbnN1bWVyLgotICAgIGJvb2wg
aW5Vc2VCeUNvbnN1bWVyKFJlc291cmNlSWQpOwotCi0KLSAgICAvLyBQcm9kdWNlciBpbnRlcmZh
Y2UuCi0KLSAgICAvLyBDcmVhdGVzIGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHNpemUvZm9ybWF0
LCBpbnRvIHRoZSBnaXZlbiBwb29sLgotICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2UoaW50
IHBvb2wsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQp
OwotCi0gICAgLy8gV3JhcHMgYW4gZXh0ZXJuYWwgdGV4dHVyZSBpbnRvIGEgcmVzb3VyY2UuCi0g
ICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQg
dGV4dHVyZUlkKTsKLSAgICB2b2lkIGRlbGV0ZVJlc291cmNlKFJlc291cmNlSWQpOwotCi0gICAg
Ly8gRGVsZXRlcyBhbGwgcmVzb3VyY2VzIG93bmVkIGJ5IGEgZ2l2ZW4gcG9vbC4KLSAgICB2b2lk
IGRlbGV0ZU93bmVkUmVzb3VyY2VzKGludCBwb29sKTsKLQotICAgIC8vIFVwbG9hZCBkYXRhIGZy
b20gaW1hZ2UsIGNvcHlpbmcgc291cmNlUmVjdCAoaW4gaW1hZ2UpIGludG8gZGVzdFJlY3QgKGlu
IHRoZSByZXNvdXJjZSkuCi0gICAgdm9pZCB1cGxvYWQoUmVzb3VyY2VJZCwgY29uc3QgdWludDhf
dCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotCi0gICAgLy8gRmx1c2ggYWxsIGNvbnRl
eHQgb3BlcmF0aW9ucywga2lja2luZyB1cGxvYWRzIGFuZCBlbnN1cmluZyBvcmRlcmluZyB3aXRo
Ci0gICAgLy8gcmVzcGVjdCB0byBvdGhlciBjb250ZXh0cy4KLSAgICB2b2lkIGZsdXNoKCk7Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZDsK
LSAgICBmcmllbmQgY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKLQotICAgIHN0
cnVjdCBSZXNvdXJjZSB7Ci0gICAgICAgIHVuc2lnbmVkIGdsSWQ7Ci0gICAgICAgIGludCBwb29s
OwotICAgICAgICBpbnQgbG9ja0ZvclJlYWRDb3VudDsKLSAgICAgICAgYm9vbCBsb2NrZWRGb3JX
cml0ZTsKLSAgICAgICAgYm9vbCBleHRlcm5hbDsKLSAgICAgICAgSW50U2l6ZSBzaXplOwotICAg
ICAgICBHQzNEZW51bSBmb3JtYXQ7Ci0gICAgfTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3Vy
Y2VJZCwgUmVzb3VyY2U+IFJlc291cmNlTWFwOwotCi0gICAgZXhwbGljaXQgQ0NSZXNvdXJjZVBy
b3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgYm9vbCBpbml0aWFsaXplKCk7Ci0KLSAg
ICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0aGF0
IGNhbiBiZSByZW5kZXJlZCBpbnRvLgotICAgIHVuc2lnbmVkIGxvY2tGb3JXcml0ZShSZXNvdXJj
ZUlkKTsKLSAgICB2b2lkIHVubG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOwotCi0gICAgLy8gR2V0
cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRoZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUg
cmVuZGVyZWQgd2l0aC4KLSAgICB1bnNpZ25lZCBsb2NrRm9yUmVhZChSZXNvdXJjZUlkKTsKLSAg
ICB2b2lkIHVubG9ja0ZvclJlYWQoUmVzb3VyY2VJZCk7Ci0KLSAgICBDQ0dyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OwotICAgIFJlc291cmNlSWQgbV9uZXh0SWQ7Ci0gICAgUmVzb3VyY2VNYXAg
bV9yZXNvdXJjZXM7Ci0KLSAgICBib29sIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7Ci0gICAgYm9v
bCBtX3VzZVRleHR1cmVVc2FnZUhpbnQ7Ci0gICAgT3duUHRyPExheWVyVGV4dHVyZVN1YkltYWdl
PiBtX3RleFN1YkltYWdlOwotICAgIGludCBtX21heFRleHR1cmVTaXplOwotfTsKLQotY2xhc3Mg
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQpOwotcHVibGljOgotICAgIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yUmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3Vy
Y2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNv
dXJjZUlkKQotICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JS
ZWFkKHJlc291cmNlSWQpKSB7IH0KLQotICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQo
KQotICAgIHsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JSZWFkKG1fcmVz
b3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1f
cmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9y
ZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotY2xhc3MgQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSk7Ci1wdWJsaWM6Ci0gICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JXcml0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQotICAgICAgICA6IG1fcmVzb3VyY2VQ
cm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQotICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJj
ZUlkKQotICAgICAgICAsIG1fdGV4dHVyZUlkKHJlc291cmNlUHJvdmlkZXItPmxvY2tGb3JXcml0
ZShyZXNvdXJjZUlkKSkgeyB9Ci0KLSAgICB+Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSgp
Ci0gICAgewotICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvcldyaXRlKG1fcmVz
b3VyY2VJZCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlSWQ7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1f
cmVzb3VyY2VQcm92aWRlcjsKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9y
ZXNvdXJjZUlkOwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NvcGVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCmluZGV4IDIxZWY5OWE2NTQ1MjI5MmExZjMw
MGE2Y2M1NTZmNmJlMGIwYmIwMWQuLmI5Zjc1ZDE4NGMzYTY4MDFmYmJlOGZkZmJhNDFlNDMzNjhm
YTMzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcApAQCAtMjYsMTIgKzI2LDE0
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgi
CiAKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ0NTY29wZWRUZXh0dXJlOjpDQ1Njb3BlZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyKQotICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlk
ZXIpCitDQ1Njb3BlZFRleHR1cmU6OkNDU2NvcGVkVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCisgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCiB7Ci0gICAgQVNTRVJUKG1f
cmVzb3VyY2VQcm92aWRlcik7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAogQ0NTY29w
ZWRUZXh0dXJlOjp+Q0NTY29wZWRUZXh0dXJlKCkKQEAgLTM5LDEzICs0MSwxMyBAQCBDQ1Njb3Bl
ZFRleHR1cmU6On5DQ1Njb3BlZFRleHR1cmUoKQogICAgIGZyZWUoKTsKIH0KIAotYm9vbCBDQ1Nj
b3BlZFRleHR1cmU6OmFsbG9jYXRlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNE
ZW51bSBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCBoaW50KQor
Ym9vbCBDQ1Njb3BlZFRleHR1cmU6OmFsbG9jYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0Rl
bnVtIGZvcm1hdCkKIHsKICAgICBBU1NFUlQoIWlkKCkpOwogICAgIEFTU0VSVCghc2l6ZS5pc0Vt
cHR5KCkpOwogCiAgICAgc2V0RGltZW5zaW9ucyhzaXplLCBmb3JtYXQpOwotICAgIHNldElkKG1f
cmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBoaW50
KSk7CisgICAgc2V0SWQobV9hbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KSk7
CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9hbGxvY2F0ZVRocmVhZElkZW50aWZpZXIg
PSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKQEAgLTU4LDcgKzYwLDcgQEAgdm9pZCBDQ1Njb3BlZFRl
eHR1cmU6OmZyZWUoKQogewogICAgIGlmIChpZCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2FsbG9j
YXRlVGhyZWFkSWRlbnRpZmllciA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoaWQoKSk7CisgICAgICAgIG1fYWxsb2Nh
dG9yLT5kZWxldGVUZXh0dXJlKGlkKCksIHNpemUoKSwgZm9ybWF0KCkpOwogICAgIH0KICAgICBz
ZXRJZCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKaW5kZXggNzM0NDIwZTkwYmVj
MDQ0OGIzNWQzNDcxNjBkMDk3NDBlMTM0N2QwZS4uOWY3MjQxZjUxN2Y0YTQwZWRiMmFjOGM0MThh
ZjhiNzExZmU0ZDAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgQ0NTY29wZWRUZXh0dXJlX2gKICNkZWZpbmUgQ0NTY29wZWRUZXh0dXJl
X2gKIAorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1
cmUuaCIKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM0LDEwICszNSwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKwogY2xhc3MgQ0NTY29wZWRUZXh0dXJlIDogcHJvdGVjdGVkIEND
VGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRUZXh0dXJlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IGNyZWF0ZShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1Njb3BlZFRleHR1cmUocmVzb3VyY2VQcm92aWRlcikpOyB9CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NTY29wZWRUZXh0dXJlPiBjcmVhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NTY29wZWRUZXh0dXJlKGFsbG9jYXRvcikpOyB9CiAgICAg
dmlydHVhbCB+Q0NTY29wZWRUZXh0dXJlKCk7CiAKICAgICB1c2luZyBDQ1RleHR1cmU6OmlkOwpA
QCAtNDUsMTUgKzQ3LDE1IEBAIHB1YmxpYzoKICAgICB1c2luZyBDQ1RleHR1cmU6OmZvcm1hdDsK
ICAgICB1c2luZyBDQ1RleHR1cmU6OmJ5dGVzOwogCi0gICAgYm9vbCBhbGxvY2F0ZShpbnQgcG9v
bCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpU
ZXh0dXJlVXNhZ2VIaW50KTsKKyAgICBib29sIGFsbG9jYXRlKGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSBmb3JtYXQpOwogICAgIHZvaWQgZnJlZSgpOwogICAgIHZvaWQgbGVhaygpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQ0NTY29wZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciop
OworICAgIGV4cGxpY2l0IENDU2NvcGVkVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7CiAKIHBy
aXZhdGU6Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAg
VGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX2FsbG9jYXRlVGhyZWFkSWRlbnRpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA2NTBlNzUxZjhjODk0ZWZmNTYx
YzRlZjdjYzE3ZGIwMWNlOTRjYmQzLi5mMzhmYmRhMDFmNjZlMzgwNjFkMTA2ZmJjMGJjMWMwNDM2
MjgwMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC00
NSw5ICs0NSw5IEBAIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhckxheWVySW1wbChp
bnQgaWQpCiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fc2Nyb2xsTGF5ZXIoMCkKICAg
ICAsIG1fc2Nyb2xsYmFyKHRoaXMpCi0gICAgLCBtX2JhY2tUcmFja1Jlc291cmNlSWQoMCkKLSAg
ICAsIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCgwKQotICAgICwgbV90aHVtYlJlc291cmNlSWQoMCkK
KyAgICAsIG1fYmFja1RyYWNrVGV4dHVyZUlkKDApCisgICAgLCBtX2ZvcmVUcmFja1RleHR1cmVJ
ZCgwKQorICAgICwgbV90aHVtYlRleHR1cmVJZCgwKQogewogfQogCkBAIC03NiwyMyArNzYsMjMg
QEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWEKICAgICBJbnRSZWN0IHRodW1iUmVjdCwgYmFja1Ry
YWNrUmVjdCwgZm9yZVRyYWNrUmVjdDsKICAgICB0aGVtZS0+c3BsaXRUcmFjaygmbV9zY3JvbGxi
YXIsIHRoZW1lLT50cmFja1JlY3QoJm1fc2Nyb2xsYmFyKSwgYmFja1RyYWNrUmVjdCwgdGh1bWJS
ZWN0LCBmb3JlVHJhY2tSZWN0KTsKIAotICAgIGlmIChtX3RodW1iUmVzb3VyY2VJZCAmJiB0aGVt
ZS0+aGFzVGh1bWIoJm1fc2Nyb2xsYmFyKSAmJiAhdGh1bWJSZWN0LmlzRW1wdHkoKSkgewotICAg
ICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGh1bWJSZWN0LCBtX3RodW1iUmVzb3VyY2VJZCwgcHJl
bXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CisgICAgaWYgKG1fdGh1bWJUZXh0dXJl
SWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9sbGJhcikgJiYgIXRodW1iUmVjdC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJl
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRodW1iUmVjdCwgbV90aHVtYlRleHR1
cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWQt
PnNldE5lZWRzQmxlbmRpbmcoKTsKICAgICAgICAgcXVhZExpc3QuYXBwZW5kKHF1YWQucmVsZWFz
ZSgpKTsKICAgICB9CiAKLSAgICBpZiAoIW1fYmFja1RyYWNrUmVzb3VyY2VJZCkKKyAgICBpZiAo
IW1fYmFja1RyYWNrVGV4dHVyZUlkKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBvbmx5
IHBhaW50IHRoZSB0cmFjayBpbiB0d28gcGFydHMgaWYgd2Ugd2VyZSBnaXZlbiBhIHRleHR1cmUg
Zm9yIHRoZSBmb3J3YXJkIHRyYWNrIHBhcnQuCi0gICAgaWYgKG1fZm9yZVRyYWNrUmVzb3VyY2VJ
ZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZm9yZVRyYWNrUmVjdCwg
bV9mb3JlVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRy
YWNrUmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpKTsKKyAgICBpZiAobV9mb3JlVHJhY2tUZXh0
dXJlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNFbXB0eSgpKQorICAgICAgICBxdWFkTGlzdC5hcHBl
bmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGZvcmVUcmFja1Jl
Y3QsIG1fZm9yZVRyYWNrVGV4dHVyZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9y
ZVRyYWNrUmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpKTsKIAogICAgIC8vIE9yZGVyIG1hdHRl
cnMgaGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0
aGUgZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVt
YiBhbmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNv
bnRhaW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25zLgogICAgIGlmICghYm91bmRzUmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgYm91bmRzUmVjdCwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBw
cmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAgIHF1YWRMaXN0LmFw
cGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgYm91bmRzUmVj
dCwgbV9iYWNrVHJhY2tUZXh0dXJlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBw
ZWQpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAppbmRleCAz
MmE4MzVkOTAyYWM1YzM4MWNjMDIzZTQyZGYyODA3ZmU4NDA3MDUxLi5lY2UyYjk1NzE0MTRiZjQy
NTZmZGI0ZWU0ZmQ1ZWExYzdjMDQ2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmgKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKLSAgICB2b2lkIHNldEJh
Y2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1f
YmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9Ci0gICAgdm9pZCBzZXRGb3JlVHJhY2tSZXNvdXJj
ZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX2ZvcmVUcmFja1Jlc291
cmNlSWQgPSBpZDsgfQotICAgIHZvaWQgc2V0VGh1bWJSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX3RodW1iUmVzb3VyY2VJZCA9IGlkOyB9CisgICAgdm9p
ZCBzZXRCYWNrVHJhY2tUZXh0dXJlSWQodW5zaWduZWQgaWQpIHsgbV9iYWNrVHJhY2tUZXh0dXJl
SWQgPSBpZDsgfQorICAgIHZvaWQgc2V0Rm9yZVRyYWNrVGV4dHVyZUlkKHVuc2lnbmVkIGlkKSB7
IG1fZm9yZVRyYWNrVGV4dHVyZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldFRodW1iVGV4dHVyZUlk
KHVuc2lnbmVkIGlkKSB7IG1fdGh1bWJUZXh0dXJlSWQgPSBpZDsgfQogCiAgICAgQ0NMYXllcklt
cGwqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQogICAgIHZv
aWQgc2V0U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5
ZXIgPSBzY3JvbGxMYXllcjsgfQpAQCAtMTI0LDkgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgfTsK
ICAgICBDQ1Njcm9sbGJhciBtX3Njcm9sbGJhcjsKIAotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtX2JhY2tUcmFja1Jlc291cmNlSWQ7Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIG1fZm9yZVRyYWNrUmVzb3VyY2VJZDsKLSAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgbV90aHVtYlJlc291cmNlSWQ7CisgICAgdW5zaWduZWQgbV9iYWNrVHJh
Y2tUZXh0dXJlSWQ7CisgICAgdW5zaWduZWQgbV9mb3JlVHJhY2tUZXh0dXJlSWQ7CisgICAgdW5z
aWduZWQgbV90aHVtYlRleHR1cmVJZDsKIAogICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZTsKICAgICBWZWN0b3I8SW50UmVjdD4gbV90aWNrbWFya3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDAwMmM3YTdiZmFlYTUw
NWQ0ZDQ0ZTc1YzZlMzdhZWY3MDFkNmRjNDIuLjY3OGVmZGZmMGEzNThhMmQyOWZiMmE4N2E3ODJk
NTdiZjdlMzY3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHQoKQogICAgIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50
c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlk
ZXIoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSk7CiAgICAgICAgIGluaXRpYWxpemVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwog
ICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogICAgICAgICAvLyBo
ZXJlIGFzIHRoZSB0aHJvdHRsZWQgdXBsb2FkZXIgaXNuJ3QgdXNlZCBpbiBzaW5nbGUgdGhyZWFk
IG1vZGUuCiAgICAgICAgIC8vIEZvciBjb3JyZWN0bmVzcywgbG9vcCB1bnRpbCBubyBtb3JlIHVw
ZGF0ZXMgYXJlIHBlbmRpbmcuCiAgICAgICAgIHdoaWxlICh1cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpCi0gICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4
dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1
cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CisgICAgICAgICAgICB1
cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBs
LT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgbWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCkpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAKICAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpKQotICAgICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLmNsZWFyKCk7CiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZS5oCmluZGV4IGQzZTRiOGY3ZTgzODc1YmE1NjQzM2YyN2E3ZWMxM2Y3MDY4ZTliNjguLjBkNWQ5
Zjc2ODNlNTY5ZWM2ZGI0NzgyZDY4NzE5YWFlOGEzZDk3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJjYy9DQ1RleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsMTEgKzQw
LDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAgICAgLCBtX2Zvcm1h
dChmb3JtYXQpIHsgfQogCi0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHVuc2lnbmVkIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogCi0g
ICAgdm9pZCBzZXRJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQpIHsgbV9pZCA9
IGlkOyB9CisgICAgdm9pZCBzZXRJZCh1bnNpZ25lZCBpZCkgeyBtX2lkID0gaWQ7IH0KICAgICB2
b2lkIHNldERpbWVuc2lvbnMoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAKICAg
ICBzaXplX3QgYnl0ZXMoKSBjb25zdDsKQEAgLTUzLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzaXplX3QgbWVtb3J5U2l6ZUJ5dGVzKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3Jt
YXQpOwogCiBwcml2YXRlOgotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2lk
OworICAgIHVuc2lnbmVkIG1faWQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgR0MzRGVudW0g
bV9mb3JtYXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKaW5kZXgg
NmZjOTE5OTYyMDAzMmY1MzIyZmU1YzJmOTFmZDZhOGM3MjAyNTU4OC4uNmRmMmZiNmJkNjRjNmQz
NjllMDg5YzcxMTE2MWNmOGIxYWFlNzkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAj
aW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJlci5oIgog
I2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM5LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0NUZXh0dXJlTGF5ZXJJbXBs
OjpDQ1RleHR1cmVMYXllckltcGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAg
LCBtX3RleHR1cmVJZCgwKQotICAgICwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSgwKQogICAg
ICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEodHJ1ZSkKICAgICAsIG1fZmxpcHBlZCh0cnVlKQogICAg
ICwgbV91dlJlY3QoMCwgMCwgMSwgMSkKQEAgLTUwLDI4ICs0OCwxMCBAQCBDQ1RleHR1cmVMYXll
ckltcGw6On5DQ1RleHR1cmVMYXllckltcGwoKQogewogfQogCi12b2lkIENDVGV4dHVyZUxheWVy
SW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQotewot
ICAgIEFTU0VSVCghbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7Ci0gICAgbV9leHRlcm5hbFRl
eHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJvbUV4dGVy
bmFsVGV4dHVyZShtX3RleHR1cmVJZCk7Ci19Ci0KIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKLSAgICBBU1NFUlQobV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSk7CiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91
bmRzKCkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UsIG1fcHJl
bXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7Ci19Ci0KLXZvaWQgQ0NUZXh0
dXJlTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikKLXsKLSAgICBBU1NFUlQobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7Ci0gICAgLy8gRklY
TUU6IHRoZSBmb2xsb3dpbmcgYXNzZXJ0IHdpbGwgbm90IGJlIHRydWUgd2hlbiBzZW5kaW5nIHJl
c291cmNlcyB0byBhCi0gICAgLy8gcGFyZW50IGNvbXBvc2l0b3IuIEEgc3luY2hyb25pemF0aW9u
IHNjaGVtZSAoZG91YmxlLWJ1ZmZlcmluZyBvcgotICAgIC8vIHBpcGVsaW5pbmcgb2YgdXBkYXRl
cykgZm9yIHRoZSBjbGllbnQgd2lsbCBuZWVkIHRvIGV4aXN0IHRvIHNvbHZlIHRoaXMuCi0gICAg
QVNTRVJUKCFyZXNvdXJjZVByb3ZpZGVyLT5pblVzZUJ5Q29uc3VtZXIobV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSkpOwotICAgIHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKG1fZXh0
ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwotICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSAw
OworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91
dlJlY3QsIG1fZmxpcHBlZCkpOwogfQogCiB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZHVtcExh
eWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggZTc0OGIwMTMwOGE4ZWRiOTYyYTM4Zjk1NGRh
MGQxYmRmOTY3OTM0MC4uNGFiZGI1MWZmOTI5OTM5MzE4MDk5Y2ZkYzhhMGRkNTFmZmU2ZmNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTM4LDkgKzM4LDcgQEAgcHVi
bGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RleHR1cmVMYXllckltcGwoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKQEAgLTU4LDcgKzU2LDYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gIlRleHR1cmVMYXllciI7IH0KIAogICAgIHVuc2lnbmVkIG1fdGV4dHVy
ZUlkOwotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlOwogICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CiAgICAgYm9vbCBtX2Zs
aXBwZWQ7CiAgICAgRmxvYXRSZWN0IG1fdXZSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcAppbmRleCA5NjdhZDVlM2ZkNWI3NDFmNmQzMzBjYzU5ZWRmZTgwOTM4YzIzMzgzLi5i
YzFlZDc1YWY5YWY1MGQ5NjRiNzQ3MzE0MzM3ZmU5YzRlYzFmZTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcApAQCAtODUsNyArODUsNyBAQCBib29sIENDVGV4dHVyZVVwZGF0
ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9mdWxsRW50cmllcy5zaXpl
KCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCk7CiB9
CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVw
bG9hZGVyLCBzaXplX3QgY291bnQpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0
dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3Vu
dCkKIHsKICAgICBzaXplX3QgaW5kZXg7CiAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIs
IFRleHR1cmVDb3BpZQogICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4
ICsgY291bnQsIG1fZnVsbEVudHJpZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChpbmRleCA9IG1f
ZW50cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRleCkgewogICAgICAgICAgICAgVXBk
YXRlRW50cnkmIGVudHJ5ID0gbV9mdWxsRW50cmllc1tpbmRleF07Ci0gICAgICAgICAgICB1cGxv
YWRlci0+dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVByb3ZpZGVyLCBlbnRy
eS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgICAgICB1cGxvYWRlci0+dXBs
b2FkVGV4dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJj
ZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKICAgICAgICAgICAgIGZ1bGxVcGxvYWRDb3VudCsrOwog
ICAgICAgICAgICAgaWYgKCEoZnVsbFVwbG9hZENvdW50ICUga1VwbG9hZEZsdXNoUGVyaW9kKSkK
LSAgICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZsdXNoKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlcmUgYXJlIG5vIGRhbmdsaW5nIHVwbG9hZHMgd2l0aG91dCBhIGZsdXNoLgogICAgICAgICBp
ZiAoZnVsbFVwbG9hZENvdW50ICUga1VwbG9hZEZsdXNoUGVyaW9kKQotICAgICAgICAgICAgcmVz
b3VyY2VQcm92aWRlci0+Zmx1c2goKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CiAK
ICAgICAgICAgYm9vbCBtb3JlVXBsb2FkcyA9IG1heEluZGV4IDwgbV9mdWxsRW50cmllcy5zaXpl
KCk7CiAKQEAgLTEyNSwzMCArMTI1LDM0IEBAIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVyZUNvcGllCiAKICAg
ICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJp
ZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnkudGV4
dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3Qp
OworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4
dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAgICAg
ICAgICAgICBpZiAoISgoaW5kZXgrMSkgJSBrVXBsb2FkRmx1c2hQZXJpb2QpKQotICAgICAgICAg
ICAgICAgIHJlc291cmNlUHJvdmlkZXItPmZsdXNoKCk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+Zmx1c2goKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUg
bm8gZGFuZ2xpbmcgcGFydGlhbCB1cGxvYWRzIHdpdGhvdXQgYSBmbHVzaC4KICAgICAgICAgLy8g
Tm90ZTogV2UgZG9uJ3QgbmVlZCB0byB1c2UgKGluZGV4KzEpIGluIHRoaXMgY2FzZSBiZWNhdXNl
IGluZGV4IHdhcwogICAgICAgICAvLyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBmb3Ig
bG9vcC4KICAgICAgICAgaWYgKGluZGV4ICUga1VwbG9hZEZsdXNoUGVyaW9kKQotICAgICAgICAg
ICAgcmVzb3VyY2VQcm92aWRlci0+Zmx1c2goKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZsdXNo
KCk7CiAKICAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKICAgICB9CiAKICAgICBmb3Ig
KGluZGV4ID0gMDsgaW5kZXggPCBtX2NvcHlFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICBDb3B5RW50cnkmIGNvcHlFbnRyeSA9IG1fY29weUVudHJpZXNbaW5kZXhdOwotICAgICAg
ICBjb3BpZXItPmNvcHlUZXh0dXJlKGNvcHlFbnRyeS5zb3VyY2VUZXh0dXJlLCBjb3B5RW50cnku
ZGVzdFRleHR1cmUsIGNvcHlFbnRyeS5zaXplKTsKKyAgICAgICAgY29waWVyLT5jb3B5VGV4dHVy
ZShjb250ZXh0LCBjb3B5RW50cnkuc291cmNlVGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJl
LCBjb3B5RW50cnkuc2l6ZSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFu
eSB0ZXh0dXJlIGNvcGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhl
IGNvbXBvc2l0b3IgY29udGV4dAogICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVh
ZCBwcm9jZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJl
IG9mIG9uZSBvZgogICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCi0gICAgaWYgKG1fY29weUVu
dHJpZXMuc2l6ZSgpKQotICAgICAgICBjb3BpZXItPmZsdXNoKCk7CisgICAgaWYgKG1fY29weUVu
dHJpZXMuc2l6ZSgpKSB7CisgICAgICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAgICBpZiAoY29udGV4dDNkKQor
ICAgICAgICAgICAgY29udGV4dDNkLT5mbHVzaCgpOworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgfQogCiAgICAgLy8g
SWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAgY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NzJhMWMwZWM3ZTQ4MTIxMzgxZDRl
NGZlNmM5OTA3MGE5NGI4MjU2Li44YTQzNzk0MmI0YjA0MjJlMDUwOWMxNDg2NTFkYjMwYjFiYWM5
MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyOworY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlVXBs
b2FkZXI7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTW9yZVVwZGF0
ZXMoKSBjb25zdDsKIAogICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLgotICAgIHZvaWQgdXBk
YXRlKENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIq
LCBzaXplX3QgY291bnQpOworICAgIHZvaWQgdXBkYXRlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4
dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBzaXplX3Qg
Y291bnQpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDQ0NTA3YzZmM2M2N2Y3NGRkMWM0OGY0ODkxNGVmYjdmMDA5ZWI4MzUuLjk5NzNhOTc0
YjE1NjdiYjY2ODMxMjYwMzZlY2Q0MDQzMWYwMTFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsKICAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCkt
PnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50
ZXh0dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CisgICAgbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
LCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwg
bV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwg
dGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uQ29tbWl0KCkKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpbwogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9z
dENsb3NlZE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNl
TGFzdENvbW1pdCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4
dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigp
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBs
VGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsK
ICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVhcigpOwpA
QCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDCiB7CiAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQi
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0
dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7CiAgICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRQdHIoY29udGV4dFB0ciksIHRleHR1cmVVcGxv
YWRlcik7CiAgICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0
aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCBjOWU5YjIyNjRiOThkNzhhM2Yw
ZjQ4NTU1YmY3N2Y4MDgxMDM2YmRlLi5kYTlhMTBhOTlkOGM3YmYyMmQ4N2M4NDdiOTU3ZjIzNTBm
NWQzZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTksMTMgKzU5
LDEzIEBAIGNsYXNzIERyYXdhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGls
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2FibGVUaWxlPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgRHJhd2FibGVUaWxlKCkpOyB9CiAKLSAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VJZDsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgcmVzb3VyY2VJZCkgeyBtX3Jlc291cmNlSWQgPSByZXNvdXJjZUlkOyB9CisgICAg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsg
fQorICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7IG1f
dGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd2FibGVUaWxlKCkg
OiBtX3Jlc291cmNlSWQoMCkgeyB9CisgICAgRHJhd2FibGVUaWxlKCkgOiBtX3RleHR1cmVJZCgw
KSB7IH0KIAotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7
CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKIH07CiAKIENDVGlsZWRMYXllcklt
cGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtNzksNyArNzksNyBAQCBDQ1RpbGVkTGF5
ZXJJbXBsOjp+Q0NUaWxlZExheWVySW1wbCgpCiB7CiB9CiAKLUNDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBDQ1RpbGVkTGF5ZXJJbXBsOjpjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdAor
dW5zaWduZWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVudHNUZXh0dXJlSWQoKSBjb25zdAogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB2YWxpZCBmb3Igc2luZ2xlIHRleHR1cmUgbGF5
ZXJzLCBlLmcuIG1hc2tzLgogICAgIEFTU0VSVChtX3RpbGVyKTsKQEAgLTg3LDEwICs4NywxMCBA
QCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVu
dHNSZXNvdXJjZUlkKCkgY29uc3QKICAgICBBU1NFUlQobV90aWxlci0+bnVtVGlsZXNZKCkgPT0g
MSk7CiAKICAgICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoMCwgMCk7Ci0gICAgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSB0aWxlID8gdGlsZS0+cmVzb3Vy
Y2VJZCgpIDogMDsKLSAgICBBU1NFUlQocmVzb3VyY2VJZCk7CisgICAgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQgPSB0aWxlID8gdGlsZS0+dGV4dHVyZUlkKCkgOiAwOworICAgIEFTU0VSVCh0
ZXh0dXJlSWQpOwogCi0gICAgcmV0dXJuIHJlc291cmNlSWQ7CisgICAgcmV0dXJuIHRleHR1cmVJ
ZDsKIH0KIAogdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgQ0NU
aWxlZExheWVySW1wbDo6aGFzVGlsZUF0KGludCBpLCBpbnQgaikgY29uc3QKIAogYm9vbCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpoYXNUZXh0dXJlSWRGb3JUaWxlQXQoaW50IGksIGludCBqKSBjb25zdAog
ewotICAgIHJldHVybiBoYXNUaWxlQXQoaSwgaikgJiYgdGlsZUF0KGksIGopLT5yZXNvdXJjZUlk
KCk7CisgICAgcmV0dXJuIGhhc1RpbGVBdChpLCBqKSAmJiB0aWxlQXQoaSwgaiktPnRleHR1cmVJ
ZCgpOwogfQogCiBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OnRpbGVBdChpbnQgaSwg
aW50IGopIGNvbnN0CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEK
ICAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhp
LCBqKTsKICAgICAgICAgICAgICAgICBTa0NvbG9yIGJvcmRlckNvbG9yOwogCi0gICAgICAgICAg
ICAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0aWxlLT5yZXNvdXJjZUlkKCkpCisg
ICAgICAgICAgICAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0aWxlLT50ZXh0dXJl
SWQoKSkKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihk
ZWJ1Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwg
ZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNz
aW5nVGlsZUNvbG9yQmx1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBk
ZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdU
aWxlQm9yZGVyQ29sb3JCbHVlKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIENDVGlsZWRMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YQogICAgICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5yZXNvdXJj
ZUlkKCkpIHsKKyAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcygpKQog
ICAgICAgICAgICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVhZExpc3QuYXBwZW5kKEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0KSk7
CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ0NUaWxlZExh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+
bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IHRl
eHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1
YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGls
ZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQs
IHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdl
QUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOworICAgICAgICAgICAg
cXVhZExpc3QuYXBwZW5kKENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0
aWxlUmVjdCwgdGlsZU9wYXF1ZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0
LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRn
ZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTIwNCwxMiArMjA0LDEyIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0
VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpCiAgICAgKm1fdGlsZXIg
PSB0aWxlcjsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMo
aW50IGksIGludCBqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCwg
Y29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRp
bGVQcm9wZXJ0aWVzKGludCBpLCBpbnQgaiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBq
KTsKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAg
IHRpbGUtPnNldFJlc291cmNlSWQocmVzb3VyY2VJZCk7CisgICAgdGlsZS0+c2V0VGV4dHVyZUlk
KHRleHR1cmVJZCk7CiAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFxdWVSZWN0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IDg3MWQ0ZTdkMTZhMTQ3YWU4YjQxNDI1
NDBmMTdhYTRjYjgzMGE4Y2YuLjQwNTJmZTk3Y2VjMjMzNThkY2Y4OTcyYzQ1ZWUzYjZkNDFhNzM3
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNv
dXJjZUlkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50c1Rl
eHR1cmVJZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dm9pZCBzZXRTa2lwc0RyYXcoYm9vbCBza2lwc0RyYXcpIHsgbV9za2lwc0RyYXcgPSBza2lwc0Ry
YXc7IH0KICAgICB2b2lkIHNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRp
bGVyKTsKLSAgICB2b2lkIHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKKyAgICB2b2lk
IHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29s
IGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxl
ZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dHNTd2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCBhZTUz
OGMyZTUzNjkzMzEyNDQ0Y2Q1MDllMjMxMjgzMWQ4NGEzOTVkLi5kNWExNTk5NjVhNDk3Yjg1NzYy
YmIzZGY0N2M1NWYyM2FlNzhlMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNw
cApAQCAtMzEsMTMgKzMxLDE2IEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiIC8vIEZvciBHTEMgbWFjcm8KKyNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJ
bWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgog
I2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgotI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92
aWRlci5oIgogI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFk
LmgiCkBAIC01MCw3ICs1Myw2IEBAIENDVmlkZW9MYXllckltcGw6OkNDVmlkZW9MYXllckltcGwo
aW50IGlkLCBXZWJLaXQ6OldlYlZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkCiAgICAgOiBDQ0xh
eWVySW1wbChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX2ZyYW1lKDAp
Ci0gICAgLCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKDApCiB7CiAgICAgLy8gVGhpcyBtYXRy
aXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9yIHN0cmVhbSB0ZXh0dXJlcywgYW5k
IGZsaXBzIG9uIHRoZSBZIGF4aXMuCiAgICAgbV9zdHJlYW1UZXh0dXJlTWF0cml4ID0gV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKQEAgLTc1LDEyICs3NywxMSBAQCBDQ1ZpZGVvTGF5
ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1wbCgpCiAgICAgICAgIG1fcHJvdmlkZXItPnNldFZpZGVv
RnJhbWVQcm92aWRlckNsaWVudCgwKTsKICAgICAgICAgbV9wcm92aWRlciA9IDA7CiAgICAgfQot
ICAgIGZyZWVQbGFuZURhdGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+cmVzb3VyY2VQcm92aWRlcigp
KTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhvc3RJbXBsKCktPmNvbnRleHQoKSk7CiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktp
dDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAgIEFTU0VSVCghbV9mcmFt
ZVBsYW5lc1tpXS5yZXNvdXJjZUlkKTsKLSAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0dXJlUmVz
b3VyY2UpOworICAgICAgICBBU1NFUlQoIW1fZnJhbWVQbGFuZXNbaV0udGV4dHVyZUlkKTsKICNl
bmRpZgogfQogCkBAIC0xMTEsMTAgKzExMiwxMCBAQCBzdGF0aWMgR0MzRGVudW0gY29udmVydFZG
Q0Zvcm1hdFRvR0MzREZvcm1hdChjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lKQog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRTsKIH0KIAotdm9pZCBD
Q1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVy
UmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQ0NMYXllckltcGw6OndpbGxEcmF3KHJlc291cmNl
UHJvdmlkZXIpOworICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyLCBjb250
ZXh0KTsKIAogICAgIC8vIEV4cGxpY2l0bHkgbG9jayBhbmQgdW5sb2NrIHRoZSBwcm92aWRlciBt
dXRleCBzbyBpdCBjYW4gYmUgaGVsZCBmcm9tCiAgICAgLy8gd2lsbERyYXcgdG8gZGlkRHJhdy4g
U2luY2UgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YKQEAgLTEyNSwx
NyArMTI2LDE2IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIC8vIGxvY2sgc2hvdWxkIG5vdCBjYXVzZSBh
IGRlYWRsb2NrLgogICAgIG1fcHJvdmlkZXJNdXRleC5sb2NrKCk7CiAKLSAgICB3aWxsRHJhd0lu
dGVybmFsKHJlc291cmNlUHJvdmlkZXIpOwotICAgIGZyZWVVbnVzZWRQbGFuZURhdGEocmVzb3Vy
Y2VQcm92aWRlcik7CisgICAgd2lsbERyYXdJbnRlcm5hbChsYXllclJlbmRlcmVyLCBjb250ZXh0
KTsKKyAgICBmcmVlVW51c2VkUGxhbmVEYXRhKGNvbnRleHQpOwogCiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICBtX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xh
eWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJl
ciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0
dXJlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX3Byb3ZpZGVyKSB7CiAgICAgICAgIG1fZnJhbWUg
PSAwOwpAQCAtMTYxLDIwICsxNjEsMTcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJh
d0ludGVybmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghYWxsb2NhdGVQbGFuZURhdGEocmVzb3VyY2VQcm92
aWRlcikpIHsKKyAgICBpZiAoIWFsbG9jYXRlUGxhbmVEYXRhKGxheWVyUmVuZGVyZXIsIGNvbnRl
eHQpKSB7CiAgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsKICAg
ICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNv
cHlQbGFuZURhdGEocmVzb3VyY2VQcm92aWRlcikpIHsKKyAgICBpZiAoIWNvcHlQbGFuZURhdGEo
bGF5ZXJSZW5kZXJlciwgY29udGV4dCkpIHsKICAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVu
dEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQotICAgIGlmIChtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCkKLSAgICAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXIt
PmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7
CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBx
dWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYp
CkBAIC0yMDcsNyArMjA0LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgYm9v
bCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAs
IDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpOwogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsK
LSAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVy
ZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUucmVzb3Vy
Y2VJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOworICAgICAgICBPd25Q
dHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBwbGFuZS50ZXh0dXJlSWQsIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZExpc3QuYXBwZW5kKHRl
eHR1cmVRdWFkLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIyMiw3ICsy
MTksNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogI2Vsc2UKICAgICAgICAgYm9vbCBmbGlw
cGVkID0gZmFsc2U7IC8vIExpYlZBIChjcm9zL2ludGVsKSwgTWFjT1MuCiAjZW5kaWYKLSAgICAg
ICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVS
ZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOworICAgICAgICBP
d25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2ZyYW1lLT50ZXh0dXJlSWQoKSwg
cHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAgICBxdWFkTGlzdC5h
cHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MjQzLDI0ICsyNDAsMTQgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICB9CiB9CiAKLXZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQ0NMYXllckltcGw6OmRpZERyYXcocmVz
b3VyY2VQcm92aWRlcik7CisgICAgQ0NMYXllckltcGw6OmRpZERyYXcoKTsKIAogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJEKSB7Ci0gICAgICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKTsKLSAgICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgYXNzZXJ0IHdpbGwg
bm90IGJlIHRydWUgd2hlbiBzZW5kaW5nIHJlc291cmNlcyB0byBhCi0gICAgICAgIC8vIHBhcmVu
dCBjb21wb3NpdG9yLiBXZSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaG9sZCBvbiB0byBtX2ZyYW1l
IGZvcgotICAgICAgICAvLyBsb25nZXIsIGFuZCBoYXZlIHNldmVyYWwgImN1cnJlbnQgZnJhbWVz
IiBpbiB0aGUgcGlwZWxpbmUuCi0gICAgICAgIEFTU0VSVCghcmVzb3VyY2VQcm92aWRlci0+aW5V
c2VCeUNvbnN1bWVyKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpKTsKLSAgICAgICAgcmVzb3Vy
Y2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7Ci0g
ICAgICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSAwOwotICAgIH0KLQogICAgIG1fcHJv
dmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsKICAgICBtX2ZyYW1lID0gMDsKIApAQCAt
MzAzLDI3ICsyOTAsNDUgQEAgSW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21wdXRlVmlzaWJs
ZVNpemUoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gSW50
U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIpCitib29sIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRl
RGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAocmVzb3VyY2VJZCkK
KyAgICBpZiAodGV4dHVyZUlkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlc291cmNl
SWQgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShDQ1JlbmRlcmVyOjpJbXBsUG9v
bCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7Ci0g
ICAgcmV0dXJuIHJlc291cmNlSWQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M0QpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdMQyhjb250ZXh0M0QsIHRleHR1cmVJZCA9IGNv
bnRleHQzRC0+Y3JlYXRlVGV4dHVyZSgpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsK
KyAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KKyAgICBHTEMoY29u
dGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAvLyBO
UE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0
IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgorICAgIEdMQyhjb250ZXh0M0Qs
IGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xB
TVBfVE9fRURHRSkpOworICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworCisgICAgR0xD
KGNvbnRleHQzRCwgY29udGV4dDNELT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCkpOworCisgICAgcmV0dXJuIHRl
eHR1cmVJZDsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0
YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit2b2lkIENDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmU6OmZyZWVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ewotICAgIGlmICghcmVzb3VyY2VJZCkKKyAgICBpZiAoIXRleHR1cmVJZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UocmVzb3VyY2VJZCk7
Ci0gICAgcmVzb3VyY2VJZCA9IDA7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M0QpCisg
ICAgICAgIHJldHVybjsKKworICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+ZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlSWQpKTsKKyAgICB0ZXh0dXJlSWQgPSAwOwogfQogCi1ib29sIENDVmlkZW9M
YXllckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5k
ZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAg
aW50IG1heFRleHR1cmVTaXplID0gcmVzb3VyY2VQcm92aWRlci0+bWF4VGV4dHVyZVNpemUoKTsK
KyAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS5t
YXhUZXh0dXJlU2l6ZTsKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lSW5kZXggPSAwOyBwbGFuZUlu
ZGV4IDwgbV9mcmFtZS0+cGxhbmVzKCk7ICsrcGxhbmVJbmRleCkgewogICAgICAgICBDQ1ZpZGVv
TGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiBwbGFuZSA9IG1fZnJhbWVQbGFuZXNbcGxhbmVJbmRleF07
CiAKQEAgLTMzMywxMyArMzM4LDEzIEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQ
bGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChwbGFuZS5zaXplICE9IHJlcXVpcmVkVGV4
dHVyZVNpemUgfHwgcGxhbmUuZm9ybWF0ICE9IG1fZm9ybWF0KSB7Ci0gICAgICAgICAgICBwbGFu
ZS5mcmVlRGF0YShyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICAgICAgICAgIHBsYW5lLmZyZWVEYXRh
KGNvbnRleHQpOwogICAgICAgICAgICAgcGxhbmUuc2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNpemU7
CiAgICAgICAgICAgICBwbGFuZS5mb3JtYXQgPSBtX2Zvcm1hdDsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICghcGxhbmUucmVzb3VyY2VJZCkgewotICAgICAgICAgICAgaWYgKCFwbGFuZS5hbGxv
Y2F0ZURhdGEocmVzb3VyY2VQcm92aWRlcikpCisgICAgICAgIGlmICghcGxhbmUudGV4dHVyZUlk
KSB7CisgICAgICAgICAgICBpZiAoIXBsYW5lLmFsbG9jYXRlRGF0YShjb250ZXh0KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBwbGFuZS52aXNpYmxlU2l6ZSA9
IGNvbXB1dGVWaXNpYmxlU2l6ZSgqbV9mcmFtZSwgcGxhbmVJbmRleCk7CiAgICAgICAgIH0KQEAg
LTM0NywzMiArMzUyLDQyIEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURh
dGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxh
bmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQogewogICAgIHNpemVfdCBzb2Z0d2FyZVBsYW5lQ291bnQgPSBtX2ZyYW1lLT5wbGFuZXMo
KTsKICAgICBpZiAoIXNvZnR3YXJlUGxhbmVDb3VudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
KyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5j
b250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBMYXllclRleHR1cmVTdWJJbWFnZSB1cGxvYWRlcih0cnVl
KTsKICAgICBmb3IgKHNpemVfdCBzb2Z0d2FyZVBsYW5lSW5kZXggPSAwOyBzb2Z0d2FyZVBsYW5l
SW5kZXggPCBzb2Z0d2FyZVBsYW5lQ291bnQ7ICsrc29mdHdhcmVQbGFuZUluZGV4KSB7CiAgICAg
ICAgIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHBsYW5lID0gbV9mcmFtZVBsYW5lc1tz
b2Z0d2FyZVBsYW5lSW5kZXhdOwogICAgICAgICBjb25zdCB1aW50OF90KiBzb2Z0d2FyZVBsYW5l
UGl4ZWxzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZnJhbWUtPmRhdGEoc29mdHdh
cmVQbGFuZUluZGV4KSk7CiAgICAgICAgIEludFJlY3QgcGxhbmVSZWN0KEludFBvaW50KCksIHBs
YW5lLnNpemUpOwotICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQocGxhbmUucmVzb3Vy
Y2VJZCwgc29mdHdhcmVQbGFuZVBpeGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVj
dCk7CisKKyAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgcGxhbmUudGV4dHVyZUlkKTsKKyAgICAgICAgdXBsb2FkZXIuc2V0U3ViSW1h
Z2VTaXplKHBsYW5lLnNpemUpOworICAgICAgICB1cGxvYWRlci51cGxvYWQoc29mdHdhcmVQbGFu
ZVBpeGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVjdCwgcGxhbmUuZm9ybWF0LCBj
b250ZXh0KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVy
SW1wbDo6ZnJlZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIp
Cit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViVmlk
ZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURh
dGEocmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEo
Y29udGV4dCk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVVudXNlZFBsYW5lRGF0
YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit2b2lkIENDVmlkZW9MYXll
ckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgdW5zaWduZWQgZmlyc3RVbnVzZWRQbGFuZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wbGFu
ZXMoKSA6IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RVbnVzZWRQbGFuZTsgaSA8IFdl
YktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fZnJhbWVQbGFu
ZXNbaV0uZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CisgICAgICAgIG1fZnJhbWVQbGFuZXNb
aV0uZnJlZURhdGEoY29udGV4dCk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkUmVj
ZWl2ZUZyYW1lKCkKQEAgLTM5Miw3ICs0MDcsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmRp
ZFVwZGF0ZU1hdHJpeChjb25zdCBmbG9hdCBtYXRyaXhbMTZdKQogCiB2b2lkIENDVmlkZW9MYXll
ckltcGw6OmRpZExvc2VDb250ZXh0KCkKIHsKLSAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhv
c3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgZnJlZVBsYW5lRGF0YShsYXllclRy
ZWVIb3N0SW1wbCgpLT5jb250ZXh0KCkpOwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OnNl
dE5lZWRzUmVkcmF3KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRleCA0Y2Y3Y2Fi
Yjc2ZDkzY2VlODkyZjU0M2UyNWJjNDllOTgxNGViNGIzLi5jZDVkYjA5YmNkMDU2ZDkwM2I1ZjVj
N2JkMzIzODAzZDgzZjU3YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01
MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1w
bCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGlj
c0NvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkg
Y29uc3QgT1ZFUlJJREU7CiAKQEAgLTY4LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXROZWVkc1JlZHJhdygpOwogCiAgICAgc3RydWN0IEZyYW1lUGxhbmUgewotICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZDsKKyAgICAgICAgdW5zaWduZWQg
dGV4dHVyZUlkOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dDsKICAgICAgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZTsKIAotICAgICAgICBGcmFtZVBsYW5lKCkg
OiByZXNvdXJjZUlkKDApIHsgfQorICAgICAgICBGcmFtZVBsYW5lKCkgOiB0ZXh0dXJlSWQoMCkg
eyB9CiAKLSAgICAgICAgYm9vbCBhbGxvY2F0ZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0g
ICAgICAgIHZvaWQgZnJlZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgICAgIGJvb2wg
YWxsb2NhdGVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgIHZvaWQgZnJlZURhdGEo
Q0NHcmFwaGljc0NvbnRleHQqKTsKICAgICB9OwogCiBwcml2YXRlOgpAQCAtODUsMTEgKzg1LDEx
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEludFNpemUgY29tcHV0ZVZpc2libGVTaXplKGNvbnN0
IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYsIHVuc2lnbmVkIHBsYW5lKTsKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlZp
ZGVvTGF5ZXIiOyB9CiAKLSAgICB2b2lkIHdpbGxEcmF3SW50ZXJuYWwoQ0NSZXNvdXJjZVByb3Zp
ZGVyKik7Ci0gICAgYm9vbCBhbGxvY2F0ZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsK
LSAgICBib29sIGNvcHlQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdm9pZCBm
cmVlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOwotICAgIHZvaWQgZnJlZVVudXNlZFBs
YW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIHdpbGxEcmF3SW50ZXJuYWwo
Q0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgYm9vbCBhbGxvY2F0ZVBsYW5l
RGF0YShDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICBib29sIGNvcHlQbGFu
ZURhdGEoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBmcmVlUGxh
bmVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBmcmVlVW51c2VkUGxhbmVEYXRh
KENDR3JhcGhpY3NDb250ZXh0Kik7CiAKICAgICAvLyBHdWFyZHMgdGhlIGRlc3RydWN0aW9uIG9m
IG1fcHJvdmlkZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAgTXV0ZXggbV9w
cm92aWRlck11dGV4OwpAQCAtOTksNyArOTksNiBAQCBwcml2YXRlOgogCiAgICAgV2ViS2l0OjpX
ZWJWaWRlb0ZyYW1lKiBtX2ZyYW1lOwogICAgIEdDM0RlbnVtIG1fZm9ybWF0OwotICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlOwogCiAg
ICAgLy8gRWFjaCBpbmRleCBpbiB0aGlzIGFycmF5IGNvcnJlc3BvbmRzIHRvIGEgcGxhbmUgaW4g
V2ViS2l0OjpXZWJWaWRlb0ZyYW1lLgogICAgIEZyYW1lUGxhbmUgbV9mcmFtZVBsYW5lc1tXZWJL
aXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQppbmRleCA4MzEyNDFkZTQzNzZiNTI2OGIzZTczNWViYjQ3MTVlYzQ0YzY5MTc1Li40MGIyM2Jl
NDk3ZTI3ZTc3NDZiNTU5YTI1MWJhOGRiZmJmM2VhMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKQEAgLTc4LDcgKzc4LDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ09jY2x1c2lv
blRyYWNrZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAndGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Nj
aGVkdWxlclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNjRkZWQ3OTI4NjI4YWYyZDNi
MzMyZDRhM2RmYjAyY2FmN2JiMmJkOS4uNDkwNzRmZWRiNzhkOWEwY2VkZjg5YjVkMjkyNWQ2ZGM3
OGVlY2UzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTYwMCwxMiArNjAwLDEyIEBAIGNsYXNzIERp
ZERyYXdDaGVja0xheWVyIDogcHVibGljIENDVGlsZWRMYXllckltcGwgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPERpZERyYXdDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgRGlkRHJhd0NoZWNrTGF5ZXIoaWQpKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREUKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRHJhdygpCiAgICAgewogICAgICAgICBtX2RpZERyYXdDYWxsZWQgPSB0cnVlOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBP
VkVSUklERQorICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGlj
c0NvbnRleHQqKQogICAgIHsKICAgICAgICAgbV93aWxsRHJhd0NhbGxlZCA9IHRydWU7CiAgICAg
fQpAQCAtNzU1LDIwICs3NTUsMTggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
aWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiAKIGNsYXNzIE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5n
TGF5ZXIgOiBwdWJsaWMgRGlkRHJhd0NoZWNrTGF5ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIGJv
b2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBib29sIGFuaW1hdGluZywgQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTWlzc2lu
Z1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1pc3NpbmcsIHNraXBzRHJhdywgYW5pbWF0
aW5nLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxNaXNzaW5n
VGV4dHVyZUFuaW1hdGluZ0xheWVyPiBjcmVhdGUoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBi
b29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBNaXNz
aW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGlkLCB0aWxlTWlzc2luZywgc2tpcHNEcmF3LCBhbmlt
YXRpbmcpKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1pc3NpbmdUZXh0dXJlQW5pbWF0
aW5nTGF5ZXIoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBh
bmltYXRpbmcsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKKyAgICBleHBs
aWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGludCBpZCwgYm9vbCB0aWxlTWlzc2lu
ZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKQogICAgICAgICA6IERpZERyYXdDaGVj
a0xheWVyKGlkKQogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxp
bmdEYXRhID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKDEwLCAxMCksIENDTGF5
ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIHRpbGluZ0RhdGEtPnNldEJv
dW5kcyhib3VuZHMoKSk7CiAgICAgICAgIHNldFRpbGluZ0RhdGEoKnRpbGluZ0RhdGEuZ2V0KCkp
OwogICAgICAgICBzZXRTa2lwc0RyYXcoc2tpcHNEcmF3KTsKLSAgICAgICAgaWYgKCF0aWxlTWlz
c2luZykgewotICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291
cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wsIEludFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92
aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKLSAgICAgICAgICAgIHB1c2hUaWxlUHJvcGVydGllcygw
LCAwLCByZXNvdXJjZSwgSW50UmVjdCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXRpbGVN
aXNzaW5nKQorICAgICAgICAgICAgcHVzaFRpbGVQcm9wZXJ0aWVzKDAsIDAsIDEsIEludFJlY3Qo
KSk7CiAgICAgICAgIGlmIChhbmltYXRpbmcpCiAgICAgICAgICAgICBhZGRBbmltYXRlZFRyYW5z
Zm9ybVRvTGF5ZXIoKnRoaXMsIDEwLCAzLCAwKTsKICAgICB9CkBAIC03NzksNyArNzc3LDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5p
bWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBt
aXNzaW5nLCB3ZSBkcmF3IGFzIHVzdWFsLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihE
aWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICBEaWREcmF3Q2hlY2tMYXllciogcm9v
dCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVy
KCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNy
ZWF0ZSgyLCBmYWxzZSwgZmFsc2UsIHRydWUsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIo
KSkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNy
ZWF0ZSgyLCBmYWxzZSwgZmFsc2UsIHRydWUpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKIApAQCAtNzkwLDcgKzc4OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2Vy
Ym9hcmQpCiAgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFu
aW1hdGluZywgd2UgZHJhdyBhcyB1c3VhbCB3aXRoIGNoZWNrZXJib2FyZGluZy4KICAgICBtX2hv
c3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAg
cm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExh
eWVyKCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6
OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwgZmFsc2UsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlk
ZXIoKSkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6
OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKQEAgLTc5OSw3ICs3OTcsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAg
IC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9u
J3Qgd2FudCB0byBkcmF3IGFueXRoaW5nLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihE
aWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlk
RHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRk
Q2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNl
LCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKKyAgICByb290LT5hZGRD
aGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgdHJ1ZSwgZmFsc2Us
IHRydWUpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZy
YW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CkBAIC04MDgsNyArODA2
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNX
aGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIHRoZSBsYXllciBza2lw
cyBkcmF3IGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIHN0aWxsIGRyYXcgdGhlIGZyYW1lLgogICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsK
ICAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5y
b290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcjo6Y3JlYXRlKDIsIGZhbHNlLCB0cnVlLCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVBy
b3ZpZGVyKCkpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xh
eWVyOjpjcmVhdGUoMiwgZmFsc2UsIHRydWUsIHRydWUpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1f
aG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKGZyYW1lKTsKQEAgLTExNzMsNyArMTE3MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEJsZW5k
U3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCwgQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxl
bmRTdGF0ZUNoZWNrTGF5ZXIoaWQsIHJlc291cmNlUHJvdmlkZXIpKTsgfQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQogICAgIHsKQEAgLTExODQs
NyArMTE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9wYXF1ZVJlY3QgPSBtX3F1YWRSZWN0
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvcGFxdWVSZWN0ID0gbV9vcGFxdWVDb250ZW50
UmVjdDsKLSAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0g
Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIG1fcXVhZFJlY3QsIG9wYXF1
ZVJlY3QsIG1fcmVzb3VyY2VJZCwgSW50UG9pbnQoKSwgSW50U2l6ZSgxLCAxKSwgMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+
IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIG1fcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIDAsIEludFBvaW50KCksIEludFNpemUoMSwg
MSksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIHRlc3RC
bGVuZGluZ0RyYXdRdWFkLT5zZXRRdWFkVmlzaWJsZVJlY3QobV9xdWFkVmlzaWJsZVJlY3QpOwog
ICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRzQmxl
bmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVuZGVy
U3VyZmFjZSgpKTsKQEAgLTEyMDYsNyArMTIwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9w
YXF1ZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9vcGFxdWVDb250ZW50UmVj
dCA9IHJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXll
cihpbnQgaWQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKKyAgICBleHBs
aWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwo
aWQpCiAgICAgICAgICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZh
Y2UoZmFsc2UpCkBAIC0xMjE0LDcgKzEyMTIsNiBAQCBwcml2YXRlOgogICAgICAgICAsIG1fb3Bh
cXVlQ29udGVudHMoZmFsc2UpCiAgICAgICAgICwgbV9xdWFkUmVjdCg1LCA1LCA1LCA1KQogICAg
ICAgICAsIG1fcXVhZFZpc2libGVSZWN0KDUsIDUsIDUsIDUpCi0gICAgICAgICwgbV9yZXNvdXJj
ZUlkKHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKENDUmVuZGVyZXI6OkNvbnRlbnRQ
b29sLCBJbnRTaXplKDEsIDEpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAgIHsKICAgICAgICAgc2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpA
QCAtMTIyOSw3ICsxMjI2LDYgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7CiAg
ICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRSZWN0OwogICAgIEludFJlY3QgbV9xdWFkVmlzaWJs
ZVJlY3Q7Ci0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsK
IH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKQEAgLTEyNDQsNyArMTI0MCw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICB9
CiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsKIAotICAg
IHJvb3QtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMiwgbV9ob3N0SW1w
bC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNo
ZWNrTGF5ZXI6OmNyZWF0ZSgyKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIGxheWVyMSA9
IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVDaGVja0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5n
ZXQoKSk7CiAgICAgbGF5ZXIxLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDIsIDIpKTsKIApAQCAt
MTI5Nyw3ICsxMjkzLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGlu
Z09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsK
IAotICAgIGxheWVyMS0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgzLCBt
X2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKKyAgICBsYXllcjEtPmFkZENoaWxkKEJs
ZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMykpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVy
KiBsYXllcjIgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KGxheWVyMS0+Y2hp
bGRyZW4oKVswXS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQs
IDQpKTsKIApAQCAtMTQ1OCw3ICsxNDU0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB2aWV3cG9ydENvdmVyZWQpCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAwMCwgMTAw
MCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKLSAg
ICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgx
LCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgQmxlbmRTdGF0
ZUNoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKICAgICByb290LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwg
dHJ1ZSk7CiAgICAgcm9vdC0+c2V0T3BhcXVlKHRydWUpOwpAQCAtMjk3Niw5ICsyOTcyLDkgQEAg
cHJvdGVjdGVkOgogCiBjbGFzcyBDQ1Rlc3RSZW5kZXJlciA6IHB1YmxpYyBMYXllclJlbmRlcmVy
Q2hyb21pdW0sIHB1YmxpYyBDQ1JlbmRlcmVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1Rlc3RSZW5kZXJlcj4gY3JlYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcikKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Rlc3RSZW5kZXJlcj4gY3Jl
YXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgewotICAgICAg
ICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5k
ZXJlcihyZXNvdXJjZVByb3ZpZGVyKSkpOworICAgICAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+
IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5kZXJlcihjb250ZXh0KSkpOwogICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMzAwMCw3ICsyOTk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgQ0NUZXN0UmVuZGVyZXIoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyKSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bSh0aGlzLCByZXNvdXJjZVByb3ZpZGVyLCBVbnRo
cm90dGxlZFVwbG9hZGVyKSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJlcihXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bSh0aGlzLCBjb250
ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogcHJpdmF0ZToKICAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIG1fc2V0dGluZ3M7CkBAIC0zMjgzLDEwICszMjc5LDkgQEAgc3RhdGljIHZvaWQg
dmVyaWZ5UmVuZGVyUGFzc1Rlc3REYXRhKFRlc3RDYXNlJiB0ZXN0Q2FzZSwgUmVuZGVyUGFzc1Jl
bW92YWxUZXN0RGEKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGVzdFJlbW92ZVJl
bmRlclBhc3NlcykKIHsKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3Jl
YXRlQ29udGV4dCgpKTsKLSAgICBBU1NFUlRfVFJVRShjb250ZXh0LT5jb250ZXh0M0QoKSk7Ci0g
ICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNl
UHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBPd25QdHI8Q0NUZXN0UmVu
ZGVyZXI+IHJlbmRlcmVyKENDVGVzdFJlbmRlcmVyOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5n
ZXQoKSkpOworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNv
bnRleHQtPmNvbnRleHQzRCgpOworICAgIEFTU0VSVF9UUlVFKGNvbnRleHQzZCk7CisgICAgT3du
UHRyPENDVGVzdFJlbmRlcmVyPiByZW5kZXJlcihDQ1Rlc3RSZW5kZXJlcjo6Y3JlYXRlKGNvbnRl
eHQzZCkpOwogCiAgICAgaW50IHRlc3RDYXNlSW5kZXggPSAwOwogICAgIHdoaWxlIChyZW1vdmVS
ZW5kZXJQYXNzZXNDYXNlc1t0ZXN0Q2FzZUluZGV4XS5uYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAK
aW5kZXggOTcwMjcwOTVlZGU4ZWI4N2Y3ZWUyYzczNDQ5ODYwNGFiNGIxNWRjNC4uMjFlMGE3MTdj
MzZjNzllMmEyYzAzMjM5MmVmYThhMTBlMTJkYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAt
MjcsOSArMjcsNyBAQAogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAKICNp
bmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiRmFrZUNDR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KIApAQCAtNDQsMTYgKzQyLDExIEBAIHB1YmxpYzoKICAgICBDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QoKQogICAgICAgICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCiAgICAgICAg
ICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKQotICAgICAgICAsIG1f
Y29udGV4dChXZWJLaXQ6OmNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKQogICAgIHsKLSAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIG1fcmVz
b3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQo
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0KCkKICAg
ICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAg
ICBtX3Jlc291cmNlUHJvdmlkZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICBzaXplX3QgdGV4dHVy
ZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCkBAIC02MywxMiArNTYsMTEgQEAgcHVi
bGljOgogCiAgICAgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNyZWF0
ZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1cmVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0
dXJlcyksIDEwMjQsIDApOworICAgICAgICByZXR1cm4gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgMTAyNCk7CiAgICAg
fQogCiAgICAgYm9vbCB2YWxpZGF0ZVRleHR1cmUoT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
PiYgdGV4dHVyZSwgYm9vbCByZXF1ZXN0TGF0ZSkKICAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
dGV4dHVyZS0+dGV4dHVyZU1hbmFnZXIoKS0+YXNzZXJ0SW52YXJpYW50cygpOwogI2VuZGlmCkBA
IC03NiwyMCArNjgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAgdGV4dHVyZS0+cmVxdWVzdExh
dGUoKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdU
ZXh0dXJlKCk7CiAgICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgdGV4dHVyZS0+YWNx
dWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgICAgICAgICB0ZXh0
dXJlLT5hY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKCkpOwogICAgICAgICByZXR1cm4g
c3VjY2VzczsKICAgICB9CiAKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlk
ZXIoKQorICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IoKQogICAgIHsKLSAgICAg
ICByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpOworICAgICAgIHJldHVybiAmbV9mYWtl
VGV4dHVyZUFsbG9jYXRvcjsKICAgICB9CiAKIHByb3RlY3RlZDoKKyAgICBGYWtlVGV4dHVyZUFs
bG9jYXRvciBtX2Zha2VUZXh0dXJlQWxsb2NhdG9yOwogICAgIGNvbnN0IEludFNpemUgbV90ZXh0
dXJlU2l6ZTsKICAgICBjb25zdCBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7Ci0gICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duUHRyPENDUmVzb3VyY2VQcm92
aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkKQEAgLTEyOCw4ICsxMTks
NyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2Vl
ZGluZ01heExpbWl0KQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVy
ZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBF
Q1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7Ci0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNl
UHJvdmlkZXIoKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRv
cigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5
TGltaXRzKQpAQCAtMTQ4LDEwICsxMzgsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkK
ICAgICAgICAgdmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSk7Ci0gICAgewotICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgdGV4dHVy
ZU1hbmFnZXItPnJlZHVjZU1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwotICAgIH0KKyAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKIAogICAgIEVYUEVDVF9F
USh0ZXh0dXJlc01lbW9yeVNpemUoOCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMo
KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CkBAIC0xNjEsMTAg
KzE0OCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxp
bWl0cykKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEo
dmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA1KTsKLSAgICB7Ci0gICAg
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7Ci0gICAgfQorICAgIHRl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOwogCiAgICAgRVhQRUNUX0VR
KHRleHR1cmVzTWVtb3J5U2l6ZSg1KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygp
LCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKQEAgLTE3NCwxNiAr
MTU4LDEyIEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxp
bWl0cykKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEo
dmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA0KTsKLSAgICB7Ci0gICAg
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7Ci0gICAgfQorICAgIHRl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOwogCiAgICAgRVhQRUNUX0VR
KHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygp
LCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAotICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVh
ckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVh
ckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQpAQCAtMjQyLDggKzIy
Miw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFy
dGlhbFVwZGF0ZVRleHR1cmVzKQogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlc1syXS0+aGF2ZUJh
Y2tpbmdUZXh0dXJlKCkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlc1szXS0+aGF2ZUJhY2tp
bmdUZXh0dXJlKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7
CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKIH0KIAog
VEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQcmlvcml0aWVz
QXJlRXF1YWwpCkBAIC0yODIsOCArMjYxLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgdGV4dHVyZU1hbmFnZXJQcmlvcml0aWVzQXJlRXF1YWwpCiAgICAgRVhQRUNUX0VRKHRl
eHR1cmVzTWVtb3J5U2l6ZSg4KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0
ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAotICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShhbGxvY2F0b3IoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkRmlyc3QpCkBAIC0zMDEsMTAgKzI3OSw3IEBAIFRF
U1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkRmly
c3QpCiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkp
OwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAotICAg
IHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAg
IHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwotICAg
IH0KKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwogICAg
IHRleHR1cmVNYW5hZ2VyLmNsZWFyKCk7CiAKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+Y2Fu
QWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzI5LDEwICszMDQsNyBAQCBURVNUX0YoQ0NQ
cmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAKICAgICB0
ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcigwKTsKIAotICAgIHsKLSAgICAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIHRleHR1cmVNYW5hZ2VyT25lLT5j
bGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwotICAgIH0KKyAgICB0ZXh0dXJlTWFu
YWdlck9uZS0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwogICAgIHRleHR1cmVNYW5hZ2Vy
T25lLmNsZWFyKCk7CiAKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tp
bmdUZXh0dXJlKCkpOwpAQCAtMzQ2LDggKzMxOCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAgICBFWFBFQ1RfVFJVRSh0ZXh0
dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVy
ZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7Ci0gICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KHJlc291
cmNlUHJvdmlkZXIoKSk7CisgICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KGFs
bG9jYXRvcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVy
U3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFN1cmZhY2UpCkBAIC0zOTIs
OCArMzYzLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFj
ZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFMKICAgICBFWFBFQ1RfRVEodGV4dHVy
ZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0
dXJlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFy
QWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFy
QWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGF0ZSkK
QEAgLTQyOSw4ICszOTksNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5k
ZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVlc3RMYQogICAgIEVYUEVDVF9F
USh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFu
YWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNl
Qnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICB0ZXh0dXJlTWFuYWdl
ci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05v
dEF2YWlsYWJsZSkKQEAgLTQ2OSw4ICs0MzgsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQog
ICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoMiksIHRleHR1cmVNYW5hZ2VyLT5tZW1v
cnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdl
ci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB0
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAKaW5kZXggY2Q3YTM5NmJkMGQ3NmUxYTUyZTM3MTMzM2U0Yzg0ZDU3NGVmMDU2ZC4u
NTY3MzE3OTFkMDk4ZDY0OGI4NWFiNGUwMWE2OTk2OWJlYzhkNzMxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC03NSwxMSAr
NzUsMTEgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKEND
VGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2UKICAgICBsYXllci0+c2V0Qm91bmRzKGxh
eWVyUmVjdC5zaXplKCkpOwogICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5z
aXplKCkpOwogCi0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQg
PSAxOworICAgIGludCB0ZXh0dXJlSWQgPSAxOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGls
ZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXIt
Pm51bVRpbGVzWSgpOyArK2opIHsKICAgICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3Qg
PSBvcGFxdWUgPyB0aWxlci0+dGlsZUJvdW5kcyhpLCBqKSA6IGludGVyc2VjdGlvbih0aWxlci0+
dGlsZUJvdW5kcyhpLCBqKSwgbGF5ZXJPcGFxdWVSZWN0KTsKLSAgICAgICAgICAgIGxheWVyLT5w
dXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgcmVzb3VyY2VJZCsrLCB0aWxlT3BhcXVlUmVjdCk7Cisg
ICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBs
YXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSwgdGlsZU9wYXF1ZVJlY3QpOwogICAgICAgICB9
CiAKICAgICBpZiAoIXBhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU3MTY1ZTZjYTdmYzI1NDIxMmY5ZGQyYjcxNWQ0YjRiMzM3NDJjOTguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDMwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgIkNvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1
bS5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCi0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBSZXNvdXJj
ZVByb3ZpZGVyQ29udGV4dCA6IHB1YmxpYyBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVByb3ZpZGVyQ29u
dGV4dD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFJlc291cmNlUHJvdmlkZXJDb250
ZXh0KEF0dHJpYnV0ZXMoKSkpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYmluZFRleHR1cmUoV0dD
M0RlbnVtIHRhcmdldCwgV2ViR0xJZCB0ZXh0dXJlKQotICAgIHsKLSAgICAgIEFTU0VSVCh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOwotICAgICAgQVNTRVJUKCF0ZXh0
dXJlIHx8IG1fdGV4dHVyZXMuZmluZCh0ZXh0dXJlKSAhPSBtX3RleHR1cmVzLmVuZCgpKTsKLSAg
ICAgIG1fY3VycmVudFRleHR1cmUgPSB0ZXh0dXJlOwotICAgIH0KLQotICAgIHZpcnR1YWwgV2Vi
R0xJZCBjcmVhdGVUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIFdlYkdMSWQgaWQgPSBDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgIG1f
dGV4dHVyZXMuYWRkKGlkLCBudWxscHRyKTsKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKFdlYkdMSWQgaWQpCi0gICAgewotICAgICAg
ICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZChpZCk7Ci0gICAgICAg
IEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKLSAgICAgICAgbV90ZXh0dXJlcy5yZW1v
dmUoaXQpOwotICAgICAgICBpZiAobV9jdXJyZW50VGV4dHVyZSA9PSBpZCkKLSAgICAgICAgICAg
IG1fY3VycmVudFRleHR1cmUgPSAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9y
YWdlMkRFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50
ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXR0MzRGludCB3
aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudFRl
eHR1cmUpOwotICAgICAgICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJEKTsKLSAgICAgICAgQVNTRVJUKGxldmVscyA9PSAxKTsKLSAgICAgICAgV0dDM0RlbnVt
IGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotICAgICAgICBzd2l0Y2ggKGludGVy
bmFsZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpSR0JBOF9PRVM6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThf
RVhUOgotICAgICAgICAgICAgZm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgYWxsb2NhdGVUZXh0dXJlKEludFNpemUod2lk
dGgsIGhlaWdodCksIGZvcm1hdCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHRleEltYWdl
MkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZv
cm1hdCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRl
ciwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKLSAgICAgICAgQVNTRVJU
KHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7Ci0gICAgICAgIEFTU0VS
VCghbGV2ZWwpOwotICAgICAgICBBU1NFUlQoaW50ZXJuYWxmb3JtYXQgPT0gZm9ybWF0KTsKLSAg
ICAgICAgQVNTRVJUKCFib3JkZXIpOwotICAgICAgICBBU1NFUlQodHlwZSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSk7Ci0gICAgICAgIGFsbG9jYXRlVGV4dHVyZShJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpLCBmb3JtYXQpOwotICAgICAgICBpZiAocGl4ZWxzKQotICAgICAgICAg
ICAgc2V0UGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIHBpeGVscyk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2
ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEc2l6ZWkgd2lkdGgs
IFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlwZSwgY29u
c3Qgdm9pZCogcGl4ZWxzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUp
OwotICAgICAgICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
KTsKLSAgICAgICAgQVNTRVJUKCFsZXZlbCk7Ci0gICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmdl
dChtX2N1cnJlbnRUZXh0dXJlKSk7Ci0gICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmdldChtX2N1
cnJlbnRUZXh0dXJlKS0+Zm9ybWF0ID09IGZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKLSAgICAgICAgQVNTRVJUKHBpeGVs
cyk7Ci0gICAgICAgIHNldFBpeGVscyh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBw
aXhlbHMpOwotICAgIH0KLQotICAgIHZvaWQgZ2V0UGl4ZWxzKGNvbnN0IEludFNpemUmIHNpemUs
IFdHQzNEZW51bSBmb3JtYXQsIHVpbnQ4X3QqIHBpeGVscykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX2N1cnJlbnRUZXh0dXJlKTsKLSAgICAgICAgVGV4dHVyZSogdGV4dHVyZSA9IG1fdGV4dHVy
ZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpOwotICAgICAgICBBU1NFUlQodGV4dHVyZSk7Ci0gICAg
ICAgIEFTU0VSVCh0ZXh0dXJlLT5zaXplID09IHNpemUpOwotICAgICAgICBBU1NFUlQodGV4dHVy
ZS0+Zm9ybWF0ID09IGZvcm1hdCk7Ci0gICAgICAgIG1lbWNweShwaXhlbHMsIHRleHR1cmUtPmRh
dGEuZ2V0KCksIHRleHR1cmVTaXplKHNpemUsIGZvcm1hdCkpOwotICAgIH0KLQotICAgIGludCB0
ZXh0dXJlQ291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdGV4dHVyZXMuc2l6ZSgpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3QgdGV4dHVyZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgV0dDM0RlbnVtIGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBjb21wb25l
bnRzUGVyUGl4ZWwgPSA0OwotICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21wb25lbnQg
PSAxOwotICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJh
bWV0ZXJzKGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsICZjb21wb25l
bnRzUGVyUGl4ZWwsICZieXRlc1BlckNvbXBvbmVudCk7Ci0gICAgICAgIHJldHVybiBzaXplLndp
ZHRoKCkgKiBzaXplLmhlaWdodCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21w
b25lbnQ7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUmVzb3VyY2VQcm92aWRl
ckNvbnRleHQoY29uc3QgQXR0cmlidXRlcyYgYXR0cnMpCi0gICAgICAgIDogQ29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRChhdHRycykKLSAgICAgICAgLCBtX2N1cnJlbnRUZXh0dXJl
KDApCi0gICAgeyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRleHR1cmUgewotICAgICAgICBU
ZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemVfLCBXR0MzRGVudW0gZm9ybWF0XykKLSAgICAgICAg
ICAgIDogc2l6ZShzaXplXykKLSAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdF8pCi0gICAgICAg
ICAgICAsIGRhdGEoYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFt0ZXh0dXJlU2l6ZShzaXplLCBm
b3JtYXQpXSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEludFNpemUgc2l6ZTsK
LSAgICAgICAgV0dDM0RlbnVtIGZvcm1hdDsKLSAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4g
ZGF0YTsKLSAgICB9OwotCi0gICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRU
ZXh0dXJlKTsKLSAgICAgICAgbV90ZXh0dXJlcy5zZXQobV9jdXJyZW50VGV4dHVyZSwgYWRvcHRQ
dHIobmV3IFRleHR1cmUoc2l6ZSwgZm9ybWF0KSkpOwotICAgIH0KLQotICAgIHZvaWQgc2V0UGl4
ZWxzKGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25z
dCB2b2lkKiBwaXhlbHMpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7
Ci0gICAgICAgIFRleHR1cmUqIHRleHR1cmUgPSBtX3RleHR1cmVzLmdldChtX2N1cnJlbnRUZXh0
dXJlKTsKLSAgICAgICAgQVNTRVJUKHRleHR1cmUpOwotICAgICAgICBBU1NFUlQoeG9mZnNldCA+
PSAwICYmIHhvZmZzZXQrd2lkdGggPD0gdGV4dHVyZS0+c2l6ZS53aWR0aCgpKTsKLSAgICAgICAg
QVNTRVJUKHlvZmZzZXQgPj0gMCAmJiB5b2Zmc2V0K2hlaWdodCA8PSB0ZXh0dXJlLT5zaXplLmhl
aWdodCgpKTsKLSAgICAgICAgQVNTRVJUKHBpeGVscyk7Ci0gICAgICAgIHNpemVfdCBpblBpdGNo
ID0gdGV4dHVyZVNpemUoSW50U2l6ZSh3aWR0aCwgMSksIHRleHR1cmUtPmZvcm1hdCk7Ci0gICAg
ICAgIHNpemVfdCBvdXRQaXRjaCA9IHRleHR1cmVTaXplKEludFNpemUodGV4dHVyZS0+c2l6ZS53
aWR0aCgpLCAxKSwgdGV4dHVyZS0+Zm9ybWF0KTsKLSAgICAgICAgdWludDhfdCogZGVzdCA9IHRl
eHR1cmUtPmRhdGEuZ2V0KCkgKyB5b2Zmc2V0ICogb3V0UGl0Y2ggKyB0ZXh0dXJlU2l6ZShJbnRT
aXplKHhvZmZzZXQsIDEpLCB0ZXh0dXJlLT5mb3JtYXQpOwotICAgICAgICBjb25zdCB1aW50OF90
KiBzcmMgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKTsKLSAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7ICsraSkgewotICAgICAgICAgICAgbWVtY3B5KGRlc3Qs
IHNyYywgaW5QaXRjaCk7Ci0gICAgICAgICAgICBkZXN0ICs9IG91dFBpdGNoOwotICAgICAgICAg
ICAgc3JjICs9IGluUGl0Y2g7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhhc2hN
YXA8V2ViR0xJZCwgT3duUHRyPFRleHR1cmU+ID4gVGV4dHVyZU1hcDsKLSAgICBXZWJHTElkIG1f
Y3VycmVudFRleHR1cmU7Ci0gICAgVGV4dHVyZU1hcCBtX3RleHR1cmVzOwotfTsKLQotY2xhc3Mg
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoK
LSAgICBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0KCkKLSAgICAgICAgOiBtX2NvbnRleHQoQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKFJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpjcmVhdGUoKSkp
Ci0gICAgICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KG1fY29udGV4dC5nZXQoKSkpCi0gICAgewotICAgIH0KLQotICAgIFJlc291cmNlUHJvdmlkZXJD
b250ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VQcm92aWRlckNv
bnRleHQqPihtX2NvbnRleHQtPmNvbnRleHQzRCgpKTsgfQotCi0gICAgdm9pZCBnZXRSZXNvdXJj
ZVBpeGVscyhDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQsIGNvbnN0IEludFNpemUm
IHNpemUsIFdHQzNEZW51bSBmb3JtYXQsIHVpbnQ4X3QqIHBpeGVscykKLSAgICB7Ci0gICAgICAg
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlci5nZXQo
KSwgaWQpOwotICAgICAgICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOwotICAgICAg
ICBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBs
b2NrLnRleHR1cmVJZCgpKTsKLSAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9y
bWF0LCBwaXhlbHMpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250
ZXh0OwotICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsK
LX07Ci0KLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKLXsKLSAgICBJbnRT
aXplIHNpemUoMSwgMSk7Ci0gICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBOwotICAgIGludCBwb29sID0gMTsKLSAgICBzaXplX3QgcGl4ZWxTaXplID0gUmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQ6OnRleHR1cmVTaXplKHNpemUsIGZvcm1hdCk7Ci0gICAgQVNTRVJU
X0VRKDRVLCBwaXhlbFNpemUpOwotCi0gICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IGlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3Jt
YXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKLSAgICBFWFBFQ1RfRVEo
MSwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Ci0KLSAgICB1aW50OF90IGRhdGFbNF0gPSB7
MSwgMiwgMywgNH07Ci0gICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIHNpemUpOwotICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBkYXRhLCByZWN0LCByZWN0LCByZWN0KTsKLQot
ICAgIHVpbnQ4X3QgcmVzdWx0WzRdID0gezB9OwotICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBz
aXplLCBmb3JtYXQsIHJlc3VsdCk7Ci0gICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhLCByZXN1
bHQsIHBpeGVsU2l6ZSkpOwotCi0gICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJj
ZShpZCk7Ci0gICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOwotfQot
Ci1URVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCi17
Ci0gICAgSW50U2l6ZSBzaXplKDEsIDEpOwotICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQTsKLSAgICBpbnQgcG9vbCA9IDE7Ci0KLSAgICBjb25zdCBpbnQgY291
bnQgPSAzOwotICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZHNbY291bnRdID0g
ezB9OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgaWRzW2ld
ID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQs
IENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKLSAgICBFWFBFQ1RfRVEoMywg
Y29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Ci0KLSAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRl
bGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wrMSk7Ci0gICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+
dGV4dHVyZUNvdW50KCkpOwotCi0gICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJl
c291cmNlcyhwb29sKTsKLSAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQo
KSk7Ci19Ci0KLVRFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCi17Ci0gICAg
SW50U2l6ZSBzaXplKDIsIDIpOwotICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTsKLSAgICBpbnQgcG9vbCA9IDE7Ci0gICAgc2l6ZV90IHBpeGVsU2l6ZSA9IFJl
c291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpOwotICAgIEFT
U0VSVF9FUSgxNlUsIHBpeGVsU2l6ZSk7Ci0KLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgaWQgPSBtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUs
IGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwotCi0gICAgdWlu
dDhfdCBpbWFnZVsxNl0gPSB7MH07Ci0gICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJl
Y3QsIGltYWdlUmVjdCwgaW1hZ2VSZWN0KTsKLQotICAgIGZvciAodWludDhfdCBpID0gMCA7IGkg
PCBwaXhlbFNpemU7ICsraSkKLSAgICAgICAgaW1hZ2VbaV0gPSBpOwotCi0gICAgdWludDhfdCBy
ZXN1bHRbMTZdID0gezB9OwotICAgIHsKLSAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KDAsIDAs
IDEsIDEpOwotICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KDAsIDAsIDEsIDEpOwotICAgICAgICBt
X3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwotCi0gICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZdID0gezAsIDEsIDIs
IDMsICAgMCwgMCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCwgMCwgICAwLCAwLCAwLCAwfTsKLSAgICAgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNpemUs
IGZvcm1hdCwgcmVzdWx0KTsKLSAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZCwg
cmVzdWx0LCBwaXhlbFNpemUpKTsKLSAgICB9Ci0gICAgewotICAgICAgICBJbnRSZWN0IHNvdXJj
ZVJlY3QoMCwgMCwgMSwgMSk7Ci0gICAgICAgIEludFJlY3QgZGVzdFJlY3QoMSwgMSwgMSwgMSk7
Ci0gICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFnZSwgaW1hZ2VSZWN0
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Ci0KLSAgICAgICAgdWludDhfdCBleHBlY3RlZFsxNl0g
PSB7MCwgMSwgMiwgMywgICAwLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCAwLCAwLCAgIDAsIDEsIDIsIDN9OwotICAgICAgICBnZXRSZXNvdXJjZVBpeGVs
cyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOwotICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOwotICAgIH0KLSAgICB7Ci0gICAgICAgIElu
dFJlY3Qgc291cmNlUmVjdCgxLCAwLCAxLCAxKTsKLSAgICAgICAgSW50UmVjdCBkZXN0UmVjdCgw
LCAxLCAxLCAxKTsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdl
LCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLQotICAgICAgICB1aW50OF90IGV4
cGVjdGVkWzE2XSA9IHswLCAxLCAyLCAzLCAgIDAsIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQsIDUsIDYsIDcsICAgMCwgMSwgMiwgM307Ci0gICAgICAgIGdldFJl
c291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7Ci0gICAgICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoZXhwZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXplKSk7Ci0gICAgfQotCi0gICAg
bV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4
dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Njb3BlZFRleHR1
cmVUZXN0LmNwcAppbmRleCA1MDVhZTk2MjVlY2FjOWQ0ODdiMTY1ZjJhYjU5NzUwZTc0ODk0YzE1
Li40ZDQ2NGVhNTE0MzhlYTgzZjcwMmU5ZjU2NjMwZjVkYjFmN2I2NmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAKQEAg
LTI3LDEwICsyNyw3IEBACiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCiAKICNpbmNs
dWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJjYy9D
Q1JlbmRlcmVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3Ig
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBA
IC00MiwxMCArMzksOCBAQCBuYW1lc3BhY2UgewogCiBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3Qs
IE5ld1Njb3BlZFRleHR1cmUpCiB7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNv
dXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsK
LSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpj
cmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3Ig
YWxsb2NhdG9yOworICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3Bl
ZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKIAogICAgIC8vIE5ldyBzY29wZWQgdGV4dHVy
ZXMgZG8gbm90IGhvbGQgYSB0ZXh0dXJlIHlldC4KICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUt
PmlkKCkpOwpAQCAtNTcsMTEgKzUyLDkgQEAgVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBOZXdT
Y29wZWRUZXh0dXJlKQogCiBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIENyZWF0ZVNjb3BlZFRl
eHR1cmUpCiB7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0ZUZh
a2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVy
KENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBPd25QdHI8
Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSk7Ci0gICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1w
bFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBh
bGxvY2F0b3I7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVk
VGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgIHRleHR1cmUtPmFsbG9jYXRlKEludFNp
emUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogCiAgICAgLy8gVGhlIHRleHR1
cmUgaGFzIGFuIGFsbG9jYXRlZCBieXRlLXNpemUgbm93LgogICAgIHNpemVfdCBleHBlY3RlZEJ5
dGVzID0gMzAgKiAzMCAqIDQ7CkBAIC03Miw1OCArNjUsOTUgQEAgVEVTVChDQ1Njb3BlZFRleHR1
cmVUZXN0LCBDcmVhdGVTY29wZWRUZXh0dXJlKQogICAgIEVYUEVDVF9FUShJbnRTaXplKDMwLCAz
MCksIHRleHR1cmUtPnNpemUoKSk7CiB9CiAKKy8vIEZha2UgVGV4dHVyZUFsbG9jYXRvciB0aGF0
IHRyYWNrcyB0aGUgbnVtYmVyIG9mIHRleHR1cmVzIGluIHVzZS4KK2NsYXNzIFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKQorICAgICAgICA6IG1fbmV4dFRleHR1cmVJZCgxKQor
ICAgICAgICAsIG1fbnVtVGV4dHVyZXMoMCkKKyAgICB7IH0KKworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgY3JlYXRlVGV4dHVyZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0MzRGVudW0pIE9WRVJS
SURFCisgICAgeworICAgICAgICB1bnNpZ25lZCBpZCA9IG1fbmV4dFRleHR1cmVJZDsKKyAgICAg
ICAgKyttX25leHRUZXh0dXJlSWQ7CisKKyAgICAgICAgbV90ZXh0dXJlcy5zZXQoaWQsIHRydWUp
OworICAgICAgICArK21fbnVtVGV4dHVyZXM7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCBpZCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Rl
eHR1cmVzLmdldChpZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90ZXh0dXJl
cy5zZXQoaWQsIGZhbHNlKTsKKyAgICAgICAgLS1tX251bVRleHR1cmVzOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpIE9WRVJSSURFCisgICAgeworICAgICAg
ICBtX3RleHR1cmVzLmNsZWFyKCk7CisgICAgICAgIG1fbnVtVGV4dHVyZXMgPSAwOworICAgIH0K
KworICAgIHVuc2lnbmVkIG51bVRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1UZXh0dXJl
czsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fbmV4dFRleHR1cmVJZDsKKyAgICBIYXNo
TWFwPHVuc2lnbmVkLCBib29sPiBtX3RleHR1cmVzOworICAgIHVuc2lnbmVkIG1fbnVtVGV4dHVy
ZXM7Cit9OworCiBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIFNjb3BlZFRleHR1cmVJc0RlbGV0
ZWQpCiB7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0ZUZha2VD
Q0dyYXBoaWNzQ29udGV4dCgpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKEND
UmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwogCiAgICAgewotICAgICAgICBPd25QdHI8Q0NTY29w
ZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3VyY2VQcm92
aWRlci5nZXQoKSk7CisgICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBD
Q1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKIAotICAgICAgICBFWFBFQ1RfRVEo
MHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKLSAgICAgICAgdGV4dHVyZS0+
YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAg
ICAgICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIHRl
eHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OwogICAgICAgICBFWFBFQ1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CiAgICAgfQogCi0gICAgRVhQRUNUX0VR
KDB1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CisgICAgRVhQRUNUX0VRKDB1
LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CiAKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5u
dW1SZXNvdXJjZXMoKSk7Ci0gICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6Oklt
cGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAgICAgIE93blB0cjxDQ1Njb3BlZFRl
eHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIHRl
eHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OwogICAgICAgICBFWFBFQ1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CiAgICAgICAgIHRleHR1cmUtPmZyZWUo
KTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOwogICAg
IH0KIH0KIAogVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBMZWFrU2NvcGVkVGV4dHVyZSkKIHsK
LSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUNDR3JhcGhp
Y3NDb250ZXh0KCkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwot
ICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvciBhbGxvY2F0b3I7CiAKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1
cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVByb3ZpZGVyLmdl
dCgpKTsKKyAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVk
VGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOwogCi0gICAgICAgIEVYUEVDVF9FUSgwdSwgcmVz
b3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwotICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0
ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOworICAgICAgICBF
WFBFQ1RfRVEoMHUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgdGV4dHVyZS0+
YWxsb2NhdGUoSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAg
ICAgIEVYUEVDVF9MVCgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwg
cmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKIAogICAgICAgICB0ZXh0dXJlLT5sZWFrKCk7CiAg
ICAgICAgIEVYUEVDVF9FUSgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgx
dSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKIAogICAgICAgICB0ZXh0dXJlLT5mcmVlKCk7
CiAgICAgICAgIEVYUEVDVF9FUSgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9F
USgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKICAgICB9CiAKLSAgICBFWFBFQ1RfRVEo
MXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAppbmRleCBiN2EyNmRm
MmZkY2JmNTkxNWYwNjI2YjY4ZGVjZTdiMDFjNDYzMWU1Li5kMGJiZDM2ZjQ3OGVjNTg4NDJlM2M1
ZTFmYzRmOTBhMTc1ZDQzY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKLSNpbmNsdWRlICJjYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CkBAIC02NCwxMiArNjMsMTMgQEAgY2xhc3MgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdCA6
IHB1YmxpYyBGYWtlVGV4dHVyZVVwbG9hZGVyIHsKIHB1YmxpYzoKICAgICBUZXh0dXJlVXBsb2Fk
ZXJGb3JVcGxvYWRUZXN0KENDVGV4dHVyZVVwZGF0ZXJUZXN0ICp0ZXN0KSA6IG1fdGVzdCh0ZXN0
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGxv
YWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciosCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxv
YWRzKCk7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGlj
c0NvbnRleHQqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkxheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRl
c3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBDQ1RleHR1cmVVcGRhdGVyVGVzdCogbV90ZXN0OwpA
QCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogY2xhc3MgVGV4dHVyZUZvclVwbG9hZFRlc3QgOiBw
dWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgVGV4dHVy
ZUZvclVwbG9hZFRlc3QoKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8
Q0NQcmlvcml0aXplZFRleHR1cmU+KDApKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFw
aGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIHsgfQogfTsKIAogCkBAIC0xNjUsOCArMTY1LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgICAgIG1fY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGUzRCgKICAgICAgICAgICAgICAgICAgICAgYWRvcHRQdHIobmV3IFdlYkdyYXBoaWNzQ29u
dGV4dDNERm9yVXBsb2FkVGVzdCh0aGlzKSkpOwotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKQpAQCAtMjAyLDkgKzIwMCw5IEBAIHByb3RlY3RlZDoKIHByb3RlY3Rl
ZDoKICAgICAvLyBDbGFzc2VzIHJlcXVpcmVkIHRvIGludGVyYWN0IGFuZCB0ZXN0IHRoZSBDQ1Rl
eHR1cmVVcGRhdGVyCiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0g
ICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogICAgIEND
VGV4dHVyZVVwZGF0ZXIgbV91cGRhdGVyOwogICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0IG1fdGV4
dHVyZTsKKyAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBtX2FsbG9jYXRvcjsKICAgICBGYWtlVGV4
dHVyZUNvcGllciBtX2NvcGllcjsKICAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IG1f
dXBsb2FkZXI7CiAKQEAgLTI0MSwxMCArMjM5LDExIEBAIHZvaWQgVGV4dHVyZVVwbG9hZGVyRm9y
VXBsb2FkVGVzdDo6ZW5kVXBsb2FkcygpCiAgICAgbV90ZXN0LT5vbkVuZFVwbG9hZHMoKTsKIH0K
IAotdm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0Ojp1cGxvYWRUZXh0dXJlKFdlYkNv
cmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q0NSZXNvdXJjZVBy
b3ZpZGVyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0
UmVjdCkKK3ZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6dXBsb2FkVGV4dHVyZShX
ZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0IGRlc3RSZWN0KQogewogICAgIG1fdGVzdC0+b25VcGxvYWQoKTsKIH0KQEAgLTI1
NSw3ICsyNTQsNyBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFplcm9VcGxvYWRzKQog
ewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOwogICAgIGFwcGVuZFBhcnRpYWxV
cGxvYWRzVG9VcGRhdGVyKDApOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3Zp
ZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBl
Y3RlZCk7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRv
ciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwog
CiAgICAgRVhQRUNUX0VRKDAsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMCwg
bV9udW1FbmRVcGxvYWRzKTsKQEAgLTI2OSw4ICsyNjgsNyBAQCBURVNUX0YoQ0NUZXh0dXJlVXBk
YXRlclRlc3QsIE9uZUZ1bGxVcGxvYWQpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0
ZXIoMSk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwg
Jm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRF
eHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVY
UEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMjgyLDggKzI4MCw3IEBAIFRFU1RfRihD
Q1RleHR1cmVVcGRhdGVyVGVzdCwgT25lUGFydGlhbFVwbG9hZCkKIHsKICAgICBhcHBlbmRGdWxs
VXBsb2Fkc1RvVXBkYXRlcigwKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigx
KTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0
ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIG1fdXBkYXRlci51cGRhdGUobV9j
b250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90
YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBs
b2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0yOTUsOCArMjky
LDcgQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVGdWxsT25lUGFydGlhbFVwbG9h
ZCkKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigxKTsKICAgICBhcHBlbmRQYXJ0
aWFsVXBsb2Fkc1RvVXBkYXRlcigxKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAg
IG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGll
ciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIC8vIFdl
IGV4cGVjdCB0aGUgZnVsbCB1cGxvYWRzIHRvIGJlIGZvbGxvd2VkIGJ5IGEgZmx1c2gKICAgICAv
LyBiZWZvcmUgdGhlIHBhcnRpYWwgdXBsb2FkcyBiZWdpbi4KQEAgLTMxOSw4ICszMTUsNyBAQCBU
RVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsVXBsb2Fkc05vUmVtYWluZGVyKQog
ewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxOb1JlbWFpbmRlckNvdW50KTsK
ICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50
RXhwZWN0ZWQpOworICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxv
Y2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVk
KTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VR
KDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0zMzIsOCArMzI3LDcgQEAgVEVTVF9GKENDVGV4dHVy
ZVVwZGF0ZXJUZXN0LCBNYW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKIHsKICAgICBhcHBl
bmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBk
YXRlcihwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIu
Z2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVk
KTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251
bUVuZFVwbG9hZHMpOwpAQCAtMzQ1LDggKzMzOSw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVy
VGVzdCwgTWFueUZ1bGxNYW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKIHsKICAgICBhcHBl
bmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7CiAgICAgYXBwZW5k
UGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOwotICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0
KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTM2OCw4ICszNjEsNyBAQCBURVNU
X0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJlbWFpbmRlcikK
IHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQp
OwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJD
b3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRl
KG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBt
X3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdp
blVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMzgxLDgg
KzM3Myw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxBbmRQYXJ0aWFs
VXBsb2Fkc01heFJlbWFpbmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihm
dWxsTWF4UmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVy
KHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsK
KyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBF
WFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVu
ZFVwbG9hZHMpOwpAQCAtMzk0LDggKzM4NSw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgTWFueUZ1bGxNaW5SZW1haW5kZXJNYW55UGFydGlhbE1heFJlbWFpbmRlcikKIHsKICAgICBh
cHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOwogICAgIGFw
cGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7Ci0g
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4
dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMp
OwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtNDA3LDggKzM5Nyw3IEBA
IFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxNYXhSZW1haW5kZXJNYW55UGFy
dGlhbE1pblJlbWFpbmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxs
TWF4UmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBh
cnRpYWxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCks
ICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBF
Q1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVw
bG9hZHMpOwpAQCAtNDQwLDggKzQyOSw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwg
VHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKICAgICBhcHBlbmRQYXJ0aWFs
VXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOwogCiAgICAgLy8gRmlyc3QgdXBkYXRl
ICg0MCBmdWxsKQotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAg
IG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVwZGF0ZSht
X2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01h
eFVwbG9hZHNQZXJVcGRhdGUpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRz
KTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ1Myw3ICs0NDEsNyBA
QCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVs
bEFuZFBhcnRpYWwpCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251
bVByZXZpb3VzVXBsb2Fkcyk7CiAKICAgICAvLyBTZWNvbmQgdXBkYXRlICg0MCBmdWxsKQotICAg
IG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVwZGF0ZSht
X2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01h
eFVwbG9hZHNQZXJVcGRhdGUpOwogCiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRz
KTsKICAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ2NSw3ICs0NTMsNyBA
QCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVs
bEFuZFBhcnRpYWwpCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251
bVByZXZpb3VzVXBsb2Fkcyk7CiAKICAgICAvLyBUaGlyZCB1cGRhdGUgKDIwIGZ1bGwsIDIwIHBh
cnRpYWwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZt
X2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBtX3VwZGF0
ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBFWFBFQ1RfRVEoMywgbV9udW1C
ZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtNDk1
LDggKzQ4Myw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmlu
YWxVcGRhdGVBbGxQYXJ0aWFsKQogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQ
YXJ0aWFsVXBsb2Fkcyk7CiAKICAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZSht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxv
YWRzUGVyVXBkYXRlKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1f
YWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7
CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgx
LCBtX251bUVuZFVwbG9hZHMpOwpAQCAtNTA4LDcgKzQ5NSw3IEBAIFRFU1RfRihDQ1RleHR1cmVV
cGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQogICAgIEVYUEVD
VF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwogCiAg
ICAgLy8gU2Vjb25kIHVwZGF0ZSAoMzAgZnVsbCwgb3B0aW9uYWxseSAxMCBwYXJ0aWFsKQotICAg
IG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVwZGF0ZSht
X2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01h
eFVwbG9hZHNQZXJVcGRhdGUpOwogCiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRz
KTsKICAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTUxOCw3ICs1MDUsNyBA
QCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlQWxs
UGFydGlhbCkKICAgICAvLyBvbkZsdXNoKCksIG9uVXBsb2FkKCksIGFuZCBvbkVuZFVwbG9hZCgp
IHdpbGwgZG8gYmFzaWMgZmx1c2ggY2hlY2tzIGZvciB1cyBhbnl3YXkuCiAKICAgICAvLyBUaGly
ZCB1cGRhdGUgKDMwIHBhcnRpYWwgT1IgMjAgcGFydGlhbCBpZiAxMCBwYXJ0aWFsIHVwbG9hZGVk
IGluIHNlY29uZCB1cGRhdGUpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsK
KyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBFWFBFQ1Rf
RVEoMywgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9h
ZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
ckltcGxUZXN0LmNwcAppbmRleCBhMDg1MGIyNTFmMjg1NGU5ZmQxNTA3ZTUwNjhhODJkYTc0NTky
MTU2Li45MTAyODE1ODhhNzM0Y2I4MzBlNzdlYzhjMDE5M2JmMzEwNmRiMzUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNw
cApAQCAtNTMsMTAgKzUzLDEwIEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+
IGNyZWF0ZUxheWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXIt
PnNldEJvdW5kcyhsYXllclNpemUpOwogICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGxheWVy
U2l6ZSk7CiAKLSAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9
IDE7CisgICAgaW50IHRleHR1cmVJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aWxl
ci0+bnVtVGlsZXNYKCk7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0aWxlci0+
bnVtVGlsZXNZKCk7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMo
aSwgaiwgcmVzb3VyY2VJZCsrLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAgICAgICAgIGxh
eWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVj
dD4odGV4dHVyZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAgIHJldHVybiBsYXll
ci5yZWxlYXNlKCk7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBs
VGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxl
c1g7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1k7ICsraikKLSAg
ICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgMCwgSW50UmVjdCgpKTsK
KyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8
UGxhdGZvcm0zRE9iamVjdD4oMCksIEludFJlY3QoKSk7CiAKICAgICAvLyBBbGwgY2hlY2tlcmJv
YXJkaW5nCiAgICAgewpAQCAtMjQwLDcgKzI0MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRl
c3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEFTU0VSVF9FUShxdWFk
c1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5n
IDw8IGk7CiAgICAgICAgIENDVGlsZURyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NUaWxl
RHJhd1F1YWQqPihxdWFkc1tpXS5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNUX05FKHF1YWQtPnJl
c291cmNlSWQoKSwgMHUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgRVhQRUNUX05FKHF1
YWQtPnRleHR1cmVJZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1Rf
RVEocXVhZC0+dGV4dHVyZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7
CiAgICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgpLCB0aWxlU2l6ZSkgPDwgcXVh
ZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVh
ZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCA3
Nzc4NTQ5YjY4NTQzODAyNzUyMjZjNjBmZjQwMmE5NDE1YWZmNTgzLi4yNmZmZDkwNzljZmRhMzRh
ZTBiZGJmMGRhNGQxNTU0ZGJmZjU1MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTQwLDkgKzQwLDEw
IEBAIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAK
LXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCiB7Ci0gICAgdGV4dHVyZSgpLT5hY3F1aXJlQmFja2lu
Z1RleHR1cmUocmVzb3VyY2VQcm92aWRlcik7CisgICAgaWYgKGFsbG9jYXRvcikKKyAgICAgICAg
dGV4dHVyZSgpLT5hY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKICAgICBtX2xheWVy
LT51cGRhdGVSZWN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggYmU2ODFkNzFjOTI3ZWU5OGU4Y2U1
OTEzZjczOTQxNmQzNDRjZDE4Ny4uOTUwMWNhYmE5YWFjODBjNDQ5YzJhZjNlMGJkODUxNzNiMTgy
YTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgi
CisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIu
aCIKICNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUaWxlZExheWVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGls
ZWRMYXllckltcGwuaCIKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPFdlYkNvcmU6OkNDUHJpb3Jp
dGl6ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqICwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRl
eHQqLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CiAKICAgICBw
cml2YXRlOgpAQCAtMTUxLDEwICsxNTEsMTcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9mb3JjZWRDb250ZW50Qm91bmRzOwogfTsKIAorY2xhc3MgRmFrZVRleHR1cmVBbGxv
Y2F0b3IgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBH
QzNEZW51bSkgT1ZFUlJJREUgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVU
ZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0MzRGVudW0pIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpIE9WRVJSSURFIHsg
fQorfTsKKwogY2xhc3MgRmFrZVRleHR1cmVDb3BpZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVy
ZUNvcGllciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVk
LCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpDQ0dy
YXBoaWNzQ29udGV4dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgR0MzRGVudW0pIHsgfQogfTsKIAogY2xhc3MgRmFrZVRleHR1cmVVcGxvYWRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlVXBsb2FkZXIgewpAQCAtMTYyLDcgKzE2OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNl
UHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxv
YWRUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRl
eHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggZmNmY2NlMTE0YzFmZjA3Y2EyNGRkNzc5MzI2YTIyN2FmYTQ0MjIyYy4u
NzUwNDE4NTM1NjBmNWM1YjFmYzAyZTNlOGY2YmY4M2Y1MWUwY2Q0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtOTksNyArOTksNyBAQCBURVNUKENvbnRlbnRMYXllckNocm9taXVtVGVzdCwgQ29u
dGVudExheWVyUGFpbnRlcldpdGhEZXZpY2VTY2FsZSkKICAgICBPcGFxdWVSZWN0RHJhd2luZ0dy
YXBoaWNzQ29udGV4dFBhaW50ZXIgcGFpbnRlcihvcGFxdWVSZWN0SW5MYXllclNwYWNlLCBjb250
ZW50UmVjdCk7CiAgICAgT3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUgb3Bh
cXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUoJnBhaW50ZXIpOwogICAgIE1vY2tD
b250ZW50TGF5ZXJEZWxlZ2F0ZSBkZWxlZ2F0ZSgmb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExh
eWVyRGVsZWdhdGUpOwotICAgIFJlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
PiB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRl
bnRMYXllclBhaW50ZXI6OmNyZWF0ZSgmZGVsZWdhdGUpKTsKKyAgICBSZWZQdHI8Qml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUoJmRlbGVnYXRlKSwg
ZmFsc2UpOwogCiAgICAgSW50UmVjdCByZXN1bHRpbmdPcGFxdWVSZWN0OwogICAgIHVwZGF0ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgSW50U2l6ZSgyNTYsIDI1NiksIGNvbnRlbnRz
U2NhbGUsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYjRlZjM2NjI5OGE2YzVmMjE1N2UyMWFlM2MwMWEy
YWU1YWUwMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZha2VDQ0dyYXBoaWNz
Q29udGV4dF9oCi0jZGVmaW5lIEZha2VDQ0dyYXBoaWNzQ29udGV4dF9oCi0KLSNpbmNsdWRlICJD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbmxpbmUgUGFz
c093blB0cjxXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlRmFrZUNDR3JhcGhpY3ND
b250ZXh0KCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcygpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRmFrZUNDR3JhcGhpY3NDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDFiNmI4MDI4YjRmZjU0ZDU5NjQ5MmE4YTdhM2RhZTNmYjgwOTMxZGUuLjE0MWI3MTliYmYz
ZDlmMzMzNzAwMDM2Nzk0YWYzZTM1Yjc2ZDljZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21p
dW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5
ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQs
IHJlc291cmNlUHJvdmlkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQorICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0
LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1
bSBtZXRob2RzLgogCkBAIC0xMjYsOSArMTI2LDggQEAgcHJvdGVjdGVkOgogICAgIExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QoKQogICAgICAgICA6IG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVz
KDEsIHRydWUpCiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxzZSkK
LSAgICAgICAgLCBtX2NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRy
KG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KCkpKSkKLSAg
ICAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9j
b250ZXh0LmdldCgpKSkKLSAgICAgICAgLCBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2Nr
Q2xpZW50LCBtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpCisgICAgICAgICwgbV9jb250ZXh0KGFk
b3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KSkK
KyAgICAgICAgLCBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRl
eHQuZ2V0KCkpCiAgICAgewogICAgIH0KIApAQCAtMTQ4LDE0ICsxNDcsMTEgQEAgcHJvdGVjdGVk
OgogICAgICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zd2FwQnVmZmVycyhJbnRSZWN0KCkp
OwogICAgIH0KIAotICAgIEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRl
eHQqIGNvbnRleHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxs
b2NhdGlvblNldHRpbmdDb250ZXh0Kj4obV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KLQogICAg
IFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllczsK
ICAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
bzsKIAotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0
cjxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0PiBtX2NvbnRleHQ7
CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbV9tb2NrQ2xpZW50OwotICAgIE93blB0cjxDQ1Jl
c291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwogICAgIENDU2NvcGVkU2V0dGluZ3Mg
bV9zY29wZWRTZXR0aW5nczsKIH07CkBAIC0xNjUsMTIgKzE2MSwxMiBAQCBwcm90ZWN0ZWQ6CiAv
LyBFeHBlY3RlZDogaXQgZG9lcyBub3RoaW5nLgogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZERvTm90
aGluZykKIHsKLSAgICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2
ZUJhY2tidWZmZXJZZXMpOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1
Z2dlc3RIYXZlQmFja2J1ZmZlclllcyk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NsaWVudC5z
ZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJS
ZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVm
ZmVycygpOwotICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPmZyYW1lQ291bnQoKSk7CisgICAg
RVhQRUNUX0VRKDEsIG1fY29udGV4dC0+ZnJhbWVDb3VudCgpKTsKIH0KIAogLy8gVGVzdCBMYXll
clJlbmRlcmVyQ2hyb21pdW0gZGlzY2FyZEZyYW1lYnVmZmVyIGZ1bmN0aW9uYWxpdHk6CkBAIC0x
NzksNyArMTc1LDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RC
YWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZEQKIFRFU1RfRihMYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZm
ZXJBbmREYW1hZ2VSb290TGF5ZXJXaGlsZU5vdFZpc2libGUpCiB7CiAgICAgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgY29udGV4dCgpLT5zZXRNZW1vcnlB
bGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0
TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1Rf
RVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBF
WFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
KCkpOwogfQpAQCAtMTkwLDcgKzE4Niw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJBbmRECiBURVNU
X0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb0RvTm90aGlu
Z1doZW5WaXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUo
dHJ1ZSk7Ci0gICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVC
YWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dl
c3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ2xpZW50LnNldEZ1
bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTIwMiwxMSArMTk4
LDExIEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZl
ck5vRG9Ob3RoaW5nV2hlblZpc2libGUpCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dCwgU3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9Ob3RoaW5nKQog
ewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIGNv
bnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsK
KyAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZm
ZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFt
YWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNG
cmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAotICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2Nh
dGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBtX2NvbnRleHQtPnNldE1lbW9y
eUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEs
IG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNU
X1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsK
IH0KQEAgLTIxNyw3ICsyMTMsNyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwg
U3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9ObwogVEVTVF9GKExh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZv
clNjb3BlRHVyYXRpb24pCiB7CiAgICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJs
ZShmYWxzZSk7Ci0gICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhh
dmVCYWNrYnVmZmVyTm8pOworICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1
Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21v
Y2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCkBAIC0yMjYsMTMgKzIy
MiwxMyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1
ZmZlcklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbgogICAgIEVYUEVDVF9GQUxTRShtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1
ZmZlcnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT5mcmFtZUNvdW50KCkpOworICAg
IEVYUEVDVF9FUSgxLCBtX2NvbnRleHQtPmZyYW1lQ291bnQoKSk7CiB9CiAKIFRFU1RfRihMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LCBGcmFtZWJ1ZmZlckRpc2NhcmRlZEFmdGVyUmVhZGJhY2tX
aGVuTm90VmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxl
KGZhbHNlKTsKLSAgICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2
ZUJhY2tidWZmZXJObyk7CisgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3Vn
Z2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNo
cm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9j
a0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAKQEAgLTMxNiw5ICszMTIs
OCBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNO
b3RNYWtlU3luY2hyb25vdXNDYWxscykKIHsKICAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNl
dHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChh
ZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCkpKTsKLSAgICBPd25QdHI8
Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxh
eWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7
CisgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5ldyBG
b3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJv
bWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7CiB9
CkBAIC0zNjAsOSArMzU1LDggQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5p
dGlhbGl6YXRpb25XaXRoUXVpY2tseUxvc3RDb250ZXh0RG9lc05vdEFzc2UKIHsKICAgICBDQ1Nj
b3BlZFNldHRpbmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1v
Y2tDbGllbnQ7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29u
dGV4dCkpKTsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVy
KENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBGYWtlTGF5
ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KGFkb3B0UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSk7CisgICAg
RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGll
bnQsIGNvbnRleHQuZ2V0KCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxp
emUoKTsKIH0KQEAgLTM4Miw5ICszNzYsOCBAQCBwdWJsaWM6CiBURVNUKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhvdXRHcHVNZW1vcnlNYW5hZ2VyRXh0ZW5z
aW9uU3VwcG9ydFNob3VsZERlZmF1bHRUb05vblplcm9BbGxvY2F0aW9uKQogewogICAgIEZha2VD
Q1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgQ29udGV4
dFRoYXREb2VzTm90U3VwcG9ydE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKSk7Ci0gICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1
bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0
KCkpOworICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihu
ZXcgQ29udGV4dFRoYXREb2VzTm90U3VwcG9ydE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKTsK
KyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9j
a0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5p
dGlhbGl6ZSgpOwogCkBAIC00MDksMTAgKzQwMiw4IEBAIHByaXZhdGU6CiBURVNUKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRl
cmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0Nv
bnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBDbGVhckNvdW50
aW5nQ29udGV4dCkpKTsKLSAgICBDbGVhckNvdW50aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250ZXh0M0QoKSk7Ci0g
ICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNl
UHJvdmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3VyY2VQcm92
aWRlci5nZXQoKSk7CisgICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0KGFk
b3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOworICAgIEZha2VMYXllclJlbmRlcmVy
Q2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgp
KTsKIAogICAgIG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKGZhbHNlKTsKIApAQCAtNDMzLDEwICs0MjQsOCBAQCBURVNUKExheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogVEVTVChMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVy
Q2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRl
eHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5n
Q29udGV4dCkpKTsKLSAgICBDbGVhckNvdW50aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250ZXh0M0QoKSk7Ci0gICAg
T3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJv
dmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSk7CisgICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0KGFkb3B0
UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hy
b21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsK
IAogICAgIG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RleHR1cmVDb3BpZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4
dHVyZUNvcGllclRlc3QuY3BwCmluZGV4IDBmNTZlZDljYzU3YTYwMjc2MTAzNWE2ODEwNTc2NTVk
YzRlYmE3YWYuLmIzZWY0YzJlYmVmYjg0ZDFlNzIzNGI1MzQ2NTE4YzA1NmU5OTdiM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3Bw
CkBAIC01MiwzMyArNTIsMzQgQEAgcHVibGljOgogVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVz
dERyYXdBcnJheXNDb3B5KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzOwotICAgIE93blB0cjxNb2NrQ29udGV4dD4gbW9ja0NvbnRleHQgPSBhZG9wdFB0cihuZXcg
TW9ja0NvbnRleHQpOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0g
Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBNb2NrQ29udGV4dCkpOwor
ICAgIE1vY2tDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+
KGNjQ29udGV4dC0+Y29udGV4dDNEKCkpOwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNl
cXVlbmNlOwogCiAgICAgICAgIC8vIEhlcmUgd2UgY2hlY2sganVzdCBzb21lIGVzc2VudGlhbCBw
cm9wZXJ0aWVzIG9mIGNvcHlUZXh0dXJlKCkgdG8gYXZvaWQgbWlycm9yaW5nIHRoZSBmdWxsIGlt
cGxlbWVudGF0aW9uLgotICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIGJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIF8pKTsKKyAgICAgICAgRVhQ
RUNUX0NBTEwobW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIF8pKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgbGluZWFyIGZpbHRlcmlu
ZyBpcyBkaXNhYmxlZCBkdXJpbmcgdGhlIGNvcHkuCi0gICAgICAgIEVYUEVDVF9DQUxMKCptb2Nr
Q29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5F
QVJFU1QpKTsKLSAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOworICAgICAgICBFWFBF
Q1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIHRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAK
LSAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCBkcmF3QXJyYXlzKF8sIF8sIF8pKTsK
KyAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGRyYXdBcnJheXMoXywgXywgXykpOwog
CiAgICAgICAgIC8vIExpbmVhciBmaWx0ZXJpbmcgc2hvdWxkIGJlIHJlc3RvcmVkLgotICAgICAg
ICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250
ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
KSk7CisgICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgICAgIEVYUEVDVF9DQUxM
KG1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQz
RDo6TElORUFSKSk7CiAKICAgICAgICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUg
cmVzdG9yZWQKLSAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCBiaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgICAgIEVYUEVDVF9D
QUxMKG1vY2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCAwKSk7CiAgICAgfQogCiAgICAgaW50IHNvdXJjZVRleHR1cmVJZCA9IDE7CiAgICAg
aW50IGRlc3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7Ci0gICAg
T3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcjo6Y3JlYXRlKG1vY2tDb250ZXh0LmdldCgpLCBmYWxzZSkpOwotICAgIGNvcGllci0+
Y29weVRleHR1cmUoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKKyAgICBP
d25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBjb3BpZXIoQWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyOjpjcmVhdGUoY2NDb250ZXh0LT5jb250ZXh0M0QoKSwgZmFsc2UpKTsKKyAgICBjb3Bp
ZXItPmNvcHlUZXh0dXJlKGNjQ29udGV4dC5nZXQoKSwgc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4
dHVyZUlkLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDEx
YmYxMTViNWUzMDhmNWM1ZTI0YzgyYTI4YmUxYTAxMjUzMGY0NDQuLmJkNTk3YzFlNmMxOWEzYzc2
NGI4Yjk4NThmNmZlY2Y4YzcwMTQ2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJU
cmVlVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKLSNp
bmNsdWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJGYWtlQ0NMYXllclRy
ZWVIb3N0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC03MywzNyArNzIsMjkgQEAgcHJpdmF0ZToKIAogY2xh
c3MgVGlsZWRMYXllckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1Ymxp
YzoKLSAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0KCkKLSAgICAgICAgOiBtX2NvbnRleHQoV2Vi
S2l0OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSkKLSAgICB7Ci0gICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICBtX3Jlc291cmNlUHJvdmlk
ZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QoKQotICAgIHsKLSAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIG1fcmVzb3VyY2VQ
cm92aWRlci5jbGVhcigpOwotICAgIH0KKyAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0KCkgOiBj
Y0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFdlYktpdDo6Q29tcG9zaXRvckZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMoKSkpKSB7IH0KKyAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW1U
ZXN0KCkgeyB9CiAKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVzKGludCBjb3VudCA9IDUwMCkKICAg
ICB7Ci0gICAgICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBjb3VudCk7CisgICAgICAgIHVwZGF0ZXIudXBkYXRlKGNj
Q29udGV4dC5nZXQoKSwgJmFsbG9jYXRvciwgJmNvcGllciwgJnVwbG9hZGVyLCBjb3VudCk7CiAg
ICAgfQogcHVibGljOgotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKLSAgICBD
Q1RleHR1cmVVcGRhdGVyIG1fdXBkYXRlcjsKLSAgICBGYWtlVGV4dHVyZUNvcGllciBtX2NvcGll
cjsKLSAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIG1fdXBsb2FkZXI7Ci0gICAgQ0NQcmlvcml0eUNh
bGN1bGF0b3IgbV9wcmlvcml0eUNhbGN1bGF0b3I7CisgICAgLy8gRklYTUU6IFJlbmFtZSB0aGVz
ZSB0byBhZGQgIm1fIi4KKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dDsK
KyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3Ig
YWxsb2NhdG9yOworICAgIEZha2VUZXh0dXJlQ29waWVyIGNvcGllcjsKKyAgICBGYWtlVGV4dHVy
ZVVwbG9hZGVyIHVwbG9hZGVyOworICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2Fs
Y3VsYXRvcjsKIH07CiAKIAogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERp
cnR5VGlsZXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIENDUHJpb3JpdHlDYWxj
dWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMTEzLDEwICsxMDQsMTAgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKQEAgLTEyNyw5ICsxMTgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4u
LgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3
YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAtMTM5LDcgKzEzMCw4IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIAogVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiB7Ci0gICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6
Q29udGVudFBvb2wpOworICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRv
cjsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgx
KSkpOwpAQCAtMTUxLDEwICsxNDMsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKQEAgLTE3MCw3ICsxNjIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNv
bnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGUgYXJl
YSBpcyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1
MCwgNTApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogCkBAIC0xODUsNyArMTc3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoRGVsZXRlZFRpbGVzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4g
bGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMTk1
LDEwICsxODcsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVk
VGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjA3LDcgKzE5OSw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVY
UEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKIAogICAgIHRleHR1cmVNYW5h
Z2VyLT5jbGVhclByaW9yaXRpZXMoKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1v
cnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkoJmFsbG9jYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMoNCoxMDI0KjEwMjQpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgZHJvcCB0aGUgdGls
ZXMgb24gdGhlIGltcGwgdGhyZWFkLgpAQCAtMjE4LDkgKzIxMCw5IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9GQUxTRShsYXll
ckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBh
bmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAt
MjMxLDcgKzIyMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRl
ZFRpbGVzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRp
bGVzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMjQ2LDEwICsyMzgsMTAgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBs
YXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgpAQCAt
MjYyLDEwICsyNTQsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxl
UGFpbnRUaWxlcykKIAogICAgIC8vIEZvciB0aGUgbmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNob3Vs
ZCBkZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBhaW50aW5nLgogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7CiAKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
dmlzaWJsZVJlY3QsIDApOworICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTI4OSw3ICsyODEs
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQog
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFp
bGVkKQogewogICAgIC8vIFN0YXJ0IHdpdGggMm1iIG9mIG1lbW9yeSwgYnV0IHRoZSB0ZXN0IGlz
IGdvaW5nIHRvIHRyeSB0byB1c2UganVzdCBtb3JlIHRoYW4gMW1iLCBzbyB3ZSByZWR1Y2UgdG8g
MW1iIGxhdGVyLgotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMioxMDI0KjEw
MjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIxID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbDEo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0zMTMsMTEgKzMwNSwx
MSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFp
bnRGYWlsZWQpCiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlQ29udGVudFJlY3QobGF5ZXJSZWN0KTsK
IAogICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBp
ZGxlIHBhaW50LgotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwotICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxh
eWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBsYXllclJlY3QsIDApOwotICAgIGxh
eWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBsYXllclJlY3Qs
IDApOworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBm
b3IgYm90aCByZW1haW5pbmcgdGlsZXMgaW4gbGF5ZXIyLgogICAgIEVYUEVDVF9UUlVFKGxheWVy
Mi0+bmVlZHNJZGxlUGFpbnQobGF5ZXIyUmVjdCkpOwpAQCAtMzMxLDEwICszMjMsMTAgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVk
KQogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKDEwMjQgKiAxMDI0
KTsKIAogICAgIC8vIE5vdyBpZGxlIHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5nIHRvIHJ1biBv
dXQgb2YgbWVtb3J5IHRob3VnaCEKLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCksIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRo
ZSBmcmFtZSBhbmQgcHVzaC4KICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMzUxLDExICszNDMs
MTEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBh
aW50RmFpbGVkKQogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwyLT5oYXNUaWxlQXQoMCwgMikp
OwogCiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1bGx5IHZpc2libGUsIHdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlkIHRleHR1cmVzLgotICAgIGxheWVy
Mi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVy
MS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVy
Mi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKIAogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwpAQCAtMzcxLDcgKzM2
Myw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQ
YWludEZhaWxlZCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRlZE9jY2x1ZGVkVGlsZXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0zODUs
OSArMzc3LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRl
ZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
bV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRl
VGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCkBAIC0zOTcsNyArMzg5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRl
bnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwog
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbCgxKSkpOwpAQCAtNDEwLDkgKzQwMiw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAs
IDEwMCwgNTApLCBsYXllci5nZXQoKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4
dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwog
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTQyMyw3
ICs0MTUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2Vk
RGlydHlEdXJpbmdQYWludCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAy
NCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIx
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKQEAgLTQzOCwxNSArNDMwLDE1
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERp
cnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKICAgICBsYXllcjItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIxLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgLy8g
SW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBs
YXllcjEuZ2V0KCkpOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAgICB1cGRhdGVUZXh0
dXJlcygpOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsK
QEAgLTQ2MSw3ICs0NTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRP
blByZXZpb3VzTGF5ZXIpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwpAQCAtNDc2LDE0ICs0NjgsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXkK
ICAgICBsYXllcjItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOwogCi0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2Fs
Y3VsYXRvcik7Ci0gICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAv
LyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCks
IGxheWVyMi5nZXQoKSk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMS0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwor
ICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhs
YXllcjJJbXBsLmdldCgpKTsKQEAgLTUwNSw3ICs0OTcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2UgaGF2ZSBlbm91Z2gg
bWVtb3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdpbGwgcnVuIG91dCBvZiBt
ZW1vcnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICogMTAw
ICogMTAwOyAvLyAxIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KIAotICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRl
bnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0
LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwog
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbCgxKSkpOwpAQCAtNTE1LDkgKzUwNyw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRl
bnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAg
Ly8gSWRsZS1wYWludGluZyBzaG91bGQgc2VlIG5vIG1vcmUgcHJpb3JpdHkgdGlsZXMgZm9yIHBh
aW50aW5nLgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKQEAgLTUyOCw5ICs1MjAsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24g
dGhlIGltcGwgc2lkZS4KICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgxLCAx
KSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdl
IHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQuCiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTM4LDcgKzUz
MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9y
eSkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExh
eWVyKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQs
IENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDIwMDAwLCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAg
IE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtl
Q0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtNTU1LDExICs1NDcsMTEgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogICAgICAgICBsYXll
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAvLyBFbXB0eSBsYXllcnMg
ZG9uJ3QgcGFpbnQgb3IgaWRsZS1wYWludC4KLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOworICAgICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgICAgIC8vIEVtcHR5IGxh
eWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1Q
YWludGVkVGlsZXMoKSk7CkBAIC01NzksNyArNTcxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgSW50U2l6ZSBjb250ZW50
Qm91bmRzKDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIGNvbnRlbnRCb3VuZHMpOwogCi0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSgyMDAwMCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRv
cHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC01OTMsOSArNTg1LDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMp
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBQYWludCAv
IGlkbGUtcGFpbnQuCi0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CisgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2li
bGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZp
c2libGVSZWN0LCAwKTsKIAogICAgICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgbmVl
ZCBpZGxlIHBhaW50LgogICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50
KHZpc2libGVSZWN0KSk7CkBAIC02MTksNyArNjExLDcgQEAgc3RhdGljIHZvaWQgdGVzdEhhdmVP
dXRlclRpbGVzKEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllckltcGwsIGludCB3aWR0aCwgaW50
IGgKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVB
bmltYXRpbmdMYXllcnMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg4
MDAwKjgwMDAqOCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4MDAwKjgsIDEwMjQpOwogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogCiAgICAgaW50IHRpbGVXaWR0aCA9IEZha2VU
aWxlZExheWVyQ2hyb21pdW06OnRpbGVTaXplKCkud2lkdGgoKTsKQEAgLTY0Myw3ICs2MzUsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1h
dGluZ0xheWVycykKICAgICAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qodmlz
aWJsZVJlY3QpOwogICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250
ZW50UmVjdCk7CiAKLSAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAgICAgLy8gSWYgaWRsZVBhaW50UmVjdCBnaXZl
cyBiYWNrIGEgbm9uLWVtcHR5IHJlc3VsdCB0aGVuIHdlIHNob3VsZCBwYWludCBpdC4gT3RoZXJ3
aXNlLApAQCAtNjU1LDEwICs2NDcsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAKICAgICAgICAgICAgIC8vIElm
IHRoZSBsYXllciBpcyB0byBiZSBwcmVwYWludGVkIGF0IGFsbCwgdGhlbiBhZnRlciBmb3VyIHVw
ZGF0ZXMgd2Ugc2hvdWxkIGhhdmUgdGhlIG91dGVyIHJvdy9jb2x1bW5zIHBhaW50ZWQuCiAgICAg
ICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewotICAgICAgICAgICAgICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAg
ICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlz
aWJsZVJlY3QsIDApOworICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgICAgICAgICAgfQpAQCAtNjY4LDEwICs2NjAsMTAgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaWRsZSBwYWludCBwYXN0IHRoZSBvdXRlcm1v
c3QgdGlsZXMuCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50
KHZpc2libGVSZWN0KSk7CiAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykg
ewotICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgICAgICAgICAgICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAg
ICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICAgICAgfQpAQCAtNjgzLDE5ICs2NzUs
MjQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVB
bmltYXRpbmdMYXllcnMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlk
YXRlRnJvbVByZXBhcmUpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAKKyAgICBGYWtl
VGV4dHVyZUFsbG9jYXRvciBmYWtlQWxsb2NhdG9yOworICAgIEZha2VUZXh0dXJlQ29waWVyIGZh
a2VDb3BpZXI7CisgICAgRmFrZVRleHR1cmVVcGxvYWRlciBmYWtlVXBsb2FkZXI7CisgICAgT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoV2ViS2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKSk7CisKICAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
Ci0gICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVwZGF0
ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxv
YWRlciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4K
QEAgLTcwNSwyMSArNzAyLDIxIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZh
bGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHVwZGF0ZUNvbnRlbnRSZWN0IGFn
YWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgdXBkYXRlQ29udGVudFJlY3Qgc2hvdWxkbid0IGJl
IGludm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
Ci0gICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVwZGF0
ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxv
YWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0
cmlnZ2VycyBpbnZhbGlkYXRlQ29udGVudFJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20gdXBkYXRl
Q29udGVudFJlY3QuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJl
Y3RUb0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1
cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGll
ciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVy
IHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUNvbnRlbnRSZWN0IGludm9rZWQgaW52
YWxpZGF0ZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CisgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAm
ZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiB9CiAKQEAgLTcy
OCw5ICs3MjUsOCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRl
UmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIFRoZSB1cGRhdGVSZWN0ICh0
aGF0IGluZGljYXRlcyB3aGF0IHdhcyBhY3R1YWxseSBwYWludGVkKSBzaG91bGQgYmUgaW4KICAg
ICAvLyBsYXllciBzcGFjZSwgbm90IHRoZSBjb250ZW50IHNwYWNlLgogCi0gICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogCiAgICAgSW50UmVjdCBsYXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVj
dCBjb250ZW50Qm91bmRzKDAsIDAsIDIwMCwgMjUwKTsKQEAgLTc0MywzMiArNzM5LDMyIEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRC
b3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxh
eWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KGNvbnRlbnRCb3VuZHMpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJv
dW5kcywgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRC
b3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAs
IDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZh
bGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VR
KEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0
ZVRleHR1cmVzKCk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJl
cHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBz
cGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShG
bG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCiBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRz
U2NhbGVDaGFuZ2VzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCox
MDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtNzgyLDkgKzc3
OCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25X
aGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAg
ICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVy
ZSBpcyBleGFjdGx5IG9uZS4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlv
cml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtNzk5LDkgKzc5NSw5IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNo
YW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gVGhlIGltcGwgc2lk
ZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCAyMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVD
VF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTgxMiw4ICs4MDgsOCBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRl
bnRzU2NhbGVDaGFuZ2VzKQogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBhZ2Fp
biwgYnV0IGRvIG5vdCBwYWludC4gQWxsIHRpbGVzIHNob3VsZCBiZSBnb25lIG5vdyBmcm9tIHRo
ZQogICAgIC8vIGltcGwgc2lkZS4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAw
KTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgxLCAwLCAwLCAx
KSwgMCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTg1NCw3ICs4NTAs
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwogCi0gICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBtZW1vcnlMaW1pdCk7CisgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgbWVtb3J5TGltaXQpOwogCiAg
ICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5
ZXItPnNraXBzRHJhdygpKTsKQEAgLTg2NSwxMCArODYxLDEwIEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gUmVtb3ZlIHRoZSBjaGls
ZCBsYXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBtZW1vcnlMaW1pdCk7CiAgICAg
RVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCi0gICAgY2NMYXllclRyZWVI
b3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5h
Z2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIFdlYktp
dDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAgLTg3NiwxNiArODcyLDE2IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAKIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiB7Ci0gICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQq
MTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkp
KTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCi0g
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwg
MCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKQEAgLTg5
Myw3ICs4ODksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFs
bGVyKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jh
c2gpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIGludCBzaXplID0gMSA8PCAzMDsKQEAgLTkw
Miw5ICs4OTgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBk
YXRlQ3Jhc2gpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAs
IHNpemUsIHNpemUpKTsKIAogICAgIC8vIEVuc3VyZSBubyBjcmFzaCBmb3IgYm91bmRzIHdoZXJl
IHNpemUgKiBzaXplIHdvdWxkIG92ZXJmbG93IGFuIGludC4KLSAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIH0KIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTMzLDE3ICs5MjksMTcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsKIAogICAg
IC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0
ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwog
ICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVw
ZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
ICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
ICAgICB9CkBAIC05NTEsMTcgKzk0NywxNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBw
YXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Cisg
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAgICAg
IHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSht
X3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAg
ICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQo
KTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAg
ICB9CkBAIC05NzIsMTQgKzk2OCwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVw
ZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRh
dGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUobV91cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01v
cmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAg
ICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpA
QCAtOTk5LDE0ICs5OTUsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRp
YWxVcGRhdGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4
dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5o
YXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVD
VF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTEw
MTcsMTkgKzEwMTMsMTYgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxV
cGRhdGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVy
ZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFz
TW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJV
cGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
LSAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAg
ICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKLSAgICB9CisgICAgY2NMYXllclRyZWVI
b3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3Ip
OwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAg
LTEwMzcsNyArMTAzMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFs
VXBkYXRlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdp
dGhvdXRPY2NsdXNpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KQEAgLTEwNDUsMTUgKzEwMzgsMTUgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1Rf
RVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiB9CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVkZWQ7CiAKQEAgLTEwNjYsOSArMTA1OSw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogICAgIGxheWVyLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAot
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVB
UihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAx
KTsKQEAgLTEwNzksNyArMTA3Miw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKElu
dFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1
ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAt
MTA5MCw3ICsxMDgzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb24pCiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgy
NTAsIDI1MCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJk
cmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTEwMCw3ICsx
MDkzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhP
Y2NsdXNpb24pCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiB7Ci0gICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTExNCw5ICsxMTA3LDkg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNjApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsK
ICAgICBFWFBFQ1RfRVEoMjQtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExMjksOSArMTEyMiw5
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOwog
ICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE0NCw5ICsxMTM3LDkg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50
UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRKDI0LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTU3LDcgKzExNTAsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIHsKLSAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250
ZW50UG9vbCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRv
cHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMTY5LDE0ICsxMTYy
LDExIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRo
b3V0SW52YWxpZGF0aW9uKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwg
MjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291
bnQoKSk7Ci0gICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKLSAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKLSAgICB9CisgICAgdXBkYXRlVGV4dHVyZXMo
KTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1Vw
bG9hZGVkT3BhcXVlKCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQoKSwgMzMwMDAwLCAxKTsKQEAgLTEx
ODUsNyArMTE3NSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBh
aW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKIAogICAgIC8vIFJlcGFpbnQgd2l0aG91
dCBtYXJraW5nIGl0IGRpcnR5LiBUaGUgMyBjdWxsZWQgdGlsZXMgd2lsbCBiZSBwcmUtcGFpbnRl
ZCBub3cuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVD
VF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE5NSw3ICsxMTg1LDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24p
CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uQW5kVHJhbnNmb3JtcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
KDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CisgICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMjEyLDkgKzEyMDIsOSBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3Jp
dHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0g
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0z
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTIyNCw3ICsxMjE0LDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQog
CiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bkFuZFNjYWxpbmcpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOworICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ciBvY2NsdWRlZDsKIApAQCAtMTI0MCw5ICsxMjMwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1
ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRz
KCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFs
ZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIp
LgogICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNl
IHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKICAgICAvLyBudW1iZXIgb2YgdGlsZXMgM3gzLgpA
QCAtMTI2MCw5ICsxMjUwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lv
bihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAg
LTEyODAsOSArMTI3MCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1Bh
aW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24o
SW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0x
MjkyLDEwICsxMjgyLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBv
b2wpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEw
MjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28g
dGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5
cy4KIApAQCAtMTMxMCwxMyArMTI5OSwxMyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250
ZW50UmVjdCh2aXNpYmxlQm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAK
LSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwor
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwogICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIElmIHRoZSBs
YXllciBkb2Vzbid0IHBhaW50IG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsK
ICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigp
OwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKQEAgLTEzMjks
NyArMTMxOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbikKICAgICBvcGFxdWVQYWludFJlY3QgPSBJbnRSZWN0KDEwLCAxMCwgOTAs
IDE5MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRl
ciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJl
cygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwg
dmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKQEAgLTEzNDIsNyArMTMz
MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1
ZVJlZ2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxpZGF0aW5n
LCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAm
b2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBs
YXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChp
bnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVu
dHMuYm91bmRzKCkpOwpAQCAtMTM1Nyw3ICsxMzQ2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZl
Y3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFp
bnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdp
b24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2
aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM3Miw3ICsxMzYx
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVl
UmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDEwLCAxMCwgMSwgMSkpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZv
Y2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxh
eWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGlu
dGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3Bh
cXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM4NiwxMCArMTM3NSw5IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKIAogVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogewotICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVy
ZXI6OkNvbnRlbnRQb29sKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7Ci0gICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBp
biB2YXJpb3VzIHdheXMuCiAKQEAgLTE0MDQsMTMgKzEzOTIsMTMgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QodmlzaWJsZUJvdW5kcyk7CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5
KDEpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxh
dG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJ
bnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9sZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwor
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2Nj
bHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVD
b250ZW50cy5pc0VtcHR5KCkpOwpAQCAtMTQyNSw3ICsxNDEzLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCg1MCwgMjAwLCAxMCwgMTApKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2Nj
bHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91
bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVu
dHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJV
RShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwpAQCAtMTQ4NiwxNCArMTQ3NCwxNCBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0
U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290
UmVjdCk7CiAgICAgY2hpbGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAg
IGNoaWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
MTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUSg2LCByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGNoaWxkLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMs
IGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogCiAgICAgICAgIHJvb3QtPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgY2hp
bGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1
MjEsMTQgKzE1MDksMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxv
Y2F0ZUNvbnRlbnRzV2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZh
bGlkYXRlQ29udGVudFJlY3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY2hpbGRSZWN0KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGls
ZDJSZWN0KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsICgz
ICogMiArIDMgKiAxKSAqICgxMDAgKiAxMDApICogNCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnModXBkYXRlciwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsK
ICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAg
ICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDYsIHJvb3QtPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMCwgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBk
YXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7
CiAKICAgICAgICAgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVD
b3VudCgpOwogICAgICAgICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJV
cGRhdGVDb3VudCgpOwpAQCAtMTU1NywxNCArMTU0NSwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFs
bG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVjdCk7CiAgICAgY2hp
bGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNoaWxkMi0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKG1fdXBkYXRlciwgKDMgKiAxKSAqICgxMDAgKiAxMDApICogNCk7CisgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgKDMgKiAxKSAqICgxMDAgKiAxMDApICog
NCk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
ICAgICAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCByb290
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDAsIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpOwogCiAgICAgICAgIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBk
YXRlQ291bnQoKTsKICAgICAgICAgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1ODYsMTAgKzE1NzQsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRC
ZUFsbG9jYQogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
LSAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAg
ICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKLSAgICB9CisgICAgY2NMYXllclRyZWVI
b3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3Ip
OwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAg
LTE2MjAsNyArMTYwNSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE93blB0cjxUcmFja2lu
Z0xheWVyUGFpbnRlcj4gdHJhY2tpbmdMYXllclBhaW50ZXIoVHJhY2tpbmdMYXllclBhaW50ZXI6
OmNyZWF0ZSgpKTsKICAgICAgICAgbV90cmFja2luZ0xheWVyUGFpbnRlciA9IHRyYWNraW5nTGF5
ZXJQYWludGVyLmdldCgpOwotICAgICAgICBtX2xheWVyVGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodHJhY2tpbmdMYXllclBhaW50ZXIucmVs
ZWFzZSgpKTsKKyAgICAgICAgbV9sYXllclRleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRyYWNraW5nTGF5ZXJQYWludGVyLnJlbGVhc2UoKSwg
ZmFsc2UpOwogICAgIH0KICAgICB2aXJ0dWFsIH5VcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJv
bWl1bSgpIHsgfQogCkBAIC0xNjM2LDcgKzE2MjEsOCBAQCBwcml2YXRlOgogCiBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRl
ZER1cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAw
MDAsIDQwMDAwMDAsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKSk7CisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIoQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAwMCkpOworICAgIENDUHJpb3JpdHlDYWxj
dWxhdG9yIGNhbGN1bGF0b3I7CiAKICAgICBSZWZQdHI8VXBkYXRlVHJhY2tpbmdUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKQEAgLTE2NDksMzAgKzE2MzUsMjggQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNO
b3REaXN0b3J0ZWREdXJpbmdQYWludCkKICAgICBFWFBFQ1RfRVEoY29udGVudFJlY3Quc2l6ZSgp
LCBsYXllci0+Y29udGVudEJvdW5kcygpKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKGNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAg
IC8vIFVwZGF0ZSB0aGUgd2hvbGUgdGlsZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKICAgICBsYXllci0+dHJhY2tpbmdMYXllclBhaW50
ZXIoKS0+cmVzZXRQYWludGVkUmVjdCgpOwogCiAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJl
Y3QoKSwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnBhaW50ZWRSZWN0KCkpOwogCi0g
ICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKLSAgICB9CisgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAg
IC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBpbiBjb250ZW50IHNwYWNlLiBXaGVuIHBh
aW50aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxkIG1hdGNoIHRoZSBsYXllcidz
IGJvdW5kcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsK
IAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShsYXllclJlY3QsIGxheWVyLT50cmFja2luZ0xheWVy
UGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIH0KIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJbnZhbGlk
YXRpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAw
MDAwMCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpKTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0MDAwMDAwLCA0MDAwMDAwKSk7CisgICAgQ0NQcmlvcml0eUNhbGN1bGF0b3Ig
Y2FsY3VsYXRvcjsKIAogICAgIFJlZlB0cjxVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgVXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIApAQCAtMTY4NCwyMyArMTY2OCwyMCBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3Rv
cnRlZER1cmluZ0ludmFsaQogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmNvbnRlbnRCb3VuZHMoKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChj
b250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhjYWxjdWxhdG9y
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBV
cGRhdGUgdGhlIHdob2xlIHRpbGUuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBjb250ZW50UmVjdCwgMCk7CiAgICAgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCkt
PnJlc2V0UGFpbnRlZFJlY3QoKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KCks
IGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIAotICAgIHsK
LSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIHVw
ZGF0ZVRleHR1cmVzKCk7Ci0gICAgfQorICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJ
bnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgaW4gbGF5ZXIgc3BhY2UuIFdoZW4gcGFpbnRpbmcs
IHRoZSByZWN0IGdpdmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRz
LgogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGxheWVyUmVjdCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICBFWFBF
Q1RfSU5UX1JFQ1RfRVEobGF5ZXJSZWN0LCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+
cGFpbnRlZFJlY3QoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>