<?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>108506</bug_id>
          
          <creation_ts>2013-01-31 11:05:07 -0800</creation_ts>
          <short_desc>Remove Web Intents code from WebKit2</short_desc>
          <delta_ts>2013-01-31 11:12:53 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821702</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-31 11:05:07 -0800</bug_when>
    <thetext>Remove Web Intents code from WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821705</commentid>
    <comment_count>1</comment_count>
      <attachid>185818</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-31 11:06:20 -0800</bug_when>
    <thetext>Created attachment 185818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821722</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-31 11:12:53 -0800</bug_when>
    <thetext>Committed r141448: &lt;http://trac.webkit.org/changeset/141448&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185818</attachid>
            <date>2013-01-31 11:06:20 -0800</date>
            <delta_ts>2013-01-31 11:08:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108506-20130131110303.patch</filename>
            <type>text/plain</type>
            <size>119495</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODUyM2U2MzdmNDdmN2I0
N2Q2MDA2MzdhMWYwMGFjZDc1NTkzNDViOS4uZWEzZDFjYzViNDBjY2U2MDE1MGFiMjg1M2ZhOGE4
ZDI3YjIyYTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAxLTMxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdlYiBJ
bnRlbnRzIGNvZGUgZnJvbSBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDg1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW5jZSBub2JvZHkgYnVpbGRzIHdpdGggV2ViIEludGVudHMgZW5h
YmxlZCBhbnltb3JlLCBhbmQgc2luY2UgdGhlIGNvZGUgaXMgZ29pbmcgdG8gCisgICAgICAgIGJl
IHJlbW92ZWQgZnJvbSBXZWJDb3JlLCByZW1vdmUgaXQgZnJvbSBXZWJLaXQyLgorCisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElDbGllbnRUcmFp
dHMuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6
CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNo
YXJlZC9JbnRlbnREYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL0ludGVudFNlcnZp
Y2VJbmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvSW50ZW50U2VydmljZUluZm8u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudFNlcnZpY2VJbmZvLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRTZXJ2aWNlSW5mby5oOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nl
c3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxMy0wMS0zMSAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCB0cml2aWFsIGJ1aWxkIGZpeDogUHJlIEMrKzExIHRoZSB1c2Ugb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCAxYTI3NjEwMjQ3NTljZDEzZGM1ZTM2ZjRlZmMxZDJh
ZGZhNTM2MGIzLi40YjA4MjU5ZDdiZGU0N2NiNGZiN2U3M2E2ODJjMmI0ZGZhM2Q4YzUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMTcsOCArMTE3LDYgQEAgdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tHcmFtbWFyRGV0YWlsKiBXS0dyYW1tYXJEZXRhaWxSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0hpdFRlc3RSZXN1bHQqIFdLSGl0VGVzdFJl
c3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSWNvbkRhdGFiYXNlKiBXS0lj
b25EYXRhYmFzZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBX
S0luc3BlY3RvclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW50ZW50RGF0YSog
V0tJbnRlbnREYXRhUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnRlbnRTZXJ2
aWNlSW5mbyogV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYUNhY2hlTWFuYWdlciogV0tNZWRp
YUNhY2hlTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlv
bkRhdGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CkBAIC0xNDgsOCArMTQ2LDYgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUq
IFdLQnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhp
dFRlc3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1bmRsZUluc3BlY3RvclJlZjsKLXR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50KiBXS0J1bmRsZUludGVudFJlZjsK
LXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50UmVxdWVzdCogV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdl
UmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcAppbmRleCBlYjdh
NTFiZmE3MWEzNDE1ZWI0NzNmNjNjYWNjNDc5N2NjMmZlZWJhLi4wZjE1NTg0NTAyMjUxNzE4ZjNi
ZDk1Y2U2ODdhOGQ1MTAyZDM3NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJQ2xpZW50VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50
VHJhaXRzLmNwcApAQCAtMzksOCArMzksOCBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRz
PFdLQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKIGNvbnN0IHNp
emVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pjo6aW50ZXJmYWNl
U2l6ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQsIGRpZExheW91dEZvckZyYW1lKSwKICAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnQsIGRpZEZpbmlzaFByb2dyZXNzKSwKLSAgICBvZmZzZXRvZihXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQsIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSksCi0gICAgb2Zmc2V0b2YoV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LCByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSksCisgICAg
b2Zmc2V0b2YoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWVfdW5hdmFpbGFibGUpLAorICAgIG9mZnNldG9mKFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCwg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWVfdW5hdmFpbGFibGUpLAogICAgIHNpemVvZihX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQpCiB9OwogCkBAIC02Miw3ICs2Miw3IEBAIGNvbnN0IHNp
emVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnQ+OjppbnRlcmZhY2VT
aXplc0J5VmVyc2lvbltdCiAKIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlTG9h
ZGVyQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihX
S1BhZ2VMb2FkZXJDbGllbnQsIGRpZERldGVjdFhTU0ZvckZyYW1lKSwKLSAgICBvZmZzZXRvZihX
S1BhZ2VMb2FkZXJDbGllbnQsIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSksCisgICAgb2Zmc2V0
b2YoV0tQYWdlTG9hZGVyQ2xpZW50LCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVfdW5hdmFpbGFi
bGUpLAogICAgIHNpemVvZihXS1BhZ2VMb2FkZXJDbGllbnQpCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKaW5kZXggMzExOWRlNmRjNzlkMjg5YjQzN2M0YjU2Y2U2ZjliOTkzODI4N2M5
Ny4uY2FjM2Y3NzAxMDRlOTQ0ODFiODM1YjFhNGM5NWZiY2NiOGFiZGEwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaApAQCAtOTEsOCArOTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVH
cmFtbWFyRGV0YWlsLAogICAgICAgICBUeXBlSWNvbkRhdGFiYXNlLAogICAgICAgICBUeXBlSW5z
cGVjdG9yLAotICAgICAgICBUeXBlSW50ZW50RGF0YSwKLSAgICAgICAgVHlwZUludGVudFNlcnZp
Y2VJbmZvLAogICAgICAgICBUeXBlS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgVHlw
ZU1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBUeXBlTmF2aWdhdGlvbkRhdGEsCkBAIC0xMTgs
OCArMTE2LDYgQEAgcHVibGljOgogICAgICAgICBUeXBlQnVuZGxlRnJhbWUsCiAgICAgICAgIFR5
cGVCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBUeXBlQnVuZGxlSW5zcGVjdG9yLAotICAg
ICAgICBUeXBlQnVuZGxlSW50ZW50LAotICAgICAgICBUeXBlQnVuZGxlSW50ZW50UmVxdWVzdCwK
ICAgICAgICAgVHlwZUJ1bmRsZU5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIFR5cGVCdW5kbGVO
b2RlSGFuZGxlLAogICAgICAgICBUeXBlQnVuZGxlUGFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRl
bnREYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU3ODE5ZTQ1ZGE0N2M4
ZGY3MTVlMDA3YTM0OWY4N2ZiMGI0Yzc0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW50ZW50RGF0YS5oIgotCi0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
TWVzc2FnZVBvcnRDaGFubmVsLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLUludGVudERhdGE6OkludGVudERhdGEoSW50ZW50KiBjb3JlSW50ZW50KQotICAg
IDogYWN0aW9uKGNvcmVJbnRlbnQtPmFjdGlvbigpKQotICAgICwgdHlwZShjb3JlSW50ZW50LT50
eXBlKCkpCi0gICAgLCBzZXJ2aWNlKGNvcmVJbnRlbnQtPnNlcnZpY2UoKSkKLSAgICAsIGRhdGEo
Y29yZUludGVudC0+ZGF0YSgpLT5kYXRhKCkpCi0gICAgLCBleHRyYXMoY29yZUludGVudC0+ZXh0
cmFzKCkpCi0gICAgLCBzdWdnZXN0aW9ucyhjb3JlSW50ZW50LT5zdWdnZXN0aW9ucygpKQotewot
ICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBjb3JlTWVzc2FnZVBvcnRzID0gY29yZUludGVu
dC0+bWVzc2FnZVBvcnRzKCk7Ci0gICAgaWYgKGNvcmVNZXNzYWdlUG9ydHMpIHsKLSAgICAgICAg
c2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IGNvcmVNZXNzYWdlUG9ydHMtPnNpemUoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKLSAgICAgICAg
ICAgIG1lc3NhZ2VQb3J0cy5hcHBlbmQoV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVBv
cnRDaGFubmVsKCgqY29yZU1lc3NhZ2VQb3J0cylbaV0tPmNoYW5uZWwoKSkpOwotICAgIH0KLX0K
LQotdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlKGFjdGlvbik7Ci0gICAgZW5jb2Rlci5l
bmNvZGUodHlwZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoc2VydmljZSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShkYXRhKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUo
ZXh0cmFzKTsKLSAgICBlbmNvZGVyLmVuY29kZShzdWdnZXN0aW9ucyk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobWVzc2FnZVBvcnRzKTsKLX0KLQotYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQotewot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEuYWN0aW9uKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEudHlwZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRh
LnNlcnZpY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQ29yZUlQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaW50ZW50RGF0YS5kYXRhLmFwcGVuZChkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEuZXh0cmFzKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEu
c3VnZ2VzdGlvbnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9JbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2FkYjE5MGViYWQ0ZjE0MjhmYTU2NzdkZjZkNTNi
ZTg1ZmRiOGNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEludGVudERhdGFfaAotI2Rl
ZmluZSBJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBD
b3JlSVBDIHsKLWNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLWNsYXNzIEFyZ3VtZW50RW5jb2RlcjsK
LX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW50ZW50OwotfQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RydWN0IEludGVudERhdGEgewotICAgIEludGVudERhdGEoKSB7IH0KLSAg
ICBleHBsaWNpdCBJbnRlbnREYXRhKFdlYkNvcmU6OkludGVudCopOwotCi0gICAgdm9pZCBlbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEludGVudERhdGEmKTsKLQotICAgIFN0cmlu
ZyBhY3Rpb247Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAgV2ViQ29yZTo6S1VSTCBzZXJ2aWNlOwot
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4
dHJhczsKLSAgICBWZWN0b3I8V2ViQ29yZTo6S1VSTD4gc3VnZ2VzdGlvbnM7Ci0gICAgVmVjdG9y
PHVpbnQ2NF90PiBtZXNzYWdlUG9ydHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIEludGVudERhdGFfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudFNlcnZpY2VJbmZvLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnRTZXJ2aWNlSW5mby5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM0MDIwMGVkMTMzMmEzYTViMjBhN2EyZDBjNzM0ZGEzOTlhMjkw
YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0ludGVudFNlcnZpY2VJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbnRlbnRTZXJ2aWNlSW5mby5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXZvaWQgSW50ZW50U2VydmljZUluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGUoYWN0aW9uKTsKLSAgICBl
bmNvZGVyLmVuY29kZSh0eXBlKTsKLSAgICBlbmNvZGVyLmVuY29kZShocmVmKTsKLSAgICBlbmNv
ZGVyLmVuY29kZSh0aXRsZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUoZGlzcG9zaXRpb24pOwotfQot
Ci1ib29sIEludGVudFNlcnZpY2VJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBJbnRlbnRTZXJ2aWNlSW5mbyYgaW50ZW50U2VydmljZUluZm8pCi17Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50U2VydmljZUluZm8uYWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudFNlcnZpY2VJbmZv
LnR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
aW50ZW50U2VydmljZUluZm8uaHJlZikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWRlY29kZXItPmRlY29kZShpbnRlbnRTZXJ2aWNlSW5mby50aXRsZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnRTZXJ2aWNlSW5mby5kaXNw
b3NpdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50U2VydmljZUluZm8u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnRTZXJ2aWNlSW5mby5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZjEzZDNiOGUyYmQ0NTA2OWI0YzUyZjE0M2Q5NDA3ZDJhZWYz
ZDJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnRTZXJ2aWNlSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbnRlbnRTZXJ2aWNlSW5m
b19oCi0jZGVmaW5lIEludGVudFNlcnZpY2VJbmZvX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5U
U19UQUcpCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIENvcmVJUEMg
ewotY2xhc3MgQXJndW1lbnREZWNvZGVyOwotY2xhc3MgQXJndW1lbnRFbmNvZGVyOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IEludGVudFNlcnZpY2VJbmZvIHsKLSAgICB2b2lk
IGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSW50ZW50U2VydmljZUluZm8mKTsK
LQotICAgIFN0cmluZyBhY3Rpb247Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAgV2ViQ29yZTo6S1VS
TCBocmVmOwotICAgIFN0cmluZyB0aXRsZTsKLSAgICBTdHJpbmcgZGlzcG9zaXRpb247Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCi0KLSNlbmRpZiAvLyBJbnRlbnRTZXJ2aWNlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODQzMjljNWU3Y2I4YzgxN2ZmY2I2YTc1MzA4NDIyZDRmNjljMmFiZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
YkludGVudFNlcnZpY2VJbmZvLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW50ZW50U2VydmljZUluZm86OldlYkludGVudFNlcnZp
Y2VJbmZvKGNvbnN0IEludGVudFNlcnZpY2VJbmZvJiBzdG9yZSkKLSAgICA6IG1fc3RvcmUoc3Rv
cmUpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
Ql9JTlRFTlRTX1RBRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudFNlcnZpY2VJ
bmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OTQ2MDFmMDVhNDIxNWFlOGQ3
ZDdhNjZiZGVmMGI2ZGEwMzcwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYkludGVudFNlcnZpY2VJbmZvX2gKLSNkZWZpbmUgV2ViSW50ZW50U2VydmljZUluZm9f
aAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgotI2luY2x1ZGUgIkludGVudFNlcnZpY2VJbmZvLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZv
IDogcHVibGljIEFQSU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJ
VHlwZSA9IFR5cGVJbnRlbnRTZXJ2aWNlSW5mbzsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkludGVudFNlcnZpY2VJbmZvPiBjcmVhdGUoY29uc3QgSW50ZW50U2VydmljZUluZm8mIHN0b3Jl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnRTZXJ2aWNlSW5m
byhzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudFNlcnZpY2VJbmZvKCkg
eyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUu
YWN0aW9uOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBwYXlsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmUudHlwZTsgfQotICAgIGNvbnN0IFdlYkNvcmU6OktVUkwmIGhyZWYoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JlLmhyZWY7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZS50aXRsZTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGlzcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmRpc3Bvc2l0aW9uOyB9Ci0KLXByaXZhdGU6Ci0gICAg
V2ViSW50ZW50U2VydmljZUluZm8oY29uc3QgSW50ZW50U2VydmljZUluZm8mKTsKLQotICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQotCi0gICAgSW50ZW50
U2VydmljZUluZm8gbV9zdG9yZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2VuZGlmIC8vIFdlYkludGVudFNlcnZp
Y2VJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRl
eCAyMzIwNDViODcxNWJhMTk1YzI0NDIwMzdiMmZkN2E5NDkwZmVmNzYwLi5kNTEzYjk2ZWU4Mzkz
NjY1NzBhYTc1MzFhYjE2ZTEzZjA5MGYzOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03NCw4ICs3NCw2IEBAIGNsYXNzIFdlYkdyYW1tYXJEZXRh
aWw7CiBjbGFzcyBXZWJIaXRUZXN0UmVzdWx0OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xh
c3MgV2ViSW5zcGVjdG9yUHJveHk7Ci1jbGFzcyBXZWJJbnRlbnREYXRhOwotY2xhc3MgV2ViSW50
ZW50U2VydmljZUluZm87CiBjbGFzcyBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk7CiBj
bGFzcyBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlvbkRhdGE7
CkBAIC0xMTksOCArMTE3LDYgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLR2VvbG9jYXRpb25Qb3Np
dGlvblJlZiwgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0dy
YW1tYXJEZXRhaWxSZWYsIFdlYkdyYW1tYXJEZXRhaWwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tI
aXRUZXN0UmVzdWx0UmVmLCBXZWJIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
SWNvbkRhdGFiYXNlUmVmLCBXZWJJY29uRGF0YWJhc2UpCi1XS19BRERfQVBJX01BUFBJTkcoV0tJ
bnRlbnREYXRhUmVmLCBXZWJJbnRlbnREYXRhKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLSW50ZW50
U2VydmljZUluZm9SZWYsIFdlYkludGVudFNlcnZpY2VJbmZvKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclBy
b3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFDYWNoZU1hbmFnZXJSZWYsIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJl
ZiwgV2ViTmF2aWdhdGlvbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0ludGVudERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmU2MTg3
MWNjYmZiOGQyNTU0OTU3YThiZmJlMGYxYmQwM2U2OWMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0ludGVudERhdGEu
aCIKLQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlRGlj
dGlvbmFyeS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLRGljdGlvbmFy
eS5oIgotI2luY2x1ZGUgIldLU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0jaW5jbHVkZSAiV2ViSW50ZW50
RGF0YS5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdL
SW50ZW50RGF0YUdldFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHJl
dHVybiB0b0FQSShXZWJJbnRlbnREYXRhOjpBUElUeXBlKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7
Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVu
dERhdGFSZWYgaW50ZW50UmVmKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKLSNlbHNlCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weVR5cGUo
V0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0g
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5wYXlsb2FkVHlwZSgpKTsK
LSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tVUkxSZWYgV0tJbnRlbnREYXRh
Q29weVNlcnZpY2UoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKLXsKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCi0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5z
ZXJ2aWNlKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1XS0FycmF5UmVm
IFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQot
ewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVu
dFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0j
ZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUoV0tJbnRl
bnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQotewotI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJh
KHRvV1RGU3RyaW5nKGtleSkpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQot
V0tEaWN0aW9uYXJ5UmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChpbnRlbnRSZWYpLT5leHRyYXMoKS5sZWFrUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1cm4g
MDsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50
RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWYxYjQ1OWZlYjZlOWNhZTJl
MDNmNThiNzljZDk3MGVhZGQ4M2E1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV0tJbnRlbnREYXRhX2gKLSNkZWZpbmUgV0tJbnRlbnREYXRhX2gKLQotI2luY2x1ZGUg
PFdlYktpdDIvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpOwotCi1X
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERhdGFS
ZWYgaW50ZW50UmVmKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5VHlw
ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBXS0ludGVu
dERhdGFDb3B5U2VydmljZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKLVdLX0VYUE9SVCBX
S0FycmF5UmVmIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50
ZW50UmVmKTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5RXh0cmFWYWx1
ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JU
IFdLRGljdGlvbmFyeVJlZiBXS0ludGVudERhdGFDb3B5RXh0cmFzKFdLSW50ZW50RGF0YVJlZiBp
bnRlbnRSZWYpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
V0tJbnRlbnREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0ludGVudFNlcnZpY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0ludGVudFNlcnZpY2VJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWEzMGZiNzFhNzg3ODE1MjVhODRiZGU0Nzc3ZmVhNTE4OTAzZDkzZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tJbnRlbnRTZXJ2aWNlSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0tJbnRlbnRTZXJ2aWNlSW5mby5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0KLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgi
Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tJbnRlbnRT
ZXJ2aWNlSW5mb0dldFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAg
ICByZXR1cm4gdG9BUEkoV2ViSW50ZW50U2VydmljZUluZm86OkFQSVR5cGUpOwotI2Vsc2UKLSAg
ICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS0ludGVudFNlcnZpY2VJbmZv
Q29weUFjdGlvbihXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VSZWYpCi17Ci0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlcnZp
Y2VSZWYpLT5hY3Rpb24oKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVdL
U3RyaW5nUmVmIFdLSW50ZW50U2VydmljZUluZm9Db3B5VHlwZShXS0ludGVudFNlcnZpY2VJbmZv
UmVmIHNlcnZpY2VSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlcnZpY2VSZWYpLT5wYXlsb2FkVHlwZSgpKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tVUkxSZWYgV0tJbnRlbnRTZXJ2aWNlSW5m
b0NvcHlIcmVmKFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZVJlZikKLXsKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwoc2Vy
dmljZVJlZiktPmhyZWYoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVdL
U3RyaW5nUmVmIFdLSW50ZW50U2VydmljZUluZm9Db3B5VGl0bGUoV0tJbnRlbnRTZXJ2aWNlSW5m
b1JlZiBzZXJ2aWNlUmVmKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgcmV0
dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZXJ2aWNlUmVmKS0+dGl0bGUoKSk7Ci0jZWxzZQotICAg
IHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVdLU3RyaW5nUmVmIFdLSW50ZW50U2VydmljZUluZm9D
b3B5RGlzcG9zaXRpb24oV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVmKQotewotI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChz
ZXJ2aWNlUmVmKS0+ZGlzcG9zaXRpb24oKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRT
ZXJ2aWNlSW5mby5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50U2Vy
dmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIxY2ZmZGU4YzY5OGJh
YjNkZGNlMzA0ZmJmNTNiNzQyOGQ1MWEzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRT
ZXJ2aWNlSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXS0ludGVudFNlcnZpY2VJbmZvX2gKLSNkZWZpbmUgV0tJbnRlbnRT
ZXJ2aWNlSW5mb19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS0lu
dGVudFNlcnZpY2VJbmZvR2V0VHlwZUlEKCk7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRl
bnRTZXJ2aWNlSW5mb0NvcHlBY3Rpb24oV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVm
KTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudFNlcnZpY2VJbmZvQ29weVR5cGUoV0tJ
bnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVmKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBXS0lu
dGVudFNlcnZpY2VJbmZvQ29weUhyZWYoV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVm
KTsKLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudFNlcnZpY2VJbmZvQ29weVRpdGxlKFdL
SW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZVJlZik7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlEaXNwb3NpdGlvbihXS0ludGVudFNlcnZpY2VJbmZvUmVm
IHNlcnZpY2VSZWYpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYg
Ly8gV0tJbnRlbnRTZXJ2aWNlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCmluZGV4IGRmNGFmNjgzNTE5N2RiNGJlY2VmZDg3YjFkOWM4ZjJjYTNhNTY0YTAu
LjU1MGQ3YmVlM2QwMjc1ZmFmOWI4ZjBiZTEyNzZlYTc3MjJmYWVhNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC03NjAsMTMgKzc2MCw2IEBAIHZvaWQg
V0tQYWdlRW5kUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UpCiB9CiAjZW5kaWYKIAotdm9pZCBXS1Bh
Z2VEZWxpdmVySW50ZW50VG9GcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tJbnRlbnREYXRhUmVmIGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
dG9JbXBsKHBhZ2UpLT5kZWxpdmVySW50ZW50VG9GcmFtZSh0b0ltcGwoZnJhbWUpLCB0b0ltcGwo
aW50ZW50KSk7Ci0jZW5kaWYKLX0KLQogV0tJbWFnZVJlZiBXS1BhZ2VDcmVhdGVTbmFwc2hvdE9m
VmlzaWJsZUNvbnRlbnQoV0tQYWdlUmVmKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IGRlYTJjMTExYTNhNzU4Nzc3MWQwNWViMDQ3
YmY2NjY0NzQ0YTA0OWUuLjhmMDUxZGQ2MGE1ZjQwZGVhZDJhZmIzOGMyNjViM2U3NjM3MzA4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTc0LDggKzc0LDYg
QEAgdHlwZWRlZiBib29sICgqV0tQYWdlU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQmEKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VQbHVnaW5EaWRGYWlsQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Vycm9yQ29kZSBlcnJvckNvZGUsIFdLU3RyaW5nUmVm
IG1pbWVUeXBlLCBXS1N0cmluZ1JlZiBwbHVnaW5JZGVudGlmaWVyLCBXS1N0cmluZ1JlZiBwbHVn
aW5WZXJzaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFn
ZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZVJlZ2lzdGVySW50
ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTGF5
b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25l
cywgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogLy8gRGVw
cmVjYXRlZApAQCAtMTI3LDggKzEyNSw4IEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewog
ICAgIFdLUGFnZVBsdWdpbkRpZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGx1Z2luRGlkRmFpbDsKIAogICAgIC8vIFZlcnNpb24gMgotICAgIFdL
UGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lOwotICAgIFdLUGFnZVJlZ2lzdGVySW50
ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0
ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWU7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZV91bmF2YWlsYWJsZSkodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlKSh2b2lkKTsKIAogICAgIFdLUGFnZURp
ZExheW91dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkTGF5b3V0OwogfTsKQEAgLTQ4OSw4ICs0ODcsNiBAQCBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlLCB2b2lkKiBjb250
ZXh0LAogdHlwZWRlZiB2b2lkICgqV0tQYWdlRm9yY2VSZXBhaW50RnVuY3Rpb24pKFdLRXJyb3JS
ZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUZvcmNlUmVwYWludChXS1BhZ2VSZWYg
cGFnZSwgdm9pZCogY29udGV4dCwgV0tQYWdlRm9yY2VSZXBhaW50RnVuY3Rpb24gZnVuY3Rpb24p
OwogCi1XS19FWFBPUlQgdm9pZCBXS1BhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCk7Ci0KIC8qCiAg
ICAgU29tZSBvZiB0aGUgbW9yZSBjb21tb24gY29tbWFuZCBuYW1lIHN0cmluZ3MgaW5jbHVkZSB0
aGUgZm9sbG93aW5nLCBhbHRob3VnaCBhbnkgV2ViQ29yZSBFZGl0b3JDb21tYW5kIHN0cmluZyBp
cyBzdXBwb3J0ZWQ6CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0
YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZDhjNjRiYTg1OTYyNTFkNWQz
NmNmZTkxOWEyOTYzODI3MTE5NGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKLQotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5jbHVkZSAiSW1t
dXRhYmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1
ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgot
I2luY2x1ZGUgIldlYlVSTC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW50ZW50RGF0
YTo6V2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzKQotICAgIDogbV9zdG9yZShzdG9yZSkKLSAgICAsIG1fcHJvY2Vzcyhwcm9jZXNz
KQotewotfQotCi1XZWJJbnRlbnREYXRhOjp+V2ViSW50ZW50RGF0YSgpCi17Ci0gICAgLy8gUmVt
b3ZlIE1lc3NhZ2VQb3J0Q2hhbm5lbHMgZnJvbSBXZWJQcm9jZXNzLgotICAgIGlmIChtX3Byb2Nl
c3MpIHsKLSAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBv
cnRzLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9y
dHM7ICsraSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVs
KG1fc3RvcmUubWVzc2FnZVBvcnRzW2ldKTsKLSAgICB9Ci19Ci0KLVBhc3NSZWZQdHI8V2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKLXsKLSAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7Ci0gICAgcmV0dXJuIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpOwotfQotCi1QYXNzUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBXZWJJbnRlbnREYXRhOjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0gICAg
Y29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7
Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0
aW9ucyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kp
Ci0gICAgICAgIHdrU3VnZ2VzdGlvbnNbaV0gPSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dl
c3Rpb25zW2ldKTsKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlv
bnMpOwotfQotCi1TdHJpbmcgV2ViSW50ZW50RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RvcmUuZXh0cmFzLmdldChrZXkpOwotfQotCi1QYXNz
UmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0
Ci17Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKLSAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMu
ZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdr
RXh0cmFzLnNldChpdC0+a2V5LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+dmFsdWUpKTsKLQotICAg
IHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOWQ1OWY5MGNlYTU4ZGJhNmI2OTU1ZDNiMTZjNjExZmQ4OTZiNjFjMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnRlbnREYXRhX2gKLSNkZWZpbmUgV2Vi
SW50ZW50RGF0YV9oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJBUElP
YmplY3QuaCIKLSNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJM
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIEltbXV0YWJsZUFycmF5OwotY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKLWNsYXNz
IFdlYlByb2Nlc3NQcm94eTsKLWNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLQotY2xh
c3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3QgewotcHVibGljOgotICAgIHN0YXRp
YyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0YTsKLQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJJbnRlbnREYXRhKHN0b3JlLCBwcm9jZXNzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
V2ViSW50ZW50RGF0YSgpOwotCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JlLmFjdGlvbjsgfQotICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBz
ZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9Ci0gICAgUGFzc1JlZlB0
cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKLSAgICBTdHJpbmcgZXh0
cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGlj
dGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
c3VnZ2VzdGlvbnMoKSBjb25zdDsKLQotICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yZTsgfQotCi1wcml2YXRlOgotICAgIFdlYkludGVudERhdGEoY29u
c3QgSW50ZW50RGF0YSYsIFdlYlByb2Nlc3NQcm94eSopOwotCi0gICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9Ci0KLSAgICBJbnRlbnREYXRhIG1fc3RvcmU7
Ci0gICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIFdlYklu
dGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA5M2M2MGQ0MzBlODQ4OWNhZTBkOGQ3ODExMjkyNjEzMGU2MWU4YWNhLi42NzRkZGIx
MTc0ZTU1ZDZmMWNlZDgyYjAwZDM4MzRkYTdiYTJjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMzEsMTEgKzMxLDYgQEAKICNpbmNsdWRl
ICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgotI2luY2x1ZGUg
IldlYkludGVudFNlcnZpY2VJbmZvLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTc2LDI2ICsxNzEsNiBAQCB2b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcgogICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CiB9CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlk
UmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIFdlYkludGVudERhdGEqIGludGVudERhdGEsIEFQSU9iamVjdCogdXNlckRhdGEpCi17
Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShpbnRlbnREYXRhKSwgdG9BUEkodXNlckRhdGEpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZShX
ZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJJbnRlbnRTZXJ2aWNl
SW5mbyogc2VydmljZUluZm8sIEFQSU9iamVjdCogdXNlckRhdGEpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5yZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc2VydmljZUluZm8pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmNsaWVudEluZm8pOwotfQotI2VuZGlmCi0KIGJvb2wgV2ViTG9hZGVyQ2xpZW50OjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFj
ZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5o
CmluZGV4IDg1ZjEwNzI4N2M3ZDk5NTU2YWJjN2JmMzAwZmIxYTFmMGE5YmQ2ZmMuLjUzZjI0Yjli
YzNhOTk4ZDM3MmMwZTkyMzk3M2Y0NzNmNmI1YmE4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDE0ICs0OCw2IEBAIGNsYXNzIFdlYkZyYW1l
UHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm90ZWN0aW9uU3BhY2U7CiAK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi1jbGFzcyBXZWJJbnRlbnREYXRhOwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotY2xhc3MgV2ViSW50ZW50U2VydmljZUluZm87
Ci0jZW5kaWYKLQogY2xhc3MgV2ViTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS1Bh
Z2VMb2FkZXJDbGllbnQsIGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVi
bGljOgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CkBAIC03MywxMyArNjUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVBy
b3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVj
dCopOwogICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIEFQSU9iamVjdCopOwotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lk
IGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
V2ViSW50ZW50RGF0YSosIEFQSU9iamVjdCopOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFNfVEFHKQotICAgIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgQVBJT2JqZWN0
Kik7Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgc2hvdWxkIGJlIHJlbW92ZWQuIFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQogICAgIC8vIGFzIHdlbGwuIFRoZXkg
YXJlIGJvdGggYmVpbmcgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YzJjNDM2NmE4YjNmYTgzMGM4MTg3ZmQ3NmEy
NDFkOTQxYzA0NGQ0Li41MWUyN2FmMTQyZGNmZWRjNGQ1MzFjZDExOGE1OGFhOWQ3MmFlNTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTIsMTMgKzky
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJJbnRlbnREYXRhLmgi
Ci0jaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRh
LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKLSNlbmRpZgotCiAjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgpAQCAtMTc4NywxNiArMTc4MCw2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgUGFzc1Jl
ZlB0cjxTdHJpbmdDYWxsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBXZWJQYWdlUHJveHk6OmRlbGl2
ZXJJbnRlbnRUb0ZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJJbnRlbnREYXRhKiB3ZWJJ
bnRlbnREYXRhKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlbGl2ZXJJbnRlbnRUb0ZyYW1l
KGZyYW1lLT5mcmFtZUlEKCksIHdlYkludGVudERhdGEtPnN0b3JlKCkpLCBtX3BhZ2VJRCk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoUGFzc1Jl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPFN0cmluZ0Nh
bGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwpAQCAtMjA3OSwyMiArMjA2Miw2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgbV9sb2FkZXJDbGllbnQu
ZGlkRmluaXNoUHJvZ3Jlc3ModGhpcyk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IEludGVudFNlcnZpY2VJbmZvJiBzZXJ2aWNlSW5mbywgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1
c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3Nh
Z2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUp
OwotCi0gICAgUmVmUHRyPFdlYkludGVudFNlcnZpY2VJbmZvPiB3ZWJJbnRlbnRTZXJ2aWNlSW5m
byA9IFdlYkludGVudFNlcnZpY2VJbmZvOjpjcmVhdGUoc2VydmljZUluZm8pOwotICAgIG1fbG9h
ZGVyQ2xpZW50LnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJ
bnRlbnRTZXJ2aWNlSW5mby5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOwotfQotI2VuZGlmCi0KIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJM
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBjbGVhclBlbmRpbmdB
UElSZXF1ZXN0VVJMKCk7CkBAIC0yMzgyLDIyICsyMzQ5LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGUKICAgICBtX2xvYWRlckNsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0aGlzLCBmcmFt
ZSwgdXNlckRhdGEuZ2V0KCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXRhLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVj
b2RlcikKLXsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0
VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0
KCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7Ci0gICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7Ci0KLSAgICBSZWZQdHI8V2ViSW50
ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRh
LCBtX3Byb2Nlc3MuZ2V0KCkpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50RGF0YS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkp
OwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGRlM2FkNWMzN2YwZDA0MDRiMDZmNmIxMzFhYmRmNmNjYjFl
M2I0YWYuLjNhYTIwZmNiMzQ2NDNlMDQxN2U2OWYzMmM3ZTE2YmIzY2E0NGM1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyNCwxMCArMTI0LDYgQEAgdHlw
ZWRlZiBHdGtXaWRnZXQqIFBsYXRmb3JtV2lkZ2V0OwogdHlwZWRlZiBFdmFzX09iamVjdCogUGxh
dGZvcm1XaWRnZXQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLWNsYXNzIFdl
YkludGVudERhdGE7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQ7CkBAIC0xNjcsMTQgKzE2Myw2IEBAIGNsYXNzIFdlYkdlc3R1cmVF
dmVudDsKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCi1zdHJ1Y3QgSW50ZW50RGF0YTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTX1RBRykKLXN0cnVjdCBJbnRlbnRTZXJ2aWNlSW5mbzsKLSNlbmRpZgotCiB0eXBlZGVm
IEdlbmVyaWNDYWxsYmFjazxXS1N0cmluZ1JlZiwgU3RyaW5nSW1wbCo+IFN0cmluZ0NhbGxiYWNr
OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYsIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiAKQEAgLTU2Mywx
MCArNTUxLDYgQEAgcHVibGljOgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8U2NyaXB0VmFsdWVDYWxsYmFjaz4pOwogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZShXZWJGcmFtZVByb3h5Kiwg
V2ViSW50ZW50RGF0YSopOwotI2VuZGlmCi0KICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJh
bWVQcm94eSopOwogICAgIGZsb2F0IGZvb3RlckhlaWdodChXZWJGcmFtZVByb3h5Kik7CiAgICAg
dm9pZCBkcmF3SGVhZGVyKFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKQEAgLTgwOCwxMyArNzkyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVByb2dy
ZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOwogCi0jaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICB2b2lkIHJlZ2lzdGVySW50
ZW50U2VydmljZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudFNlcnZpY2VJ
bmZvJiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSNlbmRpZgotICAgIAogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50MzJf
dCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90IG1vdXNlQnV0dG9u
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50
NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgbmF2
aWdhdGlvblR5cGUsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRvbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0
X3QgbGlzdGVuZXJJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMDExZWQzZmMzZTExZTlhNzE1ZTE1ZmM3NzVlMzdkNzY0MTNhZDIyOS4uMGY5NTE5
NDU1ZTQ5ZGFmZmFmN2M5MDdiNTg0YTMzNTBmYWI3MTFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDQsMTQgKzEwNCw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG5hdmln
YXRpb25UeXBlLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0b24sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXVEY6OlN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIg
dXNlckRhdGEpIFZhcmlhZGljCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgIFZhcmlhZGljCiAKLSAgICAjIEludGVu
dCBtZXNzYWdlcwotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBEaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbnRlbnREYXRhIGludGVudCwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMK
LSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgUmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbnRlbnRTZXJ2aWNlSW5m
byBzZXJ2aWNlSW5mbywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1
c2VyRGF0YSkgVmFyaWFkaWMKLSNlbmRpZgotCiAgICAgIyBQcm9ncmVzcyBtZXNzYWdlcwogICAg
IERpZENoYW5nZVByb2dyZXNzKGRvdWJsZSB2YWx1ZSkKICAgICBEaWRGaW5pc2hQcm9ncmVzcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDE3
NGNkNWY5MDI5NmVkNWE2YzNhZjQzZTZkYWQwMzg1OWNlZmIzMWEuLmM3MDUzNmEzZjMxZWJlNWE2
ODJkNTRlZDYzMzBmZDQ5ZmY5MzliNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yMTQsMTYgKzIxNCw2IEBAIFZlY3RvcjxXZWJQYWdlUHJv
eHkqPiBXZWJQcm9jZXNzUHJveHk6OnBhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCi17Ci0gICAgaWYgKCFpc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChjaGFubmVsSUQpLCAvKiBkZXN0aW5hdGlvbklEICov
IDApOwotfQotI2VuZGlmCi0KIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94
eTo6d2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDE0MDIwMjYwYTgzYjgzYWIx
ZmY2OWY2MTBiMTk0NDQxNjhiMWUwOGEuLmQyNzk4Y2ExNGRkYzRiYjRhZGQ4OTc0ZDVkOGUxZmY4
YWRjNGNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
QEAgLTg1LDEwICs4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0
X3QgcGFnZUlEKTsKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMoKSBjb25zdDsKIAot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5l
bCh1aW50NjRfdCBjaGFubmVsSUQpOwotI2VuZGlmCi0KICAgICBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdDsKIAogICAgIFJl
c3BvbnNpdmVuZXNzVGltZXIqIHJlc3BvbnNpdmVuZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNw
b25zaXZlbmVzc1RpbWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCA1
OWMzNTcwYmQxMDgwNDJlZjVkZTdjNDNlM2ZhODA5ZjA5YzljYmEzLi5hZWNjZjhhN2YwMDA3OGMx
OWFiZDJiZjc4Nzk5OTc2ZDU4NGMyZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0
LmgKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdDsKLWNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwotY2xhc3MgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTsKQEAgLTYzLDggKzYxLDYgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uUmVmLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkK
IFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQot
V0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUludGVu
dCkKLVdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmlnYXRp
b25BY3Rpb25SZWYsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwUHJv
eHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2NmJlZTkwYjAwM2M3MDM1NmE1MTk3N2ZmNjIxMzFkNTcwZjc3ZTAyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0J1bmRsZUludGVudC5oIgotCi0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5jbHVkZSAiSW1tdXRh
YmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCi0jaW5j
bHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0jaW5jbHVk
ZSAiV0tEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJX
S1N0cmluZy5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0jZW5kaWYKLQot
V0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLSAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkFQSVR5cGUpOwot
I2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1XS0J1bmRsZUludGVudFJlZiBXS0J1
bmRsZUludGVudENyZWF0ZShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikKLXsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGFjdGlvbktl
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWN0aW9uIikpOwotICAg
IFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIGFjdGlvbktleS5nZXQoKSkpOwotICAgIEFT
U0VSVChhY3Rpb24pOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0eXBlS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpOwotICAgIFdLU3RyaW5n
UmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShkaWN0aW9uYXJ5UmVmLCB0eXBlS2V5LmdldCgpKSk7Ci0gICAgQVNTRVJUKHR5cGUpOwot
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkYXRhS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpOwotICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVl
UmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5UmVmLCBkYXRhS2V5LmdldCgpKSk7Ci0gICAg
TWVzc2FnZVBvcnRBcnJheSBkdW1teVBvcnRzOwotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0KLSAg
ICBSZWZQdHI8SW50ZW50PiBjb3JlSW50ZW50ID0gSW50ZW50OjpjcmVhdGUodG9XVEZTdHJpbmco
YWN0aW9uKSwgdG9XVEZTdHJpbmcodHlwZSksIGRhdGEgPyBzdGF0aWNfY2FzdDxTZXJpYWxpemVk
U2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkgOiAw
LCBkdW1teVBvcnRzLCBlYyk7Ci0KLSAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRl
bnQ6OmNyZWF0ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1
cm4gMDsKLSNlbmRpZgotfQotCi1XS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24o
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKLSNl
bHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRl
bnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCi17Ci0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+cGF5
bG9hZFR5cGUoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVdLVVJMUmVm
IFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQot
ewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9J
bXBsKGludGVudFJlZiktPnNlcnZpY2UoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLVdLQXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50UmVmKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKLSNl
bHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVm
IGtleSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0b1dURlN0cmluZyhrZXkpKSk7Ci0jZWxzZQotICAg
IHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVdLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUludGVudENv
cHlFeHRyYXMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQotewotI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJhcygpLmxl
YWtSZWYoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLXNpemVfdCBXS0J1
bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQot
ewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSog
bWVzc2FnZVBvcnRzID0gdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKS0+bWVzc2FnZVBv
cnRzKCk7Ci0KLSAgICByZXR1cm4gbWVzc2FnZVBvcnRzID8gbWVzc2FnZVBvcnRzLT5zaXplKCkg
OiAwOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDNmZTAyODQ3YmZlOGIw
MDYyYjYxYjhiYTk4MWRiZjM0NzU0N2FlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCdW5kbGVJbnRlbnRfaAotI2RlZmluZSBXS0J1
bmRsZUludGVudF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1
bmRsZUludGVudEdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tC
dW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpOwotCi1XS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZik7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5
VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOwotV0tfRVhQT1JUIFdLVVJMUmVmIFdL
QnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKLVdL
X0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxl
SW50ZW50UmVmIGludGVudFJlZik7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVm
IGtleSk7Ci1XS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJh
cyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOwotV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRs
ZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKLQot
I2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ3NzJlYTU2NGI4NjAyNTFiYTU0ZmJiNGJmMjQwZTM2
ZGZlZTRiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0jaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVJbnRlbnQuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIK
LSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLSNlbmRpZgotCi1XS1R5cGVJRCBXS0J1bmRsZUludGVu
dFJlcXVlc3RHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICByZXR1
cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjpBUElUeXBlKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikK
LXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSW50
ZW50PiB3ZWJJbnRlbnQgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVy
biB0b0FQSSh3ZWJJbnRlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0jZWxzZQotICAgIHJldHVy
biAwOwotI2VuZGlmCi19Ci0KLXZvaWQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9zdFJlc3VsdChX
S0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2VyaWFsaXplZERhdGFSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IHJldHVybiB0b0ltcGwocmVxdWVzdFJlZiktPnBvc3RSZXN1bHQodG9JbXBsKHNlcmlhbGl6ZWRE
YXRhUmVmKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFp
bHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGFSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQotICAgIHJldHVybiB0b0ltcGwocmVxdWVzdFJlZiktPnBvc3RGYWlsdXJlKHRvSW1wbChzZXJp
YWxpemVkRGF0YVJlZikpOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA1YWZhNGY5MmJh
NmRhNjBlNWUzMGVmMTQ4NThkOWYzMjNhODYyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0J1bmRsZUludGVudFJlcXVl
c3RfaAotI2RlZmluZSBXS0J1bmRsZUludGVudFJlcXVlc3RfaAotCi0jaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgot
Ci1XS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7Ci0K
LVdLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50
ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0KTsKLQotV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9zdFJlc3VsdChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYg
cmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwotV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9zdEZhaWx1cmUoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWREYXRhKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdL
QnVuZGxlSW50ZW50UmVxdWVzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5k
ZXggNWZlNGM2NDI0MjZjNWQxYTFlNDM5ZGE2MzE5YjFmMmY4MzEzMTc4MC4uMmE1NTM4ZTQ1YzIw
YmZmMzRjNzZkMzE4ZDE5NWEwODljYjQ5ODdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcApAQCAtNTQsMTAgKzU0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCkBAIC0zNTksMTMgKzM1
NSw2IEBAIHZvaWQgV0tCdW5kbGVQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tMYXlvdXRNaWxlCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5saXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHRvTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9
CiAKLXZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdG9JbXBsKHBhZ2VSZWYp
LT5kZWxpdmVyQ29yZUludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0
b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgpKTsKLSNlbmRpZgotfQotCiBXS0J1bmRsZUlu
c3BlY3RvclJlZiBXS0J1bmRsZVBhZ2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmlu
ZGV4IDNmMzFhYTc4NTg4ZTdhZjZkZTA1Y2Q4NWZjNGIzNTVhNmU2YmM3MGUuLjczMTM0YjQ2ZTYy
ZjRkODRlMmVkMWUwYzEzMzYzZGE3ZTEyMDA4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
aApAQCAtMTA5LDggKzEwOSw2IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxEaXNj
b25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxiCiB0eXBlZGVmIHZv
aWQgKCpXS0J1bmRsZVBhZ2VEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9i
amVjdENhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9p
ZCAoKldLQnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0UmVmIGludGVudFJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRlbnRTZXJ2
aWNlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiog
dXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkTGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewpAQCAtMTUyLDgg
KzE1MCw4IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIFdLQnVuZGxl
UGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2sgICAgICAg
ICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMOwogCiAgICAgLy8g
VmVyc2lvbiAzCi0gICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lOwot
ICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lOworICAgIHZv
aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZTsKKyAgICB2
b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZTsK
IAogICAgIC8vIFZlcnNpb24gNAogICAgIFdLQnVuZGxlUGFnZURpZExheW91dENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dDsKQEAgLTQ0
MSw4ICs0MzksNiBAQCBXS19FWFBPUlQgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2Fs
ZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLTGF5
b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdl
RGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFdLQnVuZGxlSW50ZW50UmVmIGludGVudCk7Ci0KIFdLX0VYUE9SVCBXS0J1bmRs
ZUluc3BlY3RvclJlZiBXS0J1bmRsZVBhZ2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YWMzYTI1ZGYzNWI0YTA1ZjAyMmMx
MGEzMzg0N2Y2NmZmOTZlOGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUludGVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlSW50ZW50LmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJJbW11
dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKLSNpbmNsdWRl
ICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNp
bmNsdWRlICJXZWJVUkwuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBJbmplY3RlZEJ1
bmRsZUludGVudDo6Y3JlYXRlKFdlYkNvcmU6OkludGVudCogaW50ZW50KQotewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQoaW50ZW50KSk7Ci19Ci0KLUluamVj
dGVkQnVuZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRlbnQqIGlu
dGVudCkKLSAgICA6IG1faW50ZW50KGludGVudCkKLXsKLX0KLQotU3RyaW5nIEluamVjdGVkQnVu
ZGxlSW50ZW50OjphY3Rpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2ludGVudC0+YWN0aW9u
KCk7Ci19Ci0KLVN0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUoKSBjb25z
dAotewotICAgIHJldHVybiBtX2ludGVudC0+dHlwZSgpOwotfQotCi1XZWJDb3JlOjpLVVJMIElu
amVjdGVkQnVuZGxlSW50ZW50OjpzZXJ2aWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnRl
bnQtPnNlcnZpY2UoKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IEluamVjdGVkQnVuZGxlSW50ZW50OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobV9pbnRlbnQtPmRhdGEoKSk7Ci19Ci0KLVN0cmlu
ZyBJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faW50ZW50LT5leHRyYXMoKS5nZXQoa2V5KTsKLX0KLQotUGFzc1JlZlB0
cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmFzKCkgY29u
c3QKLXsKLSAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzID0gbV9pbnRl
bnQtPmV4dHJhcygpOwotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7
Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGV4dHJh
cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFz
LnNldChpdC0+a2V5LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+dmFsdWUpKTsKLQotICAgIHJldHVy
biBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Ci19Ci0KLVBhc3NSZWZQdHI8
SW1tdXRhYmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0
Ci17Ci0gICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdn
ZXN0aW9ucygpOwotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25z
LnNpemUoKTsKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51
bVN1Z2dlc3Rpb25zKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlv
bnM7ICsraSkKLSAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dl
c3Rpb25zW2ldKTsKLQotICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQod2tTdWdnZXN0
aW9ucyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
Ql9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1ZDNmMDZjN2IxNDhkYzU5NmViMjVjZDU3MDc3ZjQ1MjliOWY4ZjY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
SW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAotI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCi0K
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ludGVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBJbW11dGFibGVB
cnJheTsKLWNsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7Ci1jbGFzcyBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7Ci0KLWNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVj
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJ
bnRlbnQ7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3Jl
YXRlKFdlYkNvcmU6OkludGVudCopOwotCi0gICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OwotICAg
IFN0cmluZyBwYXlsb2FkVHlwZSgpIGNvbnN0OwotICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkg
Y29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OwotICAgIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7Ci0KLSAgICBXZWJDb3Jl
OjpJbnRlbnQqIGNvcmVJbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6Oklu
dGVudCopOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiBtX2ludGVudDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jZW5k
aWYgLy8gSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWMwYjgz
YmRhMDNkMWIxZTBhNWY3OGExMzViNWE5NDYwZWRkZDdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKLQotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvSW50ZW50UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0PiBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3Q6OmNyZWF0ZShJbnRlbnRSZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KHJlcXVlc3QpKTsK
LX0KLQotSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjpJbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QoSW50ZW50UmVxdWVzdCogcmVxdWVzdCkKLSAgICA6IG1faW50ZW50UmVxdWVzdChyZXF1
ZXN0KQotewotfQotCi12b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdFJlc3Vs
dChXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEpCi17Ci0gICAgbV9pbnRlbnRSZXF1ZXN0
LT5wb3N0UmVzdWx0KHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGRhdGEtPmlu
dGVybmFsUmVwcmVzZW50YXRpb24oKSkpOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlSW50ZW50
UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQotewot
ICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1cmUoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNj
cmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6
aW50ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0
ZShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNhMzE5
MjJmNzBmOWY5NWU5MDAyMjRjMGQzOTg1NDllY2Y3NzAxMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3RfaAotI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3RfaAot
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW50ZW50UmVx
dWVzdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIEluamVjdGVkQnVuZGxlSW50
ZW50OwotY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotCi1jbGFzcyBJbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZUludGVudFJlcXVlc3Q7Ci0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q+IGNyZWF0ZShXZWJD
b3JlOjpJbnRlbnRSZXF1ZXN0Kik7Ci0KLSAgICB2b2lkIHBvc3RSZXN1bHQoV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKik7Ci0gICAgdm9pZCBwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUqKTsKLQotICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IGludGVudCgp
IGNvbnN0OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Kik7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnRS
ZXF1ZXN0PiBtX2ludGVudFJlcXVlc3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIEluamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggOGY2OGEzZTI4YzBjOWFhNTdiNDIxOGJkZmZiNGRlNmYwNzM5NDEz
Mi4uOWVkZWExZTVjY2EwM2I3ZjNjMDg2ODQxNDk0Yzg2YmJmYWE1MDFlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMzMsMTMgKzMz
LDYgQEAKICNpbmNsdWRlICJXZWJFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdC5oIgotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSNp
bmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNlSW5mby5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE5NCwzMCArMTg3LDYgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdl
YlBhZ2UqIHBhZ2UsIFdlYkZyYW0KICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2Vy
RGF0YVRvUGFzcykpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdl
KiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCogaW50
ZW50UmVxdWVzdCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQotewotICAgIGlmICghbV9j
bGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBX
S1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShpbnRlbnRSZXF1ZXN0
KSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAgICB1c2VyRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFNfVEFHKQotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBm
cmFtZSwgV2ViSW50ZW50U2VydmljZUluZm8qIHNlcnZpY2UsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAw
OwotICAgIG1fY2xpZW50LnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKHNlcnZpY2UpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50
LmNsaWVudEluZm8pOwotICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9Q
YXNzKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBS
ZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRGaXJz
dExheW91dEZvckZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKaW5kZXggYzZiMjc3Y2ZmZDU5NzAxOTExMzFiMzI3NTRlMGI3MzNmODg5NDNjMS4u
NjhlOTQwOGVhY2RjYTUzYTcwNmQ1OWU2MDg2Y2RlODA3OGU2ZTI5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00NywxMiArNDcsNiBAQCBj
bGFzcyBBUElPYmplY3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07
CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViRnJhbWU7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQotY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwotI2VuZGlmCi0jaWYgRU5BQkxF
KFdFQl9JTlRFTlRTX1RBRykKLWNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwotI2VuZGlmCiAK
IGNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LCBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3VycmVu
dFZlcnNpb24+IHsKIHB1YmxpYzoKQEAgLTcyLDEzICs2Niw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogCi0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdl
YlBhZ2UqLCBXZWJGcmFtZSosIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCosIFJlZlB0cjxB
UElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotICAgIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZy
YW1lKiwgV2ViSW50ZW50U2VydmljZUluZm8qLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
OwotI2VuZGlmCi0KICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdl
YkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRMYXlvdXRGb3JGcmFtZShXZWJQ
YWdlKiwgV2ViRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
MjMwMmJmMjk2NWMxODcyOTEzM2RmN2M2MThmNzc5YzEyODNmNDY5My4uNmY0MjJmZjVmN2EyOTBk
MmM1OWY3MzJlMzY4MDhiZDI1MTE0ZmQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTc2LDE3ICs3Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaWRnZXQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAi
SW50ZW50RGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50UmVxdWVzdC5oPgotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotI2luY2x1ZGUgIkludGVudFNlcnZpY2VJ
bmZvLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKLSNlbmRpZgotCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNTYxLDQ0ICsx
NTUwLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxD
YWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW4KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gcmVxdWVzdCkKLXsKLSAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghd2ViUGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7Ci0gICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdD4gYnVuZGxlSW50ZW50UmVxdWVzdCA9
IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QuZ2V0KCkpOwotICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIGJ1bmRsZUludGVudFJlcXVlc3QuZ2V0KCksIHVzZXJE
YXRhKTsKLQotICAgIEludGVudERhdGEgaW50ZW50RGF0YShyZXF1ZXN0LT5pbnRlbnQoKSk7Ci0g
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBpbnRlbnREYXRhLCBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZ2lzdGVy
SW50ZW50U2VydmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBLVVJMJiBocmVmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGRpc3Bv
c2l0aW9uKQotewotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAg
aWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRlbnRTZXJ2aWNlSW5mbyBz
ZXJ2aWNlSW5mbzsKLSAgICBzZXJ2aWNlSW5mby5hY3Rpb24gPSBhY3Rpb247Ci0gICAgc2Vydmlj
ZUluZm8udHlwZSA9IHR5cGU7Ci0gICAgc2VydmljZUluZm8uaHJlZiA9IGhyZWY7Ci0gICAgc2Vy
dmljZUluZm8udGl0bGUgPSB0aXRsZTsKLSAgICBzZXJ2aWNlSW5mby5kaXNwb3NpdGlvbiA9IGRp
c3Bvc2l0aW9uOwotCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7Ci0gICAgUmVmUHRy
PFdlYkludGVudFNlcnZpY2VJbmZvPiB3ZWJJbnRlbnRTZXJ2aWNlSW5mbyA9IFdlYkludGVudFNl
cnZpY2VJbmZvOjpjcmVhdGUoc2VydmljZUluZm8pOwotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVu
ZGxlTG9hZGVyQ2xpZW50KCkucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUod2ViUGFnZSwg
bV9mcmFtZSwgd2ViSW50ZW50U2VydmljZUluZm8uZ2V0KCksIHVzZXJEYXRhKTsKLQotICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnRlbnRTZXJ2aWNl
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBzZXJ2aWNlSW5mbywgSW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7Ci19Ci0jZW5kaWYKLQogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiAvKm1pbWVUeXBlKi8pIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxY2I5ZjYwYWM1ZmQzN2NkODY2MzFlMDc4NzgzYTk5
OWFkYjFiMmI3Li4yM2RiNzA2YjM3MTk3Mjg2NDQzMWU3MDEzMDJlMmY4YTk0YzI0YjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yOCwxMiArMjgsNiBAQAogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0j
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotY2xhc3MgSW50ZW50UmVxdWVzdDsKLSNlbmRpZgotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGx1Z2luVmlldzsKQEAgLTIyMCwxMyArMjE0
LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNo
ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PikgT1ZFUlJJREU7Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckludGVudFNl
cnZpY2UoY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgaHJlZiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBkaXNw
b3NpdGlvbikgT1ZFUlJJREU7Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQ
bHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBk
ZWVhZjc3MDc3YWExNDIxMDgzMGVmZDQ0MGM3ODY0NTk4NTFhZGM4Li45Nzg0NWFmNDBmZDMwYWRm
ZWNlMDRjMTRiZDdmZGMxODU3MTg1MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTY2LDE0ICs2Niw2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIkludGVudERhdGEu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvd0ludGVudHMuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0RlbGl2ZXJlZEludGVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAj
ZW5kaWYKQEAgLTI3NSw0NSArMjY3LDYgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKE1haW5SZXNvdXJjZUxvYWRlciogbWFpblJlc291cmMKICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0SGFuZGxlVG9Eb3du
bG9hZChwb2xpY3lEb3dubG9hZElELCBtYWluUmVzb3VyY2VMb2FkZXItPmxvYWRlcigpLT5oYW5k
bGUoKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQot
dm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXRh
KQotewotICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1bW15Q2xpZW50OwotICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsKLQotICAgIE93blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7Ci0gICAgaWYgKCFp
bnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2hhbm5lbHMgPSBh
ZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoaW50ZW50RGF0YS5t
ZXNzYWdlUG9ydHMuc2l6ZSgpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50
ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAoKmNoYW5uZWxz
KVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNoYXJlZCgpLm1l
c3NhZ2VQb3J0Q2hhbm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChpKSkpOwotICAgIH0K
LSAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNl
KCkpOwotCi0gICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVs
aXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwg
aW50ZW50RGF0YS5hY3Rpb24sIGludGVudERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93
SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxp
dmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwotfQotCi12b2lkIFdlYkZyYW1lOjpkZWxp
dmVySW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50KQotewotICAgIE93blB0cjxEZWxpdmVy
ZWRJbnRlbnRDbGllbnQ+IGR1bW15Q2xpZW50OwotCi0gICAgT3duUHRyPFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKLSAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxBcnJheSogb3JpZ0NoYW5uZWxzID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKLSAgICBp
ZiAob3JpZ0NoYW5uZWxzICYmIG9yaWdDaGFubmVscy0+c2l6ZSgpKSB7Ci0gICAgICAgIGNoYW5u
ZWxzID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdD
aGFubmVscy0+c2l6ZSgpKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0No
YW5uZWxzLT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0No
YW5uZWxzLT5hdChpKS5yZWxlYXNlKCk7Ci0gICAgfQotICAgIE93blB0cjxXZWJDb3JlOjpNZXNz
YWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7Ci0KLSAgICBSZWZQdHI8RGVsaXZl
cmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2Nv
cmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRlbnQtPmFjdGlvbigpLCBpbnRlbnQt
PnR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQtPmRhdGEoKSwgbWVzc2FnZVBvcnRzLnJlbGVh
c2UoKSwgaW50ZW50LT5leHRyYXMoKSk7Ci0gICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6
ZnJvbShtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2
ZXJlZEludGVudC5yZWxlYXNlKCkpOwotfQotI2VuZGlmCi0KIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QgCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMDk2ZTFmZDNkNDY4Mjc5NDE0NjRk
NDBmOWUyZjkyODM4ZDUwMmRlMi4uMTVlNzA4NDA5NGFlNTM1YmZlZGNlMzUxNmVkZTdmNjA2ZTFh
YjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgK
QEAgLTQ0LDkgKzQ0LDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7Ci0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotY2xhc3MgSW50ZW50OwotI2VuZGlmCiBjbGFzcyBLVVJMOwogfQogCkBAIC01OCwxMCAr
NTUsNiBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYlBhZ2U7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi1zdHJ1Y3QgSW50ZW50RGF0YTsKLSNlbmRpZgotCiBjbGFzcyBXZWJGcmFtZSA6IHB1Ymxp
YyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBU
eXBlQnVuZGxlRnJhbWU7CkBAIC04NSwxMSArNzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lkIGRlbGl2
ZXJJbnRlbnQoY29uc3QgSW50ZW50RGF0YSYpOwotICAgIHZvaWQgZGVsaXZlckludGVudChXZWJD
b3JlOjpJbnRlbnQqKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwogICAg
IFN0cmluZyBjb250ZW50c0FzU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkFz
U3RyaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggNmYyZTUwNDg1ZDU1YmEwMTQ0ODUyNWY0YTc4N2FiZTUxNjkyZmIxNS4u
MGM1MDdmNDU3ZWU5NWQwYzNhMzIwYTViNmNhODk2MmZhMmZlNmVlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQ5LDExICsxNDksNiBA
QAogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvQ2xpZW50LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9JbnRlbnQuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICNpbmNsdWRlICJX
ZWJWaWJyYXRpb25DbGllbnQuaCIKICNlbmRpZgpAQCAtMjI1NCwyMyArMjI0OSw2IEBAIHZvaWQg
V2ViUGFnZTo6Zm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBXZWJQYWdlOjpkZWxpdmVySW50ZW50VG9GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQotewotICAgIFdl
YkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZyYW1lLT5kZWxpdmVySW50
ZW50KGludGVudERhdGEpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50VG9G
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBJbnRlbnQqIGNvcmVJbnRlbnQpCi17Ci0gICAgaWYgKFdl
YkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKQot
ICAgICAgICBmcmFtZS0+ZGVsaXZlckludGVudChjb3JlSW50ZW50KTsKLX0KLSNlbmRpZgotCiB2
b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogewogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OnJlbW92ZVRlc3RSdW5uZXJP
dmVycmlkZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDZjN2Q3MGE4NzhkOTQ3NTRkYjc4NGE1NzZmOGE3MTE1MzdjY2M2YTEuLjQwMWI4MmY3
MTA1YzZjZjlhMjQ1MjhjNzY4OGNiZGVmNDFlNGRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTEwLDkgKzExMCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xh
c3MgSFRNTFBsdWdJbkVsZW1lbnQ7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIGNsYXNz
IEludGVudDsKLSNlbmRpZgogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFn
ZTsKICAgICBjbGFzcyBQcmludENvbnRleHQ7CkBAIC0xNTQsMTAgKzE1MSw2IEBAIHN0cnVjdCBQ
cmludEluZm87CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOwogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotc3RydWN0IEludGVu
dERhdGE7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGNsYXNzIFdlYkdl
c3R1cmVFdmVudDsKICNlbmRpZgpAQCAtNDkxLDEwICs0ODQsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQ7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQot
ICAgIHZvaWQgZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OkludGVudCopOwotI2VuZGlmCi0KICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJTZWxlY3Rp
b24oKTsKIApAQCAtNjc5LDEwICs2NjgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1l
bnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7Ci0jZW5kaWYKLQogICAgIHN0YXRp
YyB2b2lkIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNjcm9s
bChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY3Y2UzMTFmYTMyZjQxZDA5
ZTQ3MjQ3OThlNzc0ZTFmYTZjOTQyYzUuLjY3YmNlNmEyZDJmODc5MGEwNjhkYzMwZDlmYzgwMzA3
YjE1N2QyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMzcsMTEgKzIzNyw2IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKICAgICBTZXRDYW5SdW5N
b2RhbChib29sIGNhblJ1bk1vZGFsKQogCi0gICAgIyBXZWIgSW50ZW50cwotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICBEZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJLaXQ6OkludGVudERhdGEgaW50ZW50RGF0YSkKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oRUZM
KQogICAgIFNldFRoZW1lUGF0aChXVEY6OlN0cmluZyB0aGVtZVBhdGgpCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDBiMmU5MDg1MjkyNDY5M2E2
ODI5NTM2OTYxMTQ2N2Q0ZjRmMDI3YTYuLjg2ZmJjOGY3N2YyNTk2YzU5YTg0ZDk4ZTkxNjJkYTM3
MzYwNGVjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
ODEsMTAgKzgxLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKE5FVFdPUktfSU5GTykKICNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdl
cy5oIgogI2VuZGlmCkBAIC02ODUsMjYgKzY4MSw2IEBAIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQ
cm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi11aW50NjRfdCBXZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENoYW5u
ZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbWVzc2FnZVBvcnRDaGFu
bmVsKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBjaGFubmVsSUQgPSAwOwotICAgIG1fbWVzc2Fn
ZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1lc3NhZ2VQb3J0Q2hhbm5lbCk7Ci0KLSAg
ICByZXR1cm4gY2hhbm5lbElEOwotfQotCi1QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogV2Vi
UHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKLXsKLSAgICBy
ZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChjaGFubmVsSUQpLmdldCgpOwotfQotCi12
b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVs
SUQpCi17Ci0gICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLnJlbW92ZShjaGFubmVsSUQpOwotfQot
I2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUNhY2hlcyhSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXIgcmVzb3VyY2VDYWNoZXNUb0NsZWFyKQogewogICAgIHBsYXRmb3JtQ2xlYXJS
ZXNvdXJjZUNhY2hlcyhyZXNvdXJjZUNhY2hlc1RvQ2xlYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZTUyYWFlMjZkMzIxYThhMjNkYjg3NTg4OTJiZGU0MDgy
YjBhNzg4Li44MGJjN2U4Zjc4MzM3YjcwZDRiZTc4ODQxOTMyOTM1MDJjYWQwZmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjcsMTAgKzY3LDYgQEAgUVRfRU5E
X05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKICAgICBzdHJ1Y3QgUGx1Z2luSW5mbzsKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAg
ICBjbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDsKLSNlbmRpZgogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTEyMywxMiArMTE5LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRXZWJQYWdlKCkg
Y29uc3Q7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpIAotICAgIHVpbnQ2NF90IGFkZE1lc3Nh
Z2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPik7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIG1lc3NhZ2VQ
b3J0Q2hhbm5lbCh1aW50NjRfdCk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwo
dWludDY0X3QpOwotI2VuZGlmCi0KICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5kbGUo
KSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0zMjgsMTAgKzMxOCw2IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVNYXA7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPiA+IG1fbWVzc2FnZVBvcnRDaGFubmVsczsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZywgV2ViUHJvY2Vzc1N1cHBsZW1lbnQqPiBXZWJQcm9jZXNzU3Vw
cGxlbWVudE1hcDsKICAgICBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggN2E3MGJiNjQ4NjNlMTYzOGRkNGI0NTYzMTAzMWZmNzVhODZjYWQ5NS4uN2EwMjFhMDBj
YWNmMTViNzk1ZTA0M2JmMmZhY2E3ZTFlNTFkNTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjcsMTAgKzI3LDYgQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBDcmVhdGUgYSBuZXcg
cGFnZS4KICAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0gICAgUmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNo
YW5uZWxJRCk7Ci0jZW5kaWYKLQogICAgICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgogICAgIFNl
dFZpc2l0ZWRMaW5rVGFibGUoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCiAg
ICAgVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBsaW5r
SGFzaGVzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGZjMmYzZTIxZWRiYTNiZGY5YjI5NDE2OWMwZjNjNDcyYTk5ZWE4MTIuLjczOTAxZGViYmQ1
NzMwZDY5MGNlNDliZTdiMmRjMzRhYzg1ZTVhYmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMS0zMSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBXZWIg
SW50ZW50cyBjb2RlIGZyb20gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgIChJbmplY3RlZEJ1
bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKwogMjAxMy0wMS0zMSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE0
MTQwMik6IGluY29ycmVjdGx5IHNldCBpbmplY3RlZCBidW5kbGUgcGF0aCB3aGVuIHJ1bm5pbmcg
R1RLIHVuaXQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGYyNzEzYzc4MmNj
OTJmNDFlY2FmN2NhMWZmYmY3NTE1OWVkNTczMzguLmNiMzg3NGI0ZmExOGY1NTVlYzMwMmQ4MTA1
NThjYjhhZDM3ZGZlYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMTQzLDEwICsx
NDMsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5n
KGluIGJvb2xlYW4gZmxhZyk7CiAgICAgdm9pZCBzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRz
KCk7CiAKLSAgICAvLyBXZWIgaW50ZW50cyB0ZXN0aW5nLgotICAgIHZvaWQgc2VuZFdlYkludGVu
dFJlc3BvbnNlKGluIERPTVN0cmluZyByZXBseSk7Ci0gICAgdm9pZCBkZWxpdmVyV2ViSW50ZW50
KGluIERPTVN0cmluZyBhY3Rpb24sIGluIERPTVN0cmluZyB0eXBlLCBpbiBET01TdHJpbmcgZGF0
YSk7Ci0gICAgCiAgICAgLy8gRm9jdXMgdGVzdGluZy4KICAgICB2b2lkIGFkZENocm9tZUlucHV0
RmllbGQoaW4gb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZUNocm9tZUlucHV0Rmll
bGQoaW4gb2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBlMzVm
YTcwNDYyMzRhZmY3NzQyOGY5NzViNGFmOWVmZjRhNzdlMTQ2Li44OTA0NTg5ZTE5MzI0ZGFlYzlj
N2E2ZDA0NmI2MzU3ZjIwYWY1NmEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01Miwx
NCArNTIsNiBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNlbmRp
ZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0ludGVu
dFNlcnZpY2VJbmZvLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdUUiB7CkBAIC0zMjcsOCArMzE5LDggQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8vIHdpbGxEZXN0
cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uCiAgICAgICAgIGRpZEZpbmlzaFBy
b2dyZXNzLCAvLyBkaWRGaW5pc2hQcm9ncmVzcwogICAgICAgICAwLCAvLyBzaG91bGRGb3JjZVVu
aXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAotICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQotICAgICAgICByZWdpc3RlckludGVudFNl
cnZpY2VGb3JGcmFtZSwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAg
MCwgLy8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lCisgICAgICAgIDAsIC8vIHJlZ2lzdGVySW50
ZW50U2VydmljZUZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZExheW91dAogICAgIH07CiAgICAg
V0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2UsICZsb2FkZXJDbGllbnQpOwpA
QCAtNTg1LDg5ICs1NzcsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoUHJv
Z3Jlc3MoV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbgogICAgIHN0YXRpY19j
YXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+
ZGlkRmluaXNoUHJvZ3Jlc3MoKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIGludGVudFJlcXVlc3QsIFdLVHlwZVJl
ZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQotICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVl
c3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IGludGVudChBZG9wdFdLLCBX
S0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KGludGVudFJlcXVlc3QpKTsKLQotICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVu
dC5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHdrQWN0aW9u
LmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgdHlwZT0iKTsKLSAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50
Q29weVR5cGUoaW50ZW50LmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcod2tUeXBlLmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0K
LSAgICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdl
UG9ydENvdW50KGludGVudC5nZXQoKSk7Ci0gICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgewotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkhhdmUgIik7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTnVtYmVyKG51bU1lc3NhZ2VQb3J0cyk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIHBvcnRzXG4iKTsKLSAgICB9Ci0KLSAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZp
Y2UoaW50ZW50LmdldCgpKSk7Ci0gICAgaWYgKHdrU2VydmljZVVybCkgewotICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3
a1NlcnZpY2VVcmwuZ2V0KCkpKTsKLSAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJ
c0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiRXhwbGljaXQgaW50ZW50IHNlcnZpY2U6ICIpOwotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcod2tTZXJ2aWNlLmdldCgpKSk7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tCdW5kbGVJ
bnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlS
ZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFzLmdl
dCgpKSk7Ci0gICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdr
RXh0cmFLZXlzLmdldCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4dHJhS2V5
czsgKytpKSB7Ci0gICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5ID0gc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0V4dHJhS2V5cy5nZXQoKSwgaSkpOwotICAg
ICAgICBXS1N0cmluZ1JlZiB3a1ZhbHVlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkod2tFeHRyYXMuZ2V0KCksIHdrS2V5KSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiRXh0cmFzWyIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0b1dURlN0cmluZyh3a0tleSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIl0gPSAiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZT
dHJpbmcod2tWYWx1ZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAg
ICB9Ci0KLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ss
IFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOwotICAgIGNvbnN0
IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IFdLQXJyYXlHZXRTaXplKHdrU3VnZ2VzdGlvbnMuZ2V0
KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkgewot
ICAgICAgICBXS1N0cmluZ1JlZiB3a1N1Z2dlc3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrU3VnZ2VzdGlvbnMuZ2V0KCksIGkpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJIYXZlIHN1Z2dlc3Rpb24gIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHdrU3VnZ2VzdGlvbikpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB9Ci0KLSAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJ
bnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlSW5mbywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIlJlZ2lzdGVyZWQgV2ViIEludGVudCBTZXJ2aWNlOiBhY3Rpb249Iik7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUlu
Zm9Db3B5QWN0aW9uKHNlcnZpY2VJbmZvKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9X
VEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiB0eXBlPSIpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRX
SywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUeXBlKHNlcnZpY2VJbmZvKSk7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBlLmdldCgpKSk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgdGl0bGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrVGl0bGUoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUaXRsZShzZXJ2aWNl
SW5mbykpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHdrVGl0bGUuZ2V0
KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiB1cmw9Iik7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHdrVXJsKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5
SHJlZihzZXJ2aWNlSW5mbykpOwotICAgIGlmICh3a1VybCkKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcod2tVcmwuZ2V0KCkp
KSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGRpc3Bvc2l0aW9uPSIpOwot
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0Rpc3Bvc2l0aW9uKEFkb3B0V0ssIFdLSW50
ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2VydmljZUluZm8pKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh3a0Rpc3Bvc2l0aW9uLmdldCgpKSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91
dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSNlbmRpZgotfQotCiB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCBkNWI5YzgwNzFkMTI0ODBlNTQz
YzQ4YjE0NThlODVmOWIxMjE2MjkzLi4zMTcyOTRkNmYzYzI0YjZiYzdhZGU3NjkxNjYwMGY0ODBj
YjQ3ZGZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTQwLDEwICs0MCw2IEBAIHB1YmxpYzoK
IAogICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIGN1
cnJlbnRJbnRlbnRSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SW50ZW50UmVxdWVz
dC5nZXQoKTsgfQotI2VuZGlmCi0KICAgICB2b2lkIGR1bXAoKTsKIAogICAgIHZvaWQgc3RvcExv
YWRpbmcoKTsKQEAgLTc5LDggKzc1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2
NF90IGlkZW50aWZpZXIsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwg
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdL
QnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCopOwotICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiwgV0tUeXBlUmVmKiwgY29u
c3Qgdm9pZCopOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CkBAIC0xODAsMTAgKzE3NCw2
IEBAIHByaXZhdGU6CiAgICAgV0tCdW5kbGVQYWdlUmVmIG1fcGFnZTsKICAgICBXS1JldGFpblB0
cjxXS0J1bmRsZVNjcmlwdFdvcmxkUmVmPiBtX3dvcmxkOwogICAgIFdLUmV0YWluUHRyPFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gbV9wcmV2aW91c1Rlc3RCYWNrRm9yd2FyZExpc3RJ
dGVtOwotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFdLUmV0YWluUHRyPFdLQnVuZGxl
SW50ZW50UmVxdWVzdFJlZj4gbV9jdXJyZW50SW50ZW50UmVxdWVzdDsKLSNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA0NjQ3YTljNjk5YjYzMmNjOGM4MGU4MDk2
ODk1NTE3YTBkNjhlZWQ5Li5iZDI0MzdmNDMyMGZlZmI1YmQyOWE4MTU2MDVhMmQ4YzY3NzdmZTJj
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTUzLDExICs1Myw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V1RSIHsKIAogY29uc3QgZG91YmxlIFRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVy
SW50ZXJ2YWwgPSAzMDsKQEAgLTY2OSw1MiArNjY0LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpvdmVy
cmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYgcHJlZmVyZW5jZSwgSlNTdHJpbmdSZWYgdmFsdWUp
CiAgICAgV0tCdW5kbGVPdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
R3JvdXAoKSwgdG9XSyhwcmVmZXJlbmNlKS5nZXQoKSwgdG9Cb29sKHZhbHVlKSk7CiB9CiAKLXZv
aWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlcGx5KQot
ewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBXS1JldGFpblB0cjxXS0J1bmRsZUludGVu
dFJlcXVlc3RSZWY+IGN1cnJlbnRSZXF1ZXN0ID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+Y3VycmVudEludGVudFJlcXVlc3QoKTsKLSAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVu
ZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCkpOwotICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3Jp
cHRDb250ZXh0KG1haW5GcmFtZSk7Ci0KLSAgICBpZiAocmVwbHkpIHsKLSAgICAgICAgV0tSZXRh
aW5QdHI8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+IHNlcmlhbGl6ZWREYXRhKEFkb3B0V0ss
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKGNvbnRleHQsIEpTVmFsdWVNYWtlU3RyaW5n
KGNvbnRleHQsIHJlcGx5KSwgMCkpOwotICAgICAgICBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0
UmVzdWx0KGN1cnJlbnRSZXF1ZXN0LmdldCgpLCBzZXJpYWxpemVkRGF0YS5nZXQoKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVycm9yUmVwbHkoSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVSUk9SIikpOwotICAgICAgICBXS1JldGFpblB0
cjxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4gc2VyaWFsaXplZERhdGEoQWRvcHRXSywgV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVDcmVhdGUoY29udGV4dCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29u
dGV4dCwgZXJyb3JSZXBseS5nZXQoKSksIDApKTsKLSAgICAgICAgV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0UG9zdEZhaWx1cmUoY3VycmVudFJlcXVlc3QuZ2V0KCksIHNlcmlhbGl6ZWREYXRhLmdldCgp
KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50
KEpTU3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYgdHlwZSwgSlNTdHJpbmdSZWYgZGF0YSkK
LXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJh
bWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpKTsKLSAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGFjdGlvbldLID0gdG9XSyhhY3Rpb24pOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB0eXBlV0sgPSB0b1dLKHR5cGUpOwotICAgIFdLUmV0YWluUHRyPFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmPiBkYXRhV0soQWRvcHRXSywgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVDcmVh
dGUoY29udGV4dCwgSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgZGF0YSksIDApKTsKLQotICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGludGVudEluaXREaWN0KEFkb3B0
V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGFjdGlvbktleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
YWN0aW9uIikpOwotICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCks
IGFjdGlvbktleS5nZXQoKSwgYWN0aW9uV0suZ2V0KCkpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHR5cGVLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InR5cGUiKSk7Ci0gICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwg
dHlwZUtleS5nZXQoKSwgdHlwZVdLLmdldCgpKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBkYXRhS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRh
IikpOwotICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCksIGRhdGFL
ZXkuZ2V0KCksIGRhdGFXSy5nZXQoKSk7Ci0KLSAgICBXS1JldGFpblB0cjxXS0J1bmRsZUludGVu
dFJlZj4gd2tJbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDcmVhdGUoaW50ZW50SW5pdERp
Y3QuZ2V0KCkpKTsKLSAgICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFtZSwgd2tJbnRlbnQuZ2V0
KCkpOwotI2VuZGlmCi19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2ll
cyhib29sIGFjY2VwdCkKIHsKICAgICBXS0J1bmRsZVNldEFsd2F5c0FjY2VwdENvb2tpZXMoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBhY2NlcHQpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1OWFkMTJl
ZTE0YmQ3MWRiYjBlYzFmMDA2MWE0OTFkNjQwYTY1ZmM2Li40YmIzM2I0NmQ3MTlmNTgwZDk4ZWZi
ZDY3NzdmYTc3MGIxYWNmOWU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMjQ1LDEwICsyNDUsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBwcmVmZXJlbmNlLCBKU1N0
cmluZ1JlZiB2YWx1ZSk7CiAKLSAgICAvLyBXZWIgaW50ZW50cyB0ZXN0aW5nLgotICAgIHZvaWQg
c2VuZFdlYkludGVudFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlcGx5KTsKLSAgICB2b2lkIGRlbGl2
ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlLCBKU1N0cmlu
Z1JlZiBkYXRhKTsKLQogICAgIC8vIENvb2tpZXMgdGVzdGluZwogICAgIHZvaWQgc2V0QWx3YXlz
QWNjZXB0Q29va2llcyhib29sKTsKIAo=
</data>
<flag name="review"
          id="205036"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>