<?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>174060</bug_id>
          
          <creation_ts>2017-06-30 18:18:21 -0700</creation_ts>
          <short_desc>Replace ResourceLoadStatisticsStore C API with Cocoa SPI</short_desc>
          <delta_ts>2017-07-01 09:10:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324692</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 18:18:21 -0700</bug_when>
    <thetext>Replace ResourceLoadStatisticsStore C API by Cocoa SPI for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324738</commentid>
    <comment_count>1</comment_count>
      <attachid>314358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 20:09:31 -0700</bug_when>
    <thetext>Created attachment 314358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324744</commentid>
    <comment_count>2</comment_count>
      <attachid>314362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 20:21:18 -0700</bug_when>
    <thetext>Created attachment 314362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324745</commentid>
    <comment_count>3</comment_count>
      <attachid>314363</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 20:24:39 -0700</bug_when>
    <thetext>Created attachment 314363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324750</commentid>
    <comment_count>4</comment_count>
      <attachid>314365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 20:42:20 -0700</bug_when>
    <thetext>Created attachment 314365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324763</commentid>
    <comment_count>5</comment_count>
      <attachid>314368</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 21:25:26 -0700</bug_when>
    <thetext>Created attachment 314368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324773</commentid>
    <comment_count>6</comment_count>
      <attachid>314371</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 21:55:03 -0700</bug_when>
    <thetext>Created attachment 314371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324774</commentid>
    <comment_count>7</comment_count>
      <attachid>314372</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-30 22:02:43 -0700</bug_when>
    <thetext>Created attachment 314372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324823</commentid>
    <comment_count>8</comment_count>
      <attachid>314372</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-01 09:10:11 -0700</bug_when>
    <thetext>Comment on attachment 314372
Patch

Clearing flags on attachment: 314372

Committed r219049: &lt;http://trac.webkit.org/changeset/219049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324824</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-01 09:10:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314358</attachid>
            <date>2017-06-30 20:09:31 -0700</date>
            <delta_ts>2017-06-30 20:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630200929.patch</filename>
            <type>text/plain</type>
            <size>71137</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uYTkyNzNmNjVmNzBkZmNkNmMzNDU3YTRmYTNjMzFh
NzZiY2Y5NDk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBDIEFQSSBieSBDb2NvYSBTUEkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0SXNQcmV2YWxlbnRSZXNvdXJjZTpmb3JIb3N0Ol0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291
cmNlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246Zm9ySG9zdDpdKToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNlckludGVyYWN0aW9uOl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRJc0dyYW5kZmF0aGVyZWQ6Zm9ySG9zdDpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOl0pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW46Zm9ySG9zdDpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luOmZvckhvc3Q6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbzpmb3JIb3N0Ol0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOl0pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhl
cmluZ1RpbWU6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcl0pOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXJdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluOmZvckhvc3Q6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFS
ZWNvcmRzV2VyZVNjYW5uZWQ6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlXSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAg
ICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmFiYzhlZjVh
YWMzZmQxYThkMzVmMTI4NTZjZDM0YjI5Mjc0NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0j
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLSNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
LXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZhbGVudFJlc291cmNl
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFByZXZh
bGVudFJlc291cmNlKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwot
fQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc1ByZXZhbGVudFJlc291
cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJldHVybiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCks
IHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkubG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci0gICAgZWxzZQotICAgICAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJVc2VySW50ZXJhY3Rpb24oVVJMKFVS
TCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotLy8gRklYTUU6IFRoaXMgQVBJIG5h
bWUgaXMgd3JvbmcuCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc0hhc0hh
ZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICByZXR1cm4gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFj
dGlvbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9z
dE5hbWUpKSwgdmFsdWUpOwotfQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJJc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAgcmV0dXJuIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5pc0dyYW5kZmF0aGVyZWQo
VVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQotewotICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpLCBVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihX
S1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKLXsKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSwg
VVJMKFVSTCgpLCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRv
KQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFt
ZSkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRvKSkpOwotfQot
Ci12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMg
eyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykKLXsKLSAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFs
KFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldEdyYW5kZmF0aGVyaW5n
VGltZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKLXsKLSAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKHsgfSwgeyB0b1dURlN0cmluZyhob3N0TmFtZSkgfSwgZmFsc2UpOwotICAgIGVsc2UKLSAg
ICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHRvV1RGU3RyaW5nKGhvc3ROYW1lKSB9LCB7IH0s
IGZhbHNlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVRl
bGVtZXRyeUhhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzaGFyZWQoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGJvb2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsKLX0KLQotdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1
ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQ
YWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVl
KQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkU3VibWl0
VGVsZW1ldHJ5KHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3Vy
cykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpu
b3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKLXsKLSAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbigyNF9oICogMzAuKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoMjRfaCk7Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOwotICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoMV9oKTsKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFS
ZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGZhbHNlKTsK
LSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRydWUpOwotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5U3RvcmUoKTsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4MWZlMjQ0ZjViNWQyZGQ0NTU0ZTAzOGM4OWEwNWMyMzlhYzJjODU5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5k
aWYKLSAgICAKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyU2V0UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
OwotICAgIFdLX0VYUE9SVCBib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc1By
ZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9u
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tT
dHJpbmdSZWYgaG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VySXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQg
dm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3RO
YW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
U2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBX
S1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdL
U3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0g
ICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0
aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlclNldEdyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcyk7Ci0gICAg
V0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVEYXRhTW9k
aWZpY2F0aW9uSGFuZGxlcigpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICBX
S19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyRmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JU
IHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmUoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vy
cyh1bnNpZ25lZCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOTU3MTA1OTliMzE3ZjUxYmZlZThjYTE5MmI5
ZmQyYWJiODQ3NThhNy4uMzZkNjQyMjNlYzk5Y2ZhNjJlYTg5Y2YxMGRiZGU1MDM1ZGVhNGI0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDEwICszMSwxNSBAQAogI2ltcG9ydCAiV0tIVFRQQ29v
a2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dl
YnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgorI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9ydCAiX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKIAogKyAoV0tXZWJzaXRlRGF0YVN0b3Jl
ICopZGVmYXVsdERhdGFTdG9yZQpAQCAtMjAyLDYgKzIwNywyMzQgQEAgLSAodm9pZClfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc1By
ZXZhbGVudFJlc291cmNlOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAorewor
ICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBob3N0KSk7CisgICAgZWxzZQorICAgICAgICBzdG9yZS0+Y2xlYXJQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuIE5POwor
CisgICAgcmV0dXJuIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9zdCkp
OworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0
aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0
b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KHZhbHVlKQorICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgaG9z
dCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChV
UkwoKSwgaG9zdCkpOworfQorCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNl
ckludGVyYWN0aW9uOihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHJldHVybiBzdG9y
ZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgaG9zdCkpOworfQorCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhlcmVkOihCT09MKXZhbHVlIGZv
ckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
aWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldEdyYW5kZmF0aGVy
ZWQoVVJMKFVSTCgpLCBob3N0KSwgdmFsdWUpOworfQorCistIChCT09MKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBz
dG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBOTzsKKworICAg
IHJldHVybiBzdG9yZS0+aXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdCkpOworfQorCist
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0
Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChV
UkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQorCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
OihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0Cit7
CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChV
UkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQorCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvOihO
U1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAor
eworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJM
KCksIGhvc3QpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7Cit9CisKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uOihk
b3VibGUpc2Vjb25kcworeworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9y
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91YmxlKXNlY29uZHMK
K3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJl
dHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNv
bmRzIHsgc2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbDooZG91YmxlKXNlY29uZHMKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
U2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzCit7CisgICAgYXV0byogc3Rv
cmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9y
ZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMge3NlY29uZHMgfSk7Cit9CisKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKK30KKworLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcgoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRp
dGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+ZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgeyBob3N0IH0sIGZhbHNlKTsKKyAgICBl
bHNlCisgICAgICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBo
b3N0IH0sIHsgfSwgZmFsc2UpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RmlyZVRlbGVtZXRyeUhhbmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlm
ICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlVGVsZW1ldHJ5SGFu
ZGxlcigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZDooQk9PTCl2YWx1ZQoreworICAgIGF1dG8qIHN0
b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Rv
cmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUKK3sKKyAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3Jl
LT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1
ZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1do
ZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDooQk9PTCl2YWx1ZQoreworICAgIFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5
V2FzQ2FwdHVyZWQodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlCit7CisgICAgYXV0byogc3RvcmUg
PSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+
c2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KHZhbHVlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUKK3sKKyAgICBhdXRv
KiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAg
IHN0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworfQorCistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3VyczoodW5zaWduZWQpaG91cnMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwor
ICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5jbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0ZDo6
Y2hyb25vOjpob3Vycyhob3VycykpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7Cisg
ICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7CisgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOworICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKKyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdU
aW1lKDFfaCk7CisgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoZmFsc2UpOworICAgIFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoZmFsc2UpOworICAg
IHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bCh0cnVlKTsKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOworfQorCiBAZW5kCiAKICNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA5MWU0
NjNlMTNkZTFmMTgzN2Y3MDlhYTliMTcwNWUxNWQ5OTI3NmJlLi5iODlhMjZjYmY1YWY5NzVjMGFi
NTJhY2Q0YzM4NWJiYWUxYWY4NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAt
NDMsNiArNDMsMzIgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVE
YXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7
CiAKKy8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgU1BJIGZvciB0ZXN0aW5nLgorLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6KEJPT0wpdmFsdWUg
Zm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lz
UHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJp
bmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJbnRlcmFjdGlv
bjooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzR3Jh
bmRmYXRoZXJlZDooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChCT09MKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAqKWhvc3QgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
OihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICopaG9z
dCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
Ky0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG86KE5TU3RyaW5nICopaG9zdE5hbWVSZWRpcmVjdGVkVG8gZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb246KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWw6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEdyYW5k
ZmF0aGVyaW5nVGltZTooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW46
KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6KEJPT0wpdmFs
dWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5
OihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50U3RvcmUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VyczoodW5zaWduZWQpaG91cnMg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVu
ZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzVmZGU3N2M2NzdhOTQ0YmRiYWExNmNjMDNhNjgx
YWNlZTUzZThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5oIgotCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyPiB3ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjsKLSAg
ICByZXR1cm4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7Ci19Ci0KLVdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cigpCi17Ci19Ci0KLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjp+V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKQotewotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZT4mJiBzdG9yZSkKLXsKLSAgICBtX3N0b3JlID0gV1RGTW92ZShzdG9yZSk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1v
cnlTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3N0b3JlLT5jbGVhckluTWVtb3J5KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQotewotICAgIGlm
ICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChtb2RpZmllZFNpbmNlKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+bG9nVXNlckludGVyYWN0aW9u
KHVybCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFy
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24odXJsKTsK
LX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlv
bih1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlKHVybCk7
Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh1
cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSh1cmwp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJlZCh1cmwsIHZh
bHVlKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNHcmFu
ZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzR3JhbmRmYXRoZXJlZCh1cmwp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3Rv
cmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJmcmFtZSwgdG9wRnJhbWUpOwot
fQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0
b3BGcmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
c3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJyZXNvdXJjZSwgdG9w
RnJhbWUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhz
dWJyZXNvdXJjZSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotfQotCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29u
ZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3RvcmUtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlKHNlY29uZHMpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRz
KQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+
c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOwotfQotCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOwotfQotCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1vZGlmaWNhdGlv
bkhhbmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0
b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkKLXsKLSAgICBpZiAoIW1f
c3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xlYXJGaXJz
dCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxl
bWV0cnlIYW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fc3RvcmUtPmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjJiYjIwODEwMDVkNTQwN2MxNzA4NjU2NDUzZmEyOTY1NTlhZjZjZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGNocm9u
bz4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7Ci0KLS8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYW4gQVBJT2JqZWN0IGZvciB0aGUgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgotY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIgewotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIG5vdCBiZSBhIHNpbmdsZXRvbi4KLSAgICBzdGF0aWMgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXImIHNoYXJlZCgpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JlKFJlZjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwotCi0gICAgfldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotCi0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwotICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIHZh
bHVlKTsKLSAgICBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLQot
ICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVS
TCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQgc2V0
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVz
b3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotCi0gICAgdm9pZCBzZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwotICAgIHZvaWQgc2V0VGltZVRvTGl2
ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoU2Vjb25kcyk7Ci0KLSAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cigpOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAg
dm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwg
Ym9vbCBjbGVhckZpcnN0KTsKLSAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci0KLSAg
ICB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwot
Ci1wcml2YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCk7Ci0KLSAg
ICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3JlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDZjM2QwMGVl
MTg5YTk3ZTk2MWE5N2Q1NjRkOGE5ZGJkMWVhNTM2YWEuLjY4NDkyMTBiYTU0YWI5MDlkNjM2NjU5
ZTVlMTc4NDhiNTFjZTE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMjE0LDcgKzIxMyw2IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNl
TG9hZE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAot
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdGF0aXN0
aWNzU3RvcmUoKnRoaXMpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRO
b3RpZmljYXRpb25DYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+aXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggN2NhMjZkZWQ2MGMxNWZi
ZGFjYTM3YTliZTFiOGQ3NjEzNTBkNjg2Ni4uZTc2Mzk2MDVmYmEzNjRjZmNlNDhhOGJkNDFmMjVi
ZDkyNjhiMTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC04OSw2ICs4OSw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQgcmVnaXN0ZXJT
aGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogCiAgICAgc3RhdGljIHZvaWQgY2xvbmVTZXNz
aW9uRGF0YShXZWJQYWdlUHJveHkmIHNvdXJjZVBhZ2UsIFdlYlBhZ2VQcm94eSYgbmV3UGFnZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmE1M2U2NDI1ZDY1YTQwNjk3MmM5MWRiNzE0YWZjNjRmODZiOThlYy4uYzhmY2I4Y2My
Y2RjZjhhMTY3YmM1N2M2YmZkMmM5YTcwZGM0YzQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSwxMCArMTE5MSw2IEBA
CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTgxMkYxMUQ3
QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI4MjFEREMxRUVGMDVERDAwRDdBRjRBIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07CiAJCTZCODIxREREMUVFRjA1
REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERCMUVFRjA1
REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLzsg
fTsKLQkJNkJFOTY5OUMxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NkJFOTY5OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJF
OTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwICovOyB9OwotCQk2QkU5NjlBMDFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5oICovOyB9OwotCQk2QkU5NjlBMjFFNDNCOEE0MDA4Qjc0ODMgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNkJFOTY5QzExRTU0RDQ1
MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29y
ZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUM3MUU1NEQ0QjYwMDhCNzQ4MyAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDNjFFNTRENEI2MDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwICovOyB9OwogCQk2QkU5NjlDQTFFNTRE
NENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDODFF
NTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5j
cHAgKi87IH07CkBAIC0zNDgyLDEwICszNDc4LDYgQEAKIAkJNjVCODZGMTgxMkYxMUQ3QjAwQjdE
RDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZC
ODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI4MjFEREIxRUVGMDVERDAwRDdBRjRB
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2
QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gY29yZVByZWRpY3Rpb25fbW9kZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZCRTk2OUM2MUU1NEQ0QjYwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjg2NSw4ICs2ODU3LDYgQEAKIAkJCQlCQzExMUIwRDExMkY1
RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlCQzAzMkRDRjEwRjQz
ODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNFRTdBQjMxMjgxNzA5
NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCQk2QkU5NjlB
MTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
ICovLAotCQkJCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBOUNEOEMxMUM3Nzk4NDkw
MEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKIAkJCQk3QTlD
RDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1l
c3NhZ2VzLmluICovLApAQCAtNzA3MSw4ICs3MDYxLDYgQEAKIAkJCQk1MThBQ0FFOTEyQUVFNkJC
MDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJCTMzMzY3NjM4MTMw
Qzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCAqLywKIAkJCQkzMzM2
NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oICovLAotCQkJ
CTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcCAqLywKLQkJCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEwMDBGNzk4NSAv
KiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2MTAwMEY3OTg1
IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQy
IC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtODgxNSw3ICs4ODAzLDYgQEAKIAkJCQkzNzYw
ODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk2QkU5NjlBMDFFNDNCODZFMDA4Qjc0
ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkI4MjFEREMxRUVGMDVERDAwRDdB
RjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxMzA3NUIwMURFODVGNTgwMDM5RUM2OSAvKiBXZWJSVENNb25pdG9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkwOTMsNyArOTA4MCw2IEBACiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUy
Q0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4ODIzMTUwNDE0
RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2
M0IxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1
NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0UzNzc5MThFNEE0RkUw
MDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0UzNzc1
MThFNEEzM0EwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNDMyLDcgKzEwNDE4LDYgQEAKIAkJCQkzNzYwODgxRTE1MDQxM0U5MDBGQzgyQzcg
LyogV2ViUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEFGRkI5MTY1NDIw
NDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgzIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdB
NzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBRDE3NUYxRUE2QUY5OTAwM0IwODk0IC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3
OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNjMxLDcgKzEwNjE2LDYgQEAK
IAkJCQkzNzk0ODQwODE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5OUUxRTQzQjQx
RDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE3RTM3NzgxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTU1MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9s
bFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUNEMUM2NjFCMzRCOURDMDAxNDJDQTUgLyog
V0tTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1MzU5ZmVhM2U3MDU3ZmQyNWM2M2YwYjZj
NDBmZmJlY2ZjM2I4M2UuLmVjNmNhZjhjNTdjNDNjYjM1ZGQxYmE3OWY1NTkyZTM0YTQ4YzIzZDgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3NCBAQAogMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIEMgQVBJIGJ5IENv
Y29hIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0MDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVwbGFjZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJIGZv
ciB0ZXN0aW5nLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRp
YWxzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlckZvck9uZURvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXND
YXB0dXJlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdUUjo6dG9OU1N0cmluZyk6CisgICAgICAgIChXVFI6OmluaXRpYWxpemVXZWJWaWV3Q29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKToK
KworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAg
IE1vdmUgc3RvcmUgbG9naWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0
byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxYWEwZTVkNTlh
NzRmOTYxMTAyOTlhN2MyMTY3OTNkZTZhODlkNDlmLi4xNTBhMzRiYzQ0OTYxNTA3NTEwMDYzNzMy
MzhlZjNjYzk5N2JkNjZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCdW5kbGVTY3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgpAQCAtMTQ1NiwxMyArMTQ1NSwxMiBAQCB2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigpCiAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJTdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIiKSk7CiAgICAgV0tCdW5k
bGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQotICAgIAorCiB2b2lkIFRl
c3RSdW5uZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGJvb2wgdmFsdWUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCIpKTsKICAgICBXS1JldGFpblB0cjxX
S0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkp
OwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OnNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChib29sIHZhbHVlKQpAQCAtMTQ3MSwxMyArMTQ2OSwxMiBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChibwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBU
ZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NOb3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwog
ICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVs
bHB0cik7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2Vz
V2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpz
ZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBz
ZWNvbmRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA4
YWE2YTY4MGUyNTFlZTViYTM5OGU1MmQxNjQzNmVjYjI4MzJlZjUyLi4zMzQyNjU3NGJiYjhjNTJi
YTc4MzVhMTM5Y2UwMGQyNmU1NDJjYjg2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BsdWdp
bkluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8V2Vi
S2l0L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CkBAIC0zODgsOCArMzg3LDYgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltd
KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6Omluc3RhbGxNb2Nr
R2FtZXBhZFByb3ZpZGVyKCk7CiAjZW5kaWYKLSAgICAKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGZhbHNlKTsKIAogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBwYWdlR3JvdXBJZGVudGlmaWVyKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAg
IG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdy
b3VwSWRlbnRpZmllci5nZXQoKSkpOwpAQCAtMjIwOSwxNTcgKzIyMDYsMTM3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKGJvb2wgaWdub3Jlc1Zp
ZXdwb3J0U2NhbGVMaW1pCiAgICAgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMo
bV9tYWluV2ViVmlldy0+cGFnZSgpLCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0
cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1p
bmF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyU2V0UHJldmFsZW50UmVzb3VyY2UoaG9zdE5hbWUsIHZhbHVlKTsKKyAgICBXS0NvbnRleHRU
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLWJvb2wgVGVz
dENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhv
c3ROYW1lKQorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQogewotICAgIHJldHVybiBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNQcmV2YWxlbnRSZXNvdXJjZShob3N0TmFtZSk7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lLCB2YWx1
ZSk7CisgICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3
Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNT
dGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorUGxh
dGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxh
dGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3Vy
YXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oaG9zdE5hbWUp
OworICAgIHJldHVybiBuZXcgUGxhdGZvcm1XZWJWaWV3KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMp
OwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChX
S1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK1dLQ29udGV4dFJlZiBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewotICAgIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKGhvc3ROYW1lLCB2YWx1ZSk7
CisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlz
dGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogewotICAgIHJldHVy
biBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKGhvc3ROYW1l
KTsKKwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFt
ZUhvc3ROYW1lKQordW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQ
YXN0ZWJvYXJkKCkgY29uc3QKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
U2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGhvc3ROYW1lLCB0b3BGcmFtZUhvc3ROYW1l
KTsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tT
dHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFscygpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVI
b3N0TmFtZSk7CiB9Ci0gICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1Jl
ZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oaG9z
dE5hbWUsIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCiti
b29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmlu
Z1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29u
ZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmlj
YXRpb25IYW5kbGVyKCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVz
ZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgcmV0dXJuIGZhbHNl
OwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcigpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkK
K2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdS
ZWYpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihob3N0TmFtZSwgdmFsdWUpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxl
bWV0cnlIYW5kbGVyKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQot
ICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiwg
V0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQotICAgIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYsIFdL
U3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZChib29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSk7CiB9Ci0gICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZy
ZWUoZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29u
ZHMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRm
YXRoZXJpbmdUaW1lKHNlY29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmll
ZFNpbmNlSG91cnMoaG91cnMpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0
aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpCiB7
Ci0gICAgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkp
OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoYm9vbCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVX
ZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCkKIHsKLSAgICBtX21haW5XZWJWaWV3
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlv
bnMpOwogfQogCi1QbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1
cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotV0tDb250ZXh0UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gY29udGV4
dDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKCkKIHsKLQogfQogCi11bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6
aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxl
cjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNl
SG91cnModW5zaWduZWQpCiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MjQx
ZTRjYmVlYTMzZTNmOGRjZmYwOTVjZDI0ZTc0NjJkMWNmMGZmLi4xOGNiZjc3ZDUxNDk3ODQ4ZDg1
MTM0NDdjMWIyM2IyNjg1NjgwNjVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBv
cnQgIkNyYXNoUmVwb3J0ZXJJbmZvLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNp
bXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdEludm9jYXRpb24uaCIKICNp
bXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZpZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgpAQCAtNDIsNiArNDMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUu
aD4KQEAgLTUwLDYgKzUyLDExIEBACiAKIG5hbWVzcGFjZSBXVFIgewogCitzdGF0aWMgTlNTdHJp
bmcqIHRvTlNTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aENTdHJpbmc6dG9XVEZTdHJpbmcoc3RyaW5nKS51dGY4KCkuZGF0YSgpXTsK
K30KKwogc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uOwogCiB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFy
KiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlv
bikKQEAgLTcwLDcgKzc3LDggQEAgdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24o
Y29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGUKICAgICBXS0Nvb2tp
ZU1hbmFnZXJTZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChXS0NvbnRleHRHZXRD
b29raWVNYW5hZ2VyKGNvbnRleHQpLCB0cnVlKTsKICNlbmRpZgogCi0gICAgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tDb250ZXh0R2V0V2Vic2l0
ZURhdGFTdG9yZShjb250ZXh0KSwgdHJ1ZSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLndlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllF
U107CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6Tk9dOwogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLmFsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2sgPSBZRVM7CkBAIC0yMTEsNCArMjE5LDExOSBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogI2VuZGlmCiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1Jl
ZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50
UmVzb3VyY2U6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wg
VGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVm
IGhvc3ROYW1lKQoreworICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6
dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOnZhbHVlIGZvckhv
c3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7Cisg
ICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNlckludGVyYWN0aW9uOnRvTlNTdHJpbmcoaG9zdE5h
bWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVy
ZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRJc0dyYW5kZmF0aGVyZWQ6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9
CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJp
bmdSZWYgaG9zdE5hbWUpCit7CisgICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVk
OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwg
V0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbjp0b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpIGZvckhv
c3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQoreworICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luOnRvTlNTdHJpbmcodG9wRnJhbWVIb3N0TmFt
ZSkgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvOnRvTlNTdHJpbmcoaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3Vi
bGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b246c2Vjb25kc107Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1NldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOnNlY29uZHNdOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkK
K3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcl07Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlckZvck9uZURvbWFpbjp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkK
K3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQ6dmFsdWVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwoYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3Vy
Y2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlX
YXNDYXB0dXJlZDp2YWx1ZV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit7
CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6
c2Vjb25kc107Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZh
dGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZh
dGhlcmluZ1RpbWU6c2Vjb25kc107Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VI
b3Vycyh1bnNpZ25lZCBob3VycykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6aG91cnNdOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgW2ds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RS
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314362</attachid>
            <date>2017-06-30 20:21:18 -0700</date>
            <delta_ts>2017-06-30 20:24:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630202117.patch</filename>
            <type>text/plain</type>
            <size>67978</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uOWJkOTczNjY1NjQ1OTAzOWI5ZDQyOGJkZjNjMmMy
YmQ4ODM0Yjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBDIEFQSSBieSBDb2NvYSBTUEkuIFRoZSBuZXcgQ29jb2EgU1BJIGlzIG9uCisgICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZSwgd2hpY2ggYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgdGhl
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyCisgICAgICAgIHNpbmdsZXRvbiBhcyB0
aGUgU1BJIGNhbiBub3cgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAg
IERyb3Agb2xkIEMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgRHJvcCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciBzaW5nbGV0b24gd2hpY2ggd2FzIG9ubHkgcmVx
dWlyZWQgYnkgdGhlCisgICAgICAgIEMgQVBJLiBUaGlzIGlzIGJlY2F1c2UgdGhlIEMgQVBJIHdh
cyBnbG9iYWwsIHJhdGhlciB0aGFuIHdvcmtpbmcgb24gYSBzcGVjaWZpYworICAgICAgICBzdG9y
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICBBZGQgbmV3IENvY29hIFNQSSBvbiBXS1dlYnNpdGVEYXRhU3RvcmUuIFRo
aXMgaXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZl
cik6CisgICAgICAgIFN0b3AgcmVnaXN0ZXJpbmcgdGhlIHN0b3JlIHdpdGggdGhlIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiwKKyAgICAgICAgYXMgdGhpcyBzaW5n
bGV0b24gaXMgZ29uZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOgorICAgICAgICBBZGQgbmV3IGdldHRlciB0byByZXRyaWV2ZSB0aGUg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZyb20gdGhlCisgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBuZXcgQ29jb2EgU1BJLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBEcm9wIHNvbWUg
ZmlsZXMuCisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCAzNjM3NzdkN2NmZDViM2NiOWNjYzRlOWI3YmM5ZjJiMTY3MTNmZTJhLi5i
MDI5NGNkNmNhYjYwYTljYjRjNWY0YmU1NWNjY2Q1NjZkNWU0YmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMTA3LDcgKzEwNyw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmdOb25lLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21h
a2UKaW5kZXggODU3YzRlNmZjODk0NTZlYzdjZDVjZDg0ZDNlYjhhYzhhNWYxMDA4Yy4uYWQwNTI5
YzRlYjBkMmUxMmIwOGRlNzQ3OTNmZmY4MTE1ZDY3MDk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMu
Y21ha2UKQEAgLTE2NSw3ICsxNjUsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwCiAgICAg
VUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHAKLSAgICBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA5MjU1
MGZjZTc3ZWI2NGVhYTIyZjg4ZTgxYTE5Njk4NTMwMWFkYTViLi4xMDc1NzMxODA1OTllMTM3Nzc5
MzM4OGZhODFlZmMwNjhiZTM1ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTI1
LDcgKzEyNSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9C
YWNraW5nU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAK
ICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKLSAgICBVSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTZhYmM4ZWY1YWFj
M2ZkMWE4ZDM1ZjEyODU2Y2QzNGIyOTI3NDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi12
b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRQcmV2YWxlbnRSZXNvdXJjZShX
S1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUpCi0gICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotICAgIGVsc2UK
LSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0K
LQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNQcmV2YWxlbnRSZXNvdXJj
ZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICByZXR1cm4gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCB0
b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotICAgIGVsc2UKLSAgICAgICAgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwo
KSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIEFQSSBuYW1l
IGlzIHdyb25nLgotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNIYXNIYWRV
c2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAgcmV0dXJuIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3RO
YW1lKSksIHZhbHVlKTsKLX0KLQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
SXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJldHVybiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNHcmFuZGZhdGhlcmVkKFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKLXsKLSAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSwgVVJMKFVSTCgp
LCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tT
dHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCi17Ci0gICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSksIFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
LXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUp
KSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRUbykpKTsKLX0KLQot
dm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHsg
c2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1Jl
bW92YWwoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChT
ZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCi17Ci0gICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFu
ZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cih7IH0sIHsgdG9XVEZTdHJpbmcoaG9zdE5hbWUpIH0sIGZhbHNlKTsKLSAgICBlbHNlCi0gICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB0b1dURlN0cmluZyhob3N0TmFtZSkgfSwgeyB9LCBm
YWxzZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVUZWxl
bWV0cnlIYW5kbGVyKCkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
c2hhcmVkKCkuZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFS
ZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUp
Ci17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFn
ZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSkK
LXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeSh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQotewotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgaG91cnMp
Ci17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCi17Ci0gICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24oMjRfaCAqIDMwLik7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwotICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7Ci0gICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChmYWxzZSk7Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJJbk1lbW9yeVN0b3JlKCk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODFmZTI0NGY1YjVkMmRkNDU1NGUwMzhjODlhMDVjMjM5YWMyYzg1OS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8V2Vi
S2l0L1dLQmFzZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlm
Ci0gICAgCi0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldFByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsK
LSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNQcmV2
YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIGJvb2wgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cklzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZv
aWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFt
ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNl
dFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tT
dHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0
cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAg
IFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKLSAgICBXS19FWFBPUlQgdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
ZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdL
X0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlRGF0YU1vZGlm
aWNhdGlvbkhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgV0tf
RVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29s
IHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2
b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMo
dW5zaWduZWQpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDk1NzEwNTk5YjMxN2Y1MWJmZWU4Y2ExOTJiOWZk
MmFiYjg0NzU4YTcuLjM2ZDY0MjIzZWM5OWNmYTYyZWE4OWNmMTBkYmRlNTAzNWRlYTRiNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC0zMSwxMCArMzEsMTUgQEAKICNpbXBvcnQgIldLSFRUUENvb2tp
ZVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
aCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbXBvcnQgIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBAaW1w
bGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRlZmF1bHREYXRhU3RvcmUKQEAgLTIwMiw2ICsyMDcsMjM0IEBAIC0gKHZvaWQpX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVuYWJsZWQpOwogfQogCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNQcmV2
YWxlbnRSZXNvdXJjZTooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlKFVS
TChVUkwoKSwgaG9zdCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7Cit9CisKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRv
KiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBOTzsKKwor
ICAgIHJldHVybiBzdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3QpKTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEhhZFVzZXJJbnRlcmFjdGlv
bjooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2
YWx1ZSkKKyAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3Qp
KTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJ
bnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
KyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1cm4gc3RvcmUt
Pmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzR3JhbmRmYXRoZXJlZDooQk9PTCl2YWx1ZSBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlm
ICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVk
KFVSTChVUkwoKSwgaG9zdCksIHZhbHVlKTsKK30KKworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3Rv
cmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBy
ZXR1cm4gc3RvcmUtPmlzR3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAor
eworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJM
KCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKworLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbjoo
TlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAorewor
ICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJM
KCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKworLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbzooTlNT
dHJpbmcgKilob3N0TmFtZVJlZGlyZWN0ZWRUbyBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgp
LCBob3N0KSwgVVJMKFVSTCgpLCBob3N0TmFtZVJlZGlyZWN0ZWRUbykpOworfQorCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbjooZG91
YmxlKXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU6KGRvdWJsZSlzZWNvbmRzCit7
CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25k
cyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6KGRvdWJsZSlzZWNvbmRzCit7Cisg
ICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNl
Y29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0R3JhbmRmYXRoZXJpbmdUaW1lOihkb3VibGUpc2Vjb25kcworeworICAgIGF1dG8qIHN0b3Jl
ID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUt
PnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHtzZWNvbmRzIH0pOworfQorCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyCit7Cisg
ICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Cit9CisKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAg
IHJldHVybjsKKworICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmlu
ZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7CisgICAgZWxz
ZQorICAgICAgICBzdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgaG9z
dCB9LCB7IH0sIGZhbHNlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cmVUZWxlbWV0cnlIYW5kbGVyCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAo
IXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+ZmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3Jl
LT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlCit7CisgICAgYXV0byogc3RvcmUg
PSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUp
OworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdh
c0NhcHR1cmVkKHZhbHVlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQoreworICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNl
dFNob3VsZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlCit7CisgICAgYXV0byog
c3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBz
dG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKK30KKworLSAodm9pZClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSBzdGQ6OmNo
cm9ubzo6aG91cnMoaG91cnMpKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAg
IGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZSgyNF9oKTsKKyAgICBzdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVu
RGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7CisgICAgc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGlt
ZSgxX2gpOworICAgIHN0b3JlLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGZhbHNlKTsKKyAgICBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGZhbHNlKTsKKyAgICBz
dG9yZS0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
dHJ1ZSk7CisgICAgc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsKK30KKwogQGVuZAogCiAjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggOTFlNDYz
ZTEzZGUxZjE4MzdmNzA5YWE5YjE3MDVlMTVkOTkyNzZiZS4uYjg5YTI2Y2JmNWFmOTc1YzBhYjUy
YWNkNGMzODViYmFlMWFmODU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTQz
LDYgKzQzLDMyIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0
YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOwog
CisvLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFNQSSBmb3IgdGVzdGluZy4KKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc1ByZXZhbGVudFJlc291cmNlOihCT09MKXZhbHVlIGZv
ckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc1By
ZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50ZXJhY3Rpb246
KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc0dyYW5k
ZmF0aGVyZWQ6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilob3N0IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbjoo
TlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW46KE5TU3RyaW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3Qg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dFRvOihOU1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFs
Oihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZh
dGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluOihC
T09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09MKXZhbHVlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkOihCT09MKXZhbHVl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeToo
Qk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1ZmRlNzdjNjc3YTk0NGJkYmFhMTZjYzAzYTY4MWFj
ZWU1M2U4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
aCIKLQotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXImIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7Ci0gICAg
cmV0dXJuIHdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwotfQotCi1XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIo
KQotewotfQotCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6fldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2V0U3RhdGlzdGljc1N0b3JlKFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+JiYgc3RvcmUpCi17Ci0gICAgbV9zdG9yZSA9IFdURk1vdmUoc3RvcmUpOwot
fQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5
U3RvcmUoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9z
dG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKLXsKLSAgICBpZiAo
IW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQotewotICAgIGlmICghbV9zdG9yZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
bW9kaWZpZWRTaW5jZSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbih1
cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKHVybCk7Ci19
Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
dXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZSh1cmwpOwot
fQotCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UodXJs
KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJQcmV2
YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UodXJsKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyZWQodXJsLCB2YWx1
ZSk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzR3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5pc0dyYW5kZmF0aGVyZWQodXJsKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJh
bWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3Jl
LT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3ViZnJhbWUsIHRvcEZyYW1lKTsKLX0K
LQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9w
RnJhbWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0
b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3VicmVzb3VyY2UsIHRvcEZy
YW1lKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVS
TCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3Vi
cmVzb3VyY2UsIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
IHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMpOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShzZWNvbmRzKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykK
LXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKLX0KLQotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1l
KFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsKLX0KLQotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
c3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCi17Ci0gICAgaWYgKCFtX3N0
b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3Qp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlVGVsZW1l
dHJ5SGFuZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDIyYmIyMDgxMDA1ZDU0MDdjMTcwODY1NjQ1M2ZhMjk2NTU5YWY2Y2UuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxjaHJvbm8+
Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwotCi0vLyBGSVhN
RTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmVjb21lIGFuIEFQSU9iamVjdCBmb3IgdGhlIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KLWNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyIHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI+OwotcHVibGljOgotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBub3QgYmUgYSBzaW5nbGV0b24uCi0gICAgc3RhdGljIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyJiBzaGFyZWQoKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKLQotICAgIH5XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcigpOwotCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3Qg
V2ViQ29yZTo6VVJMJik7Ci0gICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2Vi
Q29yZTo6VVJMJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLQotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6
VVJMJik7Ci0gICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwotICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsK
LSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCB2YWx1
ZSk7Ci0gICAgYm9vbCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0KLSAg
ICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2b2lkIHNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291
cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2b2lkIHNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIHZvaWQgc2V0VGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3
ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwotICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJp
bmdUaW1lKFNlY29uZHMpOwotCi0gICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKLSAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotICAgIHZv
aWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJv
b2wgY2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotCi0gICAg
dm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKLQot
cHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpOwotCi0gICAg
UmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2YzNkMDBlZTE4
OWE5N2U5NjFhOTdkNTY0ZDhhOWRiZDFlYTUzNmFhLi42ODQ5MjEwYmE1NGFiOTA5ZDYzNjY1OWU1
ZTE3ODQ4YjUxY2UxNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24u
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTIxNCw3ICsyMTMsNiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxv
YWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGlj
c1N0b3JlKCp0aGlzKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0Tm90
aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDdjYTI2ZGVkNjBjMTVmYmRh
Y2EzN2E5YmUxYjhkNzYxMzUwZDY4NjYuLmU3NjM5NjA1ZmJhMzY0Y2ZjZTQ4YThiZDQxZjI1YmQ5
MjY4YjE2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtODksNiArODksNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHJlZ2lzdGVyU2hh
cmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNsb25lU2Vzc2lv
bkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBXZWJQYWdlUHJveHkmIG5ld1BhZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJhNTNlNjQyNWQ2NWE0MDY5NzJjOTFkYjcxNGFmYzY0Zjg2Yjk4ZWMuLmM4ZmNiOGNjMmNk
Y2Y4YTE2N2JjNTdjNmJmZDJjOWE3MGRjNGM0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTEsMTAgKzExOTEsNiBAQAog
CQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4MTJGMTFEN0Iw
MEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovOyB9OwogCQk2QjgyMURERDFFRUYwNURE
MDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQjFFRUYwNURE
MDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgKi87IH07
Ci0JCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZC
RTk2OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2
OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cCAqLzsgfTsKLQkJNkJFOTY5QTAxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuaCAqLzsgfTsKLQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUExMUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi87IH07CiAJCTZCRTk2OUMxMUU1NEQ0NTIw
MDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQ
cmVkaWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDNzFFNTRENEI2MDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzYxRTU0RDRCNjAwOEI3NDgzIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNkJFOTY5Q0ExRTU0RDRD
RjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzgxRTU0
RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3Bw
ICovOyB9OwpAQCAtMzQ4MiwxMCArMzQ3OCw2IEBACiAJCTY1Qjg2RjE4MTJGMTFEN0IwMEI3REQ4
QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0J1bmRsZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Qjgy
MUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCODIxRERCMUVFRjA1REQwMEQ3QUY0QSAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkJF
OTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJF
OTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IGNvcmVQcmVkaWN0aW9uX21vZGVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QkU5NjlDNjFFNTRENEI2MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NjUsOCArNjg1Nyw2IEBACiAJCQkJQkMxMTFCMEQxMTJGNUU0
RjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0YxMEY0Mzg5
RjAwNThDMTVBIC8qIFdlYlByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDRUU3QUIzMTI4MTcwOTUw
MDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJNkJFOTY5QTEx
RTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAq
LywKLQkJCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuaCAqLywKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QTlDRDhDMTFDNzc5ODQ5MDBE
OUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJCQkJN0E5Q0Q4
QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNz
YWdlcy5pbiAqLywKQEAgLTcwNzEsOCArNzA2MSw2IEBACiAJCQkJNTE4QUNBRTkxMkFFRTZCQjAw
QjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLywKIAkJCQkzMzM2NzYzODEzMEM5
OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgKi8sCiAJCQkJMzMzNjc2
MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywKLQkJCQk2
QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5jcHAgKi8sCi0JCQkJNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQkxQURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyog
V0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJCTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4NSAv
KiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIxMUQwMDM3NzA0MiAv
KiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTg4MTUsNyArODgwMyw2IEBACiAJCQkJMzc2MDg4
MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2Fk
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkJFOTY5QTAxRTQzQjg2RTAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTMwNzVCMDFERTg1RjU4MDAzOUVDNjkgLyogV2ViUlRDTW9uaXRvci5oIGluIEhlYWRl
cnMgKi8sCkBAIC05MDkzLDcgKzkwODAsNiBAQAogCQkJCTM3OTQ4NDA5MTUwQzRCOTcwMEU1MkNF
OSAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYwODgyMzE1MDQxNEY3
MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjNC
MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk2QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QTUwMTUxMTc2NUY1NjAwNzU3NTcz
IC8qIFdLUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdFMzc3OTE4RTRBNEZFMDAz
RDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdFMzc3NTE4
RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDQzMiw3ICsxMDQxOCw2IEBACiAJCQkJMzc2MDg4MUUxNTA0MTNFOTAwRkM4MkM3IC8q
IFdlYlJlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTBBRkZCOTE2NTQyMDQ4
MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFG
MDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTc5
MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUQxNzVGMUVBNkFGOTkwMDNCMDg5NCAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNzkx
RUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDYzMSw3ICsxMDYxNiw2IEBACiAJ
CQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjNBMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OTlFMUU0M0I0MUQw
MDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxW
aWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlEQzAwMTQyQ0E1IC8qIFdL
U2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3NTM1OWZlYTNlNzA1N2ZkMjVjNjNmMGI2YzQw
ZmZiZWNmYzNiODNlLi40YzI5OGI3MDgxYzBlNTE4NjFjMzRhZWRmMGFjZTlhMzU5YzNlMWQwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMjQgQEAKIDIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQSSBieSBDb2Nv
YSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBv
cnQgV2ViS2l0VGVzdFJ1bm5lciBvdmVyIHRvIHRoZSBuZXcgQ29jb2EgU1BJLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNz
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpOgorICAgICAgICBEcm9wIGNhbGxz
IHRvIHRoZSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQSSBoZXJlLiBUaG9zZSB3
ZXJlCisgICAgICAgIG5vLW9wcyBzaW5jZSB0aGlzIGNvZGUgcnVucyBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzLCBub3QgdGhlCisgICAgICAgIFVJUHJvY2Vzcy4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKworMjAxNy0wNi0zMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NDAzOAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCAxYWEwZTVkNTlhNzRmOTYxMTAyOTlhN2MyMTY3OTNkZTZh
ODlkNDlmLi4xNTBhMzRiYzQ0OTYxNTA3NTEwMDYzNzMyMzhlZjNjYzk5N2JkNjZlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVTY3JpcHRXb3Js
ZC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdl
UHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5o
PgpAQCAtMTQ1NiwxMyArMTQ1NSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NGaXJl
VGVsZW1ldHJ5SGFuZGxlcigpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzRmly
ZVRlbGVtZXRyeUhhbmRsZXIiKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IDAsIG51bGxwdHIpOwogfQotICAgIAorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NO
b3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUpCiB7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5
KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQodmFsdWUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZhbHVlKQpAQCAt
MTQ3MSwxMyArMTQ2OSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChibwogICAgIFdLUmV0YWlu
UHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHZh
bHVlKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNz
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXND
YXB0dXJlZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFk
b3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVk
KHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA4YWE2YTY4MGUyNTFlZTViYTM5OGU1MmQx
NjQzNmVjYjI4MzJlZjUyLi4zMzQyNjU3NGJiYjhjNTJiYTc4MzVhMTM5Y2UwMGQyNmU1NDJjYjg2
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNTQsNyAr
NTQsNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BsdWdpbkluZm9ybWF0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
UHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRD
aGVja2VyLmg+CkBAIC0zODgsOCArMzg3LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6Omluc3RhbGxNb2NrR2FtZXBhZFByb3ZpZGVyKCk7CiAjZW5k
aWYKLSAgICAKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkU3Vi
bWl0VGVsZW1ldHJ5KGZhbHNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwYWdl
R3JvdXBJZGVudGlmaWVyKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJX
ZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5nZXQoKSkpOwpA
QCAtMjIwOSwxNTcgKzIyMDYsMTM3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElnbm9yZXNW
aWV3cG9ydFNjYWxlTGltaXRzKGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pCiAgICAgV0tQ
YWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMobV9tYWluV2ViVmlldy0+cGFnZSgpLCBp
Z25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsK
LSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50UmVzb3VyY2Uo
aG9zdE5hbWUsIHZhbHVlKTsKKyAgICBXS0NvbnRleHRUZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcyhw
bGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorI2lmICFQTEFURk9STShD
T0NPQSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVz
dEludm9jYXRpb24mKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VySXNQcmV2YWxlbnRSZXNvdXJjZShob3N0TmFtZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5h
bWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZp
ZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFz
SGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgbV9tYWluV2ViVmlldyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25z
KTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3
LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
SXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oaG9zdE5hbWUpOworICAgIHJldHVybiBuZXcgUGxhdGZv
cm1XZWJWaWV3KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi12b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSkKK1dLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRl
eHRDb25maWd1cmF0aW9uKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRHcmFuZGZhdGhlcmVkKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJp
bmdSZWYgaG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKGhvc3ROYW1lKTsKKwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5n
UmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQordW5zaWduZWQgVGVz
dENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkKCkgY29uc3QKIHsKLSAg
ICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGhvc3ROYW1lLCB0b3BGcmFtZUhvc3ROYW1lKTsKKyAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFt
ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7
Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CiB9Ci0gICAgCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdL
U3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oaG9zdE5hbWUsIGhvc3ROYW1lUmVkaXJlY3Rl
ZFRvKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRz
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJp
bmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK2Jvb2wgVGVz
dENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1Jl
ZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFNb2RpZmlj
YXRpb25IYW5kbGVyKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5n
UmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihX
S1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6Omlz
U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tT
dHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJGaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQodmFsdWUpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJv
b2wgdmFsdWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9y
ZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVl
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9Ci0gICAgCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlKQogewotICAgIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKIHsKLSAgICBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZSgpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJp
bmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoaG91cnMpOwogfQot
ICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpCiB7Ci0gICAgV0tDb250ZXh0VGVybWluYXRl
TmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi0jaWYgIVBMQVRGT1JNKENP
Q09BKQotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0
SW52b2NhdGlvbiYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCkKIHsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2Fw
dHVyZWQoYm9vbCkKIHsKLSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi1QbGF0Zm9ybVdlYlZp
ZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZp
ZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAot
V0tDb250ZXh0UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3Vy
YXRpb24pCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdU
aW1lKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gY29udGV4dDsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKIHsK
LQogfQogCi11bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3Rl
Ym9hcmQoKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQpCiB7Ci0gICAg
cmV0dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVk
ZW50aWFscygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MjQxZTRjYmVlYTMzZTNmOGRjZmYwOTVjZDI0
ZTc0NjJkMWNmMGZmLi4xOGNiZjc3ZDUxNDk3ODQ4ZDg1MTM0NDdjMWIyM2IyNjg1NjgwNjVlIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNyYXNoUmVwb3J0ZXJJbmZvLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5o
IgogI2ltcG9ydCAiVGVzdEludm9jYXRpb24uaCIKICNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgpAQCAtNDIsNiArNDMsNyBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0
ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTUwLDYgKzUyLDExIEBACiAK
IG5hbWVzcGFjZSBXVFIgewogCitzdGF0aWMgTlNTdHJpbmcqIHRvTlNTdHJpbmcoV0tTdHJpbmdS
ZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9X
VEZTdHJpbmcoc3RyaW5nKS51dGY4KCkuZGF0YSgpXTsKK30KKwogc3RhdGljIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwogCiB2b2lkIGluaXRpYWxp
emVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFyKiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdS
ZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKQEAgLTcwLDcgKzc3LDggQEAgdm9p
ZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFyeVBhdGgs
IFdLU3RyaW5nUmVmIGluamVjdGUKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRDb29raWVTdG9yYWdl
UGFydGl0aW9uaW5nRW5hYmxlZChXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKGNvbnRleHQpLCB0
cnVlKTsKICNlbmRpZgogCi0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShjb250ZXh0KSwgdHJ1
ZSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgW2dsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRT
aG91bGRTdWJtaXRUZWxlbWV0cnk6Tk9dOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGdsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CkBA
IC0yMTEsNCArMjE5LDExOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkK
K3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6dmFsdWUgZm9ySG9zdDp0
b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAgIHJldHVy
biBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6dG9OU1N0cmluZyhob3N0TmFtZSldOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0SGFkVXNlckludGVyYWN0aW9uOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSld
OworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFk
VXNlckludGVyYWN0aW9uOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc0dyYW5kZmF0aGVyZWQ6dmFsdWUg
Zm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAg
cmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0
TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbjp0
b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSld
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFt
ZUhvc3ROYW1lKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2luOnRvTlNTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkgZm9ySG9zdDp0b05TU3RyaW5nKGhv
c3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhv
c3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvOnRvTlNTdHJpbmcoaG9zdE5hbWVSZWRpcmVjdGVkVG8pIGZvckhvc3Q6dG9O
U1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb246c2Vjb25kc107Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQoreworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjp2YWx1ZSBm
b3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVU
ZWxlbWV0cnlIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkKK3sKKyAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6dmFs
dWVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKK3sKKyAgICBb
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDp2YWx1ZV07Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6c2Vjb25kc107Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29u
ZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUg
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6c2Vjb25kc107Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3sK
KyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnM6aG91cnNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314363</attachid>
            <date>2017-06-30 20:24:39 -0700</date>
            <delta_ts>2017-06-30 20:42:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630202438.patch</filename>
            <type>text/plain</type>
            <size>68543</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uOWJkOTczNjY1NjQ1OTAzOWI5ZDQyOGJkZjNjMmMy
YmQ4ODM0Yjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBDIEFQSSBieSBDb2NvYSBTUEkuIFRoZSBuZXcgQ29jb2EgU1BJIGlzIG9uCisgICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZSwgd2hpY2ggYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgdGhl
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyCisgICAgICAgIHNpbmdsZXRvbiBhcyB0
aGUgU1BJIGNhbiBub3cgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAg
IERyb3Agb2xkIEMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgRHJvcCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciBzaW5nbGV0b24gd2hpY2ggd2FzIG9ubHkgcmVx
dWlyZWQgYnkgdGhlCisgICAgICAgIEMgQVBJLiBUaGlzIGlzIGJlY2F1c2UgdGhlIEMgQVBJIHdh
cyBnbG9iYWwsIHJhdGhlciB0aGFuIHdvcmtpbmcgb24gYSBzcGVjaWZpYworICAgICAgICBzdG9y
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICBBZGQgbmV3IENvY29hIFNQSSBvbiBXS1dlYnNpdGVEYXRhU3RvcmUuIFRo
aXMgaXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZl
cik6CisgICAgICAgIFN0b3AgcmVnaXN0ZXJpbmcgdGhlIHN0b3JlIHdpdGggdGhlIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiwKKyAgICAgICAgYXMgdGhpcyBzaW5n
bGV0b24gaXMgZ29uZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOgorICAgICAgICBBZGQgbmV3IGdldHRlciB0byByZXRyaWV2ZSB0aGUg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZyb20gdGhlCisgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBuZXcgQ29jb2EgU1BJLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBEcm9wIHNvbWUg
ZmlsZXMuCisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAppbmRleCAzYzEyNzk3ZWZhNTM0ZTc1YjgzMDE1NWJiYTdlYTk1NzBhMzk5ZDNiLi45ZGYzNzZl
YzlhMDY0YjhkZTEwMGQxNDIyYmRhN2U0MDI1ZmMyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApA
QCAtMzI4LDcgKzMyOCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKLSAgICBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCiAgICAg
VUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggMzYzNzc3ZDdjZmQ1YjNjYjljY2M0ZTliN2JjOWYyYjE2NzEzZmUyYS4uYjAyOTRj
ZDZjYWI2MGE5Y2I0YzVmNGJlNTVjY2NkNTY2ZDVlNGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEwNyw3ICsxMDcsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29k
aW5nTm9uZS5jcHAKLSAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDg1N2M0ZTZmYzg5NDU2ZWM3Y2Q1Y2Q4NGQzZWI4YWM4YTVmMTAwOGMuLmFkMDUyOWM0ZWIw
ZDJlMTJiMDhkZTc0NzkzZmZmODExNWQ2NzA5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC0xNjUsNyArMTY1LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcAogICAgIFVJUHJv
Y2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtV1BF
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggOTI1NTBmY2U3
N2ViNjRlYWEyMmY4OGU4MWExOTY5ODUzMDFhZGE1Yi4uMTA3NTczMTgwNTk5ZTEzNzc3OTMzODhm
YTgxZWZjMDY4YmUzNTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEyNSw3ICsx
MjUsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAgICAg
VUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCi0gICAgVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk2YWJjOGVmNWFhYzNmZDFh
OGQzNWYxMjg1NmNkMzRiMjkyNzQ0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50UmVzb3VyY2UoV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0UHJldmFsZW50UmVz
b3VyY2UoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLSAgICBlbHNlCi0gICAg
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhclByZXZh
bGVudFJlc291cmNlKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLWJv
b2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzUHJldmFsZW50UmVzb3VyY2UoV0tT
dHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgdG9XVEZT
dHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5sb2dVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCB0b1dURlN0
cmluZyhob3N0TmFtZSkpKTsKLSAgICBlbHNlCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi0vLyBGSVhNRTogVGhpcyBBUEkgbmFtZSBpcyB3
cm9uZy4KLWJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJldHVybiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldEdyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNo
YXJlZCgpLnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkp
LCB2YWx1ZSk7Ci19Ci0KLWJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzR3Jh
bmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICByZXR1cm4gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmlzR3JhbmRmYXRoZXJlZChVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCi17Ci0gICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSksIFVSTChVUkwoKSwgdG9X
VEZTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5n
UmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQotewotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpLCBVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0
cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCi17Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSksIFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWVSZWRpcmVjdGVkVG8pKSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24oZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29u
ZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVU
b0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFs
KGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzaGFyZWQoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldEdyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNl
Y29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci19
Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9
LCB7IHRvV1RGU3RyaW5nKGhvc3ROYW1lKSB9LCBmYWxzZSk7Ci0gICAgZWxzZQotICAgICAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZVNob3VsZFBhcnRp
dGlvbkNvb2tpZXNIYW5kbGVyKHsgdG9XVEZTdHJpbmcoaG9zdE5hbWUpIH0sIHsgfSwgZmFsc2Up
OwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlVGVsZW1ldHJ5
SGFuZGxlcigpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE5vdGlm
eVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwotfQotCi12b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9y
ZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwodmFsdWUpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlKQotewot
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hl
blRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpCi17Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRUZWxlbWV0
cnkodmFsdWUpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgp
OwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkIGhvdXJzKQotewot
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0g
c3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQotewotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKDI0X2ggKiAzMC4pOwotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
aGFyZWQoKS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKLSAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3
ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNoYXJlZCgpLnNldEdyYW5kZmF0aGVyaW5nVGltZSgxX2gpOwotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZChmYWxzZSk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoZmFsc2UpOwotICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNC
ZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodHJ1ZSk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlTdG9yZSgpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZmUy
NDRmNWI1ZDJkZDQ1NTRlMDM4Yzg5YTA1YzIzOWFjMmM4NTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPFdlYktpdC9X
S0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotICAg
IAotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRQ
cmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAg
V0tfRVhQT1JUIGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzUHJldmFsZW50
UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCBib29sIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1Jl
ZiBob3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldEdyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
OwotICAgIFdLX0VYUE9SVCBib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc0dy
YW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpOwot
ICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5n
UmVmIHRvcEZyYW1lSG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdS
ZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLSAgICBXS19F
WFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KGRvdWJsZSBzZWNvbmRzKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJs
ZSBzZWNvbmRzKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKTsKLSAgICBXS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFNb2RpZmljYXRp
b25IYW5kbGVyKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotICAgIFdLX0VYUE9S
VCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9u
Q29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFs
dWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJG
aXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1
ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNl
dFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZSgpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2ln
bmVkKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQppbmRleCA5NTcxMDU5OWIzMTdmNTFiZmVlOGNhMTkyYjlmZDJhYmI4
NDc1OGE3Li4zNmQ2NDIyM2VjOTljZmE2MmVhODljZjEwZGJkZTUwMzVkZWE0YjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQpAQCAtMzEsMTAgKzMxLDE1IEBACiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9y
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAj
aW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogQGltcGxlbWVu
dGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZh
dWx0RGF0YVN0b3JlCkBAIC0yMDIsNiArMjA3LDIzNCBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZDooQk9PTCllbmFibGVkCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAorLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50
UmVzb3VyY2U6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0
byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAodmFsdWUpCisgICAgICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJM
KCksIGhvc3QpKTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5jbGVhclByZXZhbGVudFJlc291
cmNlKFVSTChVUkwoKSwgaG9zdCkpOworfQorCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzSXNQcmV2YWxlbnRSZXNvdXJjZTooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3Rv
cmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBy
ZXR1cm4gc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7Cit9CisK
Ky0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246KEJP
T0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmFsdWUp
CisgICAgICAgIHN0b3JlLT5sb2dVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0KSk7Cisg
ICAgZWxzZQorICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBo
b3N0KSk7Cit9CisKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50ZXJh
Y3Rpb246KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
aWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJuIHN0b3JlLT5oYXNI
YWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0KSk7Cit9CisKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRJc0dyYW5kZmF0aGVyZWQ6KEJPT0wpdmFsdWUgZm9ySG9zdDoo
TlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0
b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChVUkwo
VVJMKCksIGhvc3QpLCB2YWx1ZSk7Cit9CisKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NJc0dyYW5kZmF0aGVyZWQ6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJu
IHN0b3JlLT5pc0dyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBob3N0KSk7Cit9CisKKy0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW46KE5T
U3RyaW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsK
KworICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBo
b3N0KSwgVVJMKFVSTCgpLCB0b3BGcmFtZUhvc3ROYW1lKSk7Cit9CisKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW46KE5TU3Ry
aW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBo
b3N0KSwgVVJMKFVSTCgpLCB0b3BGcmFtZUhvc3ROYW1lKSk7Cit9CisKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG86KE5TU3RyaW5n
ICopaG9zdE5hbWVSZWRpcmVjdGVkVG8gZm9ySG9zdDooTlNTdHJpbmcgKilob3N0Cit7CisgICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgaG9z
dCksIFVSTChVUkwoKSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8pKTsKK30KKworLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb246KGRvdWJsZSlz
ZWNvbmRzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihT
ZWNvbmRzIHsgc2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOihkb3VibGUpc2Vjb25kcworeworICAg
IGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyBz
ZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOihkb3VibGUpc2Vjb25kcworeworICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRz
IHsgc2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEdy
YW5kZmF0aGVyaW5nVGltZTooZG91YmxlKXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRH
cmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7c2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcgoreworICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworfQorCistICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyCit7
CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1
cm47CisKKyAgICBzdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXJGb3JPbmVEb21haW46KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilo
b3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHN0b3JlLT5maXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCB7IGhvc3QgfSwgZmFsc2UpOworICAgIGVsc2UKKyAg
ICAgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IGhvc3QgfSwg
eyB9LCBmYWxzZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlVGVs
ZW1ldHJ5SGFuZGxlcgoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9y
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7
Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09MKXZhbHVlCit7CisgICAgYXV0byogc3RvcmUgPSBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7Cit9CisKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9y
ZURhdGFSZWNvcmRzUmVtb3ZhbDooQk9PTCl2YWx1ZQoreworICAgIGF1dG8qIHN0b3JlID0gX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFNo
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlKTsKK30K
KworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkOihCT09MKXZhbHVlCit7CisgICAgV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZCh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91
bGRTdWJtaXRUZWxlbWV0cnk6KEJPT0wpdmFsdWUKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRTaG91
bGRTdWJtaXRUZWxlbWV0cnkodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZQoreworICAgIGF1dG8qIHN0b3Jl
ID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUt
PmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhv
dXJzOih1bnNpZ25lZClob3VycworeworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYg
KCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJvbm86
OmhvdXJzKGhvdXJzKSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAo
IXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbigyNF9oICogMzAuKTsKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUoMjRfaCk7CisgICAgc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbCgxX2gpOworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoMV9o
KTsKKyAgICBzdG9yZS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChm
YWxzZSk7CisgICAgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Ojpz
ZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChmYWxzZSk7CisgICAgc3RvcmUt
PnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRydWUp
OworICAgIHN0b3JlLT5jbGVhckluTWVtb3J5KCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDkxZTQ2M2UxM2Rl
MWYxODM3ZjcwOWFhOWIxNzA1ZTE1ZDk5Mjc2YmUuLmI4OWEyNmNiZjVhZjk3NWMwYWI1MmFjZDRj
Mzg1YmJhZTFhZjg1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC00Myw2ICs0
MywzMiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9y
ZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAorLy8g
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBTUEkgZm9yIHRlc3RpbmcuCistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0SXNQcmV2YWxlbnRSZXNvdXJjZTooQk9PTCl2YWx1ZSBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNQcmV2YWxl
bnRSZXNvdXJjZTooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldEhhZFVzZXJJbnRlcmFjdGlvbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhv
c3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNlckludGVyYWN0aW9uOihOU1N0
cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhl
cmVkOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NJc0dyYW5kZmF0aGVyZWQ6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW46KE5TU3Ry
aW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luOihO
U1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbzoo
TlNTdHJpbmcgKilob3N0TmFtZVJlZGlyZWN0ZWRUbyBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3Qg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bjooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbDooZG91
YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0R3JhbmRmYXRoZXJp
bmdUaW1lOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJl
RGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2
YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZDooQk9PTCl2YWx1ZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbDooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDooQk9PTCl2YWx1ZSBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6KEJPT0wp
dmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzOih1bnNpZ25lZClob3VycyBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5T
X0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJjNWZkZTc3YzY3N2E5NDRiZGJhYTE2Y2MwM2E2ODFhY2VlNTNl
OGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCi0K
LSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyJiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hh
cmVkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI+IHdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwotICAgIHJldHVy
biB3ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjsKLX0KLQotV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCkKLXsK
LX0KLQotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6On5XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcigpCi17Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiYmIHN0b3JlKQotewotICAgIG1fc3RvcmUgPSBXVEZNb3ZlKHN0b3JlKTsKLX0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeVN0b3Jl
KCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUt
PmNsZWFySW5NZW1vcnkoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0
b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCgpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpj
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlm
aWVkU2luY2UpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjps
b2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5sb2dVc2VySW50ZXJhY3Rpb24odXJsKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJVc2VySW50
ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlvbih1cmwpOwotfQotCi1i
b29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpoYXNIYWRVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKHVybCk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UodXJsKTsKLX0KLQot
Ym9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKHVybCk7Ci19
Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFyUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKHVybCk7Ci19Ci0K
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyZWQo
Y29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKHVybCwgdmFsdWUpOwot
fQotCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc0dyYW5kZmF0aGVy
ZWQoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aXNHcmFuZGZhdGhlcmVkKHVybCk7Ci19Ci0K
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKQot
ewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHN1YmZyYW1lLCB0b3BGcmFtZSk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1l
KQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN1YnJlc291cmNlLCB0b3BGcmFtZSk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhv
c3ROYW1lUmVkaXJlY3RlZFRvKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9zdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291
cmNlLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNv
bmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9y
ZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vj
b25kcyk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldE1p
bmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMpCi17Ci0g
ICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0KLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNv
bmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3N0b3JlLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7Ci19Ci0KLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3Jl
LT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkK
LXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwotfQotCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKLX0K
LQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVRlbGVtZXRyeUhh
bmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9z
dG9yZS0+ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmJi
MjA4MTAwNWQ1NDA3YzE3MDg2NTY0NTNmYTI5NjU1OWFmNmNlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8Y2hyb25vPgotI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKLQotLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlY29tZSBhbiBBUElPYmplY3QgZm9yIHRoZSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlciB7Ci0gICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyPjsKLXB1YmxpYzoKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90
IGJlIGEgc2luZ2xldG9uLgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlciYgc2hhcmVkKCk7Ci0gICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJik7Ci0KLSAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIoKTsKLQotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOwotICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0KLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwotICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAg
ICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAg
dm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgdmFsdWUpOwot
ICAgIGJvb2wgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotCi0gICAgdm9p
ZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJm
cmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0KLSAgICB2b2lkIHNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2ll
UGFydGl0aW9uRnJlZShTZWNvbmRzKTsKLSAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGlt
ZShTZWNvbmRzKTsKLQotICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0g
ICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIGZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNs
ZWFyRmlyc3QpOwotICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLQotICAgIHZvaWQg
Y2xlYXJJbk1lbW9yeVN0b3JlKCk7Ci0gICAgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlKCk7Ci0gICAgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7Ci0KLXByaXZh
dGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKTsKLQotICAgIFJlZlB0
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RvcmU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNmMzZDAwZWUxODlhOTdl
OTYxYTk3ZDU2NGQ4YTlkYmQxZWE1MzZhYS4uNjg0OTIxMGJhNTRhYjkwOWQ2MzY2NTllNWUxNzg0
OGI1MWNlMTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCkBAIC0yMTQsNyArMjEzLDYgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN0YXRpc3RpY3NTdG9y
ZSgqdGhpcyk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldE5vdGlmaWNh
dGlvbkNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAg
ICAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA3Y2EyNmRlZDYwYzE1ZmJkYWNhMzdh
OWJlMWI4ZDc2MTM1MGQ2ODY2Li5lNzYzOTYwNWZiYTM2NGNmY2U0OGE4YmQ0MWYyNWJkOTI2OGIx
NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CisgICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgpOyB9CiAgICAgdm9pZCByZWdpc3RlclNoYXJlZFJl
c291cmNlTG9hZE9ic2VydmVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9uZVNlc3Npb25EYXRh
KFdlYlBhZ2VQcm94eSYgc291cmNlUGFnZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
YTUzZTY0MjVkNjVhNDA2OTcyYzkxZGI3MTRhZmM2NGY4NmI5OGVjLi5jOGZjYjhjYzJjZGNmOGEx
NjdiYzU3YzZiZmQyYzlhNzBkYzRjNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkxLDEwICsxMTkxLDYgQEAKIAkJNjVC
ODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEyRjExRDdCMDBCN0RE
OEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2QjgyMUREQzFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREExRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLzsgfTsKIAkJNkI4MjFEREQxRUVGMDVERDAwRDdB
RjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREIxRUVGMDVERDAwRDdB
RjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovOyB9OwotCQk2
QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5
OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QkU5Njk5
RTFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5Njk5RDFF
NDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi87
IH07Ci0JCTZCRTk2OUEwMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkJFOTY5OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmggKi87IH07Ci0JCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwICovOyB9OwogCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0
ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUMwMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGlj
dGlvbl9tb2RlbCAqLzsgfTsKIAkJNkJFOTY5QzcxRTU0RDRCNjAwOEI3NDgzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUM2MUU1NEQ0QjYwMDhCNzQ4MyAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgKi87IH07CiAJCTZCRTk2OUNBMUU1NEQ0Q0YwMDhC
NzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUM4MUU1NEQ0Q0Yw
MDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLzsg
fTsKQEAgLTM0ODIsMTAgKzM0NzgsNiBAQAogCQk2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyog
V0tCdW5kbGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
dW5kbGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI4MjFEREEx
RUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjgyMUREQjFFRUYwNUREMDBEN0FGNEEgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk2QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NkJFOTY5OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZCRTk2OUEx
MUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUMw
MUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBjb3JlUHJlZGljdGlvbl9tb2RlbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkJFOTY5QzYxRTU0RDRCNjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkJFOTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02ODY1LDggKzY4NTcsNiBAQAogCQkJCUJDMTExQjBEMTEyRjVFNEYwMDMz
N0JBQiAvKiBXZWJQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4OUYwMDU4
QzE1QSAvKiBXZWJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3
REEgLyogV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTZCRTk2OUExMUU0M0I4
QTQwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi8sCi0J
CQkJNkJFOTY5OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmggKi8sCiAJCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAogCQkJCTdBOUNEOEMyMUM3
NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMu
aW4gKi8sCkBAIC03MDcxLDggKzcwNjEsNiBAQAogCQkJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4
MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi8sCiAJCQkJMzMzNjc2MzgxMzBDOTlEQzAw
NkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwICovLAogCQkJCTMzMzY3NjM5MTMw
Qzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCi0JCQkJNkJFOTY5
OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
ICovLAotCQkJCTZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vz
c2lvblN0YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tT
ZXNzaW9uU3RhdGVSZWYuaCAqLywKIAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tU
ZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC04ODE1LDcgKzg4MDMsNiBAQAogCQkJCTM3NjA4ODFGMTUw
NDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MEFGRkJBMTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTZCRTk2OUEwMUU0M0I4NkUwMDhCNzQ4MyAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3
OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjgyMUREQzFFRUYwNUREMDBEN0FGNEEgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzMDc1QjAxREU4NUY1ODAwMzlFQzY5IC8qIFdlYlJUQ01vbml0b3IuaCBpbiBIZWFkZXJzICov
LApAQCAtOTA5Myw3ICs5MDgwLDYgQEAKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyog
V0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MDg4MjMxNTA0MTRGNzAwRkM4
MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzYzQjEzMEM5
OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNkJFOTY5OUMxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBX
S1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3RTM3NzkxOEU0QTRGRTAwM0QwRkZG
IC8qIFdLU2NyaXB0TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3RTM3NzUxOEU0QTMz
QTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTA0MzIsNyArMTA0MTgsNiBAQAogCQkJCTM3NjA4ODFFMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJS
ZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwQUZGQjkxNjU0MjA0ODAwMUJB
MDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk2QkU5NjlBMjFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E3OTFFRkMx
QzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QUFEMTc1RjFFQTZBRjk5MDAzQjA4OTQgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTc5MUVGQTFD
N0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA2MzEsNyArMTA2MTYsNiBAQAogCQkJCTM3
OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMzM2NzYzQTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2QkU5Njk5RTFFNDNCNDFEMDA4Qjc0
ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTdFMzc3ODE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDQjRFNTUxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxQ0QxQzY2MUIzNEI5REMwMDE0MkNBNSAvKiBXS1NlY3Vy
aXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzUzNTlmZWEzZTcwNTdmZDI1YzYzZjBiNmM0MGZmYmVj
ZmMzYjgzZS4uNGMyOThiNzA4MWMwZTUxODYxYzM0YWVkZjBhY2U5YTM1OWMzZTFkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDE3LTA2LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAg
ICAgUmVwbGFjZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0IFdl
YktpdFRlc3RSdW5uZXIgb3ZlciB0byB0aGUgbmV3IENvY29hIFNQSS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAgICAgRHJvcCBjYWxscyB0byB0
aGUgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgaGVyZS4gVGhvc2Ugd2VyZQor
ICAgICAgICBuby1vcHMgc2luY2UgdGhpcyBjb2RlIHJ1bnMgaW4gdGhlIFdlYkNvbnRlbnQgcHJv
Y2Vzcywgbm90IHRoZQorICAgICAgICBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQw
MzgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggMWFhMGU1ZDU5YTc0Zjk2MTEwMjk5YTdjMjE2NzkzZGU2YTg5ZDQ5
Zi4uMTUwYTM0YmM0NDk2MTUwNzUxMDA2MzczMjM4ZWYzY2M5OTdiZDY2ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2NyaXB0V29ybGQuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZh
dGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KQEAg
LTE0NTYsMTMgKzE0NTUsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc0ZpcmVUZWxl
bWV0cnlIYW5kbGVyIikpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwLCBu
dWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9w
dFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwotICAgIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKQEAgLTE0NzEs
MTMgKzE0NjksMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm8KICAgICBXS1JldGFpblB0cjxX
S0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkp
OwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7CiB9Ci0gICAgCisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdL
LCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwotICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1
ZSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2Vl
bkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGFhNmE2ODBlMjUxZWU1YmEzOThlNTJkMTY0MzZl
Y2IyODMyZWY1Mi4uMzM0MjY1NzRiYmI4YzUyYmE3ODM1YTEzOWNlMDBkMjZlNTQyY2I4NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTU0LDcgKzU0LDYg
QEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5JbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Byb3Rl
Y3Rpb25TcGFjZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tl
ci5oPgpAQCAtMzg4LDggKzM4Nyw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUo
aW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgV2Vi
Q29yZVRlc3RTdXBwb3J0OjppbnN0YWxsTW9ja0dhbWVwYWRQcm92aWRlcigpOwogI2VuZGlmCi0g
ICAgCi0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeShmYWxzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3Vw
SWRlbnRpZmllcihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViS2l0
VGVzdFJ1bm5lclBhZ2VHcm91cCIpKTsKICAgICBtX3BhZ2VHcm91cC5hZG9wdChXS1BhZ2VHcm91
cENyZWF0ZVdpdGhJZGVudGlmaWVyKHBhZ2VHcm91cElkZW50aWZpZXIuZ2V0KCkpKTsKQEAgLTIy
MDksMTU3ICsyMjA2LDEzNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJZ25vcmVzVmlld3Bv
cnRTY2FsZUxpbWl0cyhib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaQogICAgIFdLUGFnZVNl
dElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgaWdub3Jl
c1ZpZXdwb3J0U2NhbGVMaW1pdHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiB7Ci0gICAg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZhbGVudFJlc291cmNlKGhvc3RO
YW1lLCB2YWx1ZSk7CisgICAgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZv
cm1Db250ZXh0KCkpOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJbnZv
Y2F0aW9uJikKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklz
UHJldmFsZW50UmVzb3VyY2UoaG9zdE5hbWUpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihob3N0TmFtZSwgdmFsdWUpOworICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiB9
CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlv
bihXS1N0cmluZ1JlZiBob3N0TmFtZSkKK1BsYXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQ
YWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzSGFz
SGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lKTsKKyAgICByZXR1cm4gbmV3IFBsYXRmb3JtV2Vi
Vmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFs
dWUpCitXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRqdXN0Q29udGV4dChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29u
ZmlndXJhdGlvbikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3Jh
bmRmYXRoZXJlZChob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBjb250ZXh0OwogfQogCi1i
b29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVm
IGhvc3ROYW1lKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKCkKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcklzR3JhbmRmYXRoZXJlZChob3N0TmFtZSk7CisKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBo
b3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKK3Vuc2lnbmVkIFRlc3RDb250
cm9sbGVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZCgpIGNvbnN0CiB7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogewotICAg
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW4oaG9zdE5hbWUsIHRvcEZyYW1lSG9zdE5hbWUpOwogfQotICAgIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0
cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmlu
Z1JlZiwgYm9vbCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGhvc3ROYW1lLCBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVm
LCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9M
aXZlQ29va2llUGFydGl0aW9uRnJlZShzZWNvbmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCitib29sIFRlc3RDb250
cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYpCiB7
Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOworICAgIHJldHVybiBmYWxzZTsKIH0KLSAgICAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiwg
Ym9vbCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBh
cnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oaG9zdE5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigpCit2b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5n
UmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
RmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKIH0KLSAgICAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFs
dWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKHZhbHVlKTsKIH0KLSAgICAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZh
bHVlKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRh
UmVjb3Jkc1JlbW92YWwodmFsdWUpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KGRvdWJsZSkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwogfQotICAgIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbChkb3VibGUgc2Vjb25kcykKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSkKIHsKLSAgICBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKHNlY29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3Rh
dGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCiB7Ci0gICAgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlclNldEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcigpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnModW5zaWduZWQgaG91cnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
RmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVm
LCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKGhvdXJzKTsKIH0KLSAgICAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkK
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkK
IHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
cygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKQogewotICAgIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9j
YXRpb24mKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wpCiB7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVk
KGJvb2wpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1X
ZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotUGxhdGZvcm1XZWJWaWV3KiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01p
bmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUpCiB7Ci0gICAgcmV0dXJu
IG5ldyBQbGF0Zm9ybVdlYlZpZXcoY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiB9CiAKLVdLQ29u
dGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9u
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShk
b3VibGUpCiB7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCit2b2lkIFRlc3RDb250cm9s
bGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCiB7Ci0KIH0K
IAotdW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJk
KCkgY29uc3QKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkKQogewotICAgIHJldHVy
biAwOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KaW5kZXggNDI0MWU0Y2JlZWEzM2UzZjhkY2ZmMDk1Y2QyNGU3NDYy
ZDFjZjBmZi4uMThjYmY3N2Q1MTQ5Nzg0OGQ4NTEzNDQ3YzFiMjNiMjY4NTY4MDY1ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJDcmFzaFJlcG9ydGVySW5mby5oIgogI2lt
cG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNp
bXBvcnQgIlRlc3RJbnZvY2F0aW9uLmgiCiAjaW1wb3J0ICJUZXN0UnVubmVyV0tXZWJWaWV3Lmgi
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KQEAgLTQyLDYgKzQzLDcgQEAKICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg+CkBAIC01MCw2ICs1MiwxMSBAQAogCiBuYW1l
c3BhY2UgV1RSIHsKIAorc3RhdGljIE5TU3RyaW5nKiB0b05TU3RyaW5nKFdLU3RyaW5nUmVmIHN0
cmluZykKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvV1RGU3Ry
aW5nKHN0cmluZykudXRmOCgpLmRhdGEoKV07Cit9CisKIHN0YXRpYyBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKIAogdm9pZCBpbml0aWFsaXplV2Vi
Vmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGlu
amVjdGVkQnVuZGxlUGF0aCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCkBAIC03MCw3ICs3Nyw4IEBAIHZvaWQgaW5p
dGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQYXRoLCBXS1N0
cmluZ1JlZiBpbmplY3RlCiAgICAgV0tDb29raWVNYW5hZ2VyU2V0Q29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQoV0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihjb250ZXh0KSwgdHJ1ZSk7
CiAjZW5kaWYKIAotICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoY29udGV4dCksIHRydWUpOwor
ICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxk
U3VibWl0VGVsZW1ldHJ5Ok5PXTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOwpAQCAtMjEx
LDQgKzIxOSwxMTkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzKCkKICNlbmRpZgogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit7Cisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXRJc1ByZXZhbGVudFJlc291cmNlOnZhbHVlIGZvckhvc3Q6dG9OU1N0
cmluZyhob3N0TmFtZSldOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICByZXR1cm4gW2ds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEhh
ZFVzZXJJbnRlcmFjdGlvbjp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30K
KworYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KFdLU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJ
bnRlcmFjdGlvbjp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhlcmVkOnZhbHVlIGZvckhv
c3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0
YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAgIHJldHVy
biBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
Cit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW46dG9OU1N0
cmluZyh0b3BGcmFtZUhvc3ROYW1lKSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0
TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bjp0b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFt
ZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFt
ZVJlZGlyZWN0ZWRUbykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbzp0b05TU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRvKSBmb3JIb3N0OnRvTlNTdHJp
bmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91
YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0
aW9uRnJlZTpzZWNvbmRzXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Zp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXJdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
RmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW46dmFsdWUgZm9ySG9z
dDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlVGVsZW1l
dHJ5SGFuZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUpCit7CisgICAgW2ds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOnZhbHVlXTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbDp2
YWx1ZV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdl
c1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6dmFsdWVdOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQor
eworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0R3JhbmRmYXRoZXJpbmdUaW1lOnNlY29uZHNdOworfQorCit2
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZSgpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
XTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQgaG91cnMpCit7CisgICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhv
dXJzOmhvdXJzXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314365</attachid>
            <date>2017-06-30 20:42:20 -0700</date>
            <delta_ts>2017-06-30 21:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630204219.patch</filename>
            <type>text/plain</type>
            <size>69184</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uOWJkOTczNjY1NjQ1OTAzOWI5ZDQyOGJkZjNjMmMy
YmQ4ODM0Yjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBDIEFQSSBieSBDb2NvYSBTUEkuIFRoZSBuZXcgQ29jb2EgU1BJIGlzIG9uCisgICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZSwgd2hpY2ggYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgdGhl
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyCisgICAgICAgIHNpbmdsZXRvbiBhcyB0
aGUgU1BJIGNhbiBub3cgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAg
IERyb3Agb2xkIEMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgRHJvcCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciBzaW5nbGV0b24gd2hpY2ggd2FzIG9ubHkgcmVx
dWlyZWQgYnkgdGhlCisgICAgICAgIEMgQVBJLiBUaGlzIGlzIGJlY2F1c2UgdGhlIEMgQVBJIHdh
cyBnbG9iYWwsIHJhdGhlciB0aGFuIHdvcmtpbmcgb24gYSBzcGVjaWZpYworICAgICAgICBzdG9y
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICBBZGQgbmV3IENvY29hIFNQSSBvbiBXS1dlYnNpdGVEYXRhU3RvcmUuIFRo
aXMgaXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZl
cik6CisgICAgICAgIFN0b3AgcmVnaXN0ZXJpbmcgdGhlIHN0b3JlIHdpdGggdGhlIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiwKKyAgICAgICAgYXMgdGhpcyBzaW5n
bGV0b24gaXMgZ29uZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOgorICAgICAgICBBZGQgbmV3IGdldHRlciB0byByZXRyaWV2ZSB0aGUg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZyb20gdGhlCisgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBuZXcgQ29jb2EgU1BJLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBEcm9wIHNvbWUg
ZmlsZXMuCisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAppbmRleCAzYzEyNzk3ZWZhNTM0ZTc1YjgzMDE1NWJiYTdlYTk1NzBhMzk5ZDNiLi45ZGYzNzZl
YzlhMDY0YjhkZTEwMGQxNDIyYmRhN2U0MDI1ZmMyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApA
QCAtMzI4LDcgKzMyOCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKLSAgICBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCiAgICAg
VUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggMzYzNzc3ZDdjZmQ1YjNjYjljY2M0ZTliN2JjOWYyYjE2NzEzZmUyYS4uMzQyM2Qz
ZjBiOGE3Mjc1Mjk1ZTFkZjUyNTgyYjRjM2M2YzA5N2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEwNywxNCArMTA3LDEyIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmdOb25lLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVGV4dENo
ZWNrZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNw
cAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODU3YzRlNmZjODk0NTZlYzdjZDVjZDg0ZDNl
YjhhYzhhNWYxMDA4Yy4uNTJjNmQ1NDc4MWI0MjQ3MDNkZTUwYjNkOTJlZTNmNzA1OTIxMDhkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE2NSw3ICsxNjUsNiBAQCBsaXN0KEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHAK
LSAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIApAQCAtMTc5LDggKzE3
OCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVJlY29y
ZC5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcAotCiAgICAgVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1t
CiAgICAgVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1XUEUuY21ha2UKaW5kZXggOTI1NTBmY2U3N2ViNjRlYWEyMmY4OGU4MWExOTY5ODUzMDFh
ZGE1Yi4uM2Y3YzAwZmY2MmJjYTQyOWY5NWM2MzhiNWZhMTY2ZjcyMWRlMTM2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTEyNSwxMiArMTI1LDEwIEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNz
L0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nTm9uZS5jcHAKLSAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCi0gICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTZh
YmM4ZWY1YWFjM2ZkMWE4ZDM1ZjEyODU2Y2QzNGIyOTI3NDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCi0jaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRQcmV2YWxlbnRS
ZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAodmFs
dWUpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwot
ICAgIGVsc2UKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFt
ZSkpKTsKLX0KLQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNQcmV2YWxl
bnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICByZXR1cm4gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotICAgIGVsc2UKLSAgICAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFyVXNlckludGVyYWN0aW9u
KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLS8vIEZJWE1FOiBUaGlz
IEFQSSBuYW1lIGlzIHdyb25nLgotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
SXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAgcmV0
dXJuIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5oYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKGhvc3ROYW1lKSksIHZhbHVlKTsKLX0KLQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJl
dHVybiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNHcmFuZGZh
dGhlcmVkKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKLXsK
LSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSwg
VVJMKFVSTCgpLCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
Ci17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3RO
YW1lKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkpKTsKLX0KLQot
dm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGly
ZWN0ZWRUbykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVk
KCkuc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgdG9XVEZTdHJpbmco
aG9zdE5hbWUpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRUbykp
KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihT
ZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpCi17
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVU
b0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lk
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQotewot
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZh
dGhlcmluZ1RpbWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlckZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCi17Ci0gICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVEYXRhTW9kaWZp
Y2F0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcih7IH0sIHsgdG9XVEZTdHJpbmcoaG9zdE5hbWUpIH0sIGZhbHNlKTsKLSAgICBl
bHNlCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5m
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB0b1dURlN0cmluZyhob3N0TmFtZSkg
fSwgeyB9LCBmYWxzZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLX0KLQotdm9pZCBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZChib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7Ci19
Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9v
bCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3Vs
ZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQotewotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWdu
ZWQgaG91cnMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKLX0KLQotdm9pZCBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCi17Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0
X2gpOwotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKLSAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFf
aCk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChm
YWxzZSk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJJbk1lbW9yeVN0b3JlKCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODFmZTI0NGY1YjVkMmRkNDU1NGUwMzhjODlhMDVjMjM5YWMyYzg1OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIg
ewotI2VuZGlmCi0gICAgCi0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlclNldFByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VySXNQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tfRVhQ
T1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEhhc0hhZFVzZXJJbnRl
cmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JU
IGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlckludGVyYWN0
aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcklzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tf
RVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVk
VG8pOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKLSAgICBXS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMp
OwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJl
RGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7
Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlckZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpOwotICAgIFdL
X0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnModW5zaWduZWQpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDk1NzEwNTk5YjMxN2Y1MWJmZWU4
Y2ExOTJiOWZkMmFiYjg0NzU4YTcuLjM2ZDY0MjIzZWM5OWNmYTYyZWE4OWNmMTBkYmRlNTAzNWRl
YTRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zMSwxMCArMzEsMTUgQEAKICNpbXBvcnQgIldL
SFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9y
dCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbXBvcnQg
Il9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURh
dGFTdG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKQEAgLTIwMiw2ICsyMDcsMjM0IEBAIC0gKHZvaWQp
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0SXNQcmV2YWxlbnRSZXNvdXJjZTooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhv
c3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJl
c291cmNlKFVSTChVUkwoKSwgaG9zdCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7Cit9CisKKy0gKEJPT0wpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIHJldHVybiBzdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCks
IGhvc3QpKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEhhZFVzZXJJ
bnRlcmFjdGlvbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIGhvc3QpKTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlv
bihVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0hhZFVzZXJJbnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUg
PSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1
cm4gc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3QpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzR3JhbmRmYXRoZXJlZDooQk9PTCl2
YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRHcmFu
ZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdCksIHZhbHVlKTsKK30KKworLSAoQk9PTClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilob3N0Cit7CisgICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICByZXR1cm4gc3RvcmUtPmlzR3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3QpKTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbzooTlNTdHJpbmcgKilob3N0TmFtZVJlZGlyZWN0ZWRUbyBmb3JIb3N0OihOU1N0cmluZyAq
KWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
VVJMKFVSTCgpLCBob3N0KSwgVVJMKFVSTCgpLCBob3N0TmFtZVJlZGlyZWN0ZWRUbykpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbjooZG91YmxlKXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlm
ICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU6KGRvdWJsZSlz
ZWNvbmRzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZy
ZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6KGRvdWJsZSlzZWNv
bmRzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0R3JhbmRmYXRoZXJpbmdUaW1lOihkb3VibGUpc2Vjb25kcworeworICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHtzZWNvbmRzIH0pOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5k
bGVyCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2YWx1ZSBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICgh
c3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUt
PmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7
CisgICAgZWxzZQorICAgICAgICBzdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKHsgaG9zdCB9LCB7IH0sIGZhbHNlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
KyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+ZmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0b3JlLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVl
KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlCit7CisgICAgYXV0
byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdG9yZS0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQoreworICAgIGF1dG8q
IHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RvcmUtPnNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlCit7Cisg
ICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKK30KKworLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzCit7CisgICAgYXV0byogc3RvcmUgPSBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkg
LSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRUaW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKKyAgICBzdG9yZS0+c2V0TWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7CisgICAgc3RvcmUtPnNldEdyYW5kZmF0
aGVyaW5nVGltZSgxX2gpOworICAgIHN0b3JlLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKGZhbHNlKTsKKyAgICBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGZhbHNl
KTsKKyAgICBzdG9yZS0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwodHJ1ZSk7CisgICAgc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsKK30KKwogQGVuZAog
CiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5k
ZXggOTFlNDYzZTEzZGUxZjE4MzdmNzA5YWE5YjE3MDVlMTVkOTkyNzZiZS4uYjg5YTI2Y2JmNWFm
OTc1YzBhYjUyYWNkNGMzODViYmFlMWFmODU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKQEAgLTQzLDYgKzQzLDMyIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tX
ZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3Mo
MTAuMCkpOwogCisvLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFNQSSBmb3IgdGVzdGluZy4KKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc1ByZXZhbGVudFJlc291cmNlOihCT09M
KXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6
KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50
ZXJhY3Rpb246KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRJc0dyYW5kZmF0aGVyZWQ6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
Qk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilo
b3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW46KE5TU3RyaW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmlu
ZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvOihOU1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5T
U3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91YmxlKXNlY29uZHMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25l
RG9tYWluOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkOihC
T09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeTooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVk
KWhvdXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1ZmRlNzdjNjc3YTk0NGJkYmFhMTZj
YzAzYTY4MWFjZWU1M2U4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXImIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI7Ci0gICAgcmV0dXJuIHdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwotfQotCi1X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIoKQotewotfQotCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6fldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3RhdGlzdGljc1N0b3JlKFJlZjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYgc3RvcmUpCi17Ci0gICAgbV9zdG9yZSA9IFdURk1vdmUo
c3RvcmUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVh
ckluTWVtb3J5U3RvcmUoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKLXsK
LSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQobW9kaWZpZWRTaW5jZSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBp
ZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmxvZ1VzZXJJbnRl
cmFjdGlvbih1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9u
KHVybCk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hh
ZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24odXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0
b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJj
ZSh1cmwpOwotfQotCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc1By
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzUHJldmFsZW50UmVz
b3VyY2UodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0
R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAoIW1f
c3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyZWQo
dXJsLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5pc0dyYW5kZmF0aGVy
ZWQodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVS
TCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3N0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3ViZnJhbWUsIHRvcEZy
YW1lKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0
IFVSTCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3VicmVzb3Vy
Y2UsIHRvcEZyYW1lKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oc3VicmVzb3VyY2UsIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMpOwot
fQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3Jl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZShzZWNvbmRzKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMg
c2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
c3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRo
ZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2Rp
ZmljYXRpb25IYW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCi17Ci0gICAg
aWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNs
ZWFyRmlyc3QpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpm
aXJlVGVsZW1ldHJ5SGFuZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIyYmIyMDgxMDA1ZDU0MDdjMTcwODY1NjQ1M2ZhMjk2NTU5YWY2Y2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDxjaHJvbm8+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwot
Ci0vLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmVjb21lIGFuIEFQSU9iamVjdCBmb3Ig
dGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KLWNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyIHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI+OwotcHVibGljOgotICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgYSBzaW5nbGV0b24uCi0gICAgc3RhdGljIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyJiBzaGFyZWQoKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NTdG9y
ZShSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKLQotICAgIH5XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpOwotCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLQotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
V2ViQ29yZTo6VVJMJik7Ci0gICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCB2YWx1ZSk7Ci0gICAgYm9vbCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0KLSAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJD
b3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2
b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2b2lkIHNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291
cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIHZv
aWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwotICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwotCi0gICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlv
bkhhbmRsZXIoKTsKLSAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigp
OwotCi0gICAgdm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigp
OwotCi0gICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2
YzNkMDBlZTE4OWE5N2U5NjFhOTdkNTY0ZDhhOWRiZDFlYTUzNmFhLi42ODQ5MjEwYmE1NGFiOTA5
ZDYzNjY1OWU1ZTE3ODQ4YjUxY2UxNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTIxNCw3ICsyMTMs
NiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
U3RhdGlzdGljc1N0b3JlKCp0aGlzKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDdjYTI2ZGVk
NjBjMTVmYmRhY2EzN2E5YmUxYjhkNzYxMzUwZDY4NjYuLmU3NjM5NjA1ZmJhMzY0Y2ZjZTQ4YThi
ZDQxZjI1YmQ5MjY4YjE2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtODksNiArODksNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHJl
Z2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNs
b25lU2Vzc2lvbkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBXZWJQYWdlUHJveHkmIG5l
d1BhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDJhNTNlNjQyNWQ2NWE0MDY5NzJjOTFkYjcxNGFmYzY0Zjg2Yjk4ZWMuLmM4
ZmNiOGNjMmNkY2Y4YTE2N2JjNTdjNmJmZDJjOWE3MGRjNGM0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTEsMTAgKzEx
OTEsNiBAQAogCQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4
MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovOyB9OwogCQk2QjgyMURE
RDFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMURE
QjFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAgKi87IH07Ci0JCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTZCRTk2OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcCAqLzsgfTsKLQkJNkJFOTY5QTAxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLzsgfTsKLQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUExMUU0M0I4QTQwMDhCNzQ4MyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi87IH07CiAJCTZCRTk2OUMx
MUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgz
IC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDNzFFNTRENEI2MDA4Qjc0
ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzYxRTU0RDRCNjAwOEI3NDgz
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNkJFOTY5
Q0ExRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJF
OTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwICovOyB9OwpAQCAtMzQ4MiwxMCArMzQ3OCw2IEBACiAJCTY1Qjg2RjE4MTJGMTFE
N0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCODIxRERCMUVFRjA1REQw
MEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvcmVQcmVkaWN0aW9uX21vZGVsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QkU5NjlDNjFFNTRENEI2MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NjUsOCArNjg1Nyw2IEBACiAJCQkJQkMxMTFC
MEQxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJE
Q0YxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDRUU3QUIz
MTI4MTcwOTUwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJ
NkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcCAqLywKLQkJCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJ
CQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbiAqLywKQEAgLTcwNzEsOCArNzA2MSw2IEBACiAJCQkJNTE4QUNBRTkx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLywKIAkJCQkzMzM2
NzYzODEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgKi8sCiAJ
CQkJMzMzNjc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAq
LywKLQkJCQk2QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAgKi8sCi0JCQkJNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQkxQURFNDZCMDE5NTRFQzYxMDAw
Rjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJCTFBREU0NkIxMTk1NEVDNjEw
MDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIxMUQw
MDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTg4MTUsNyArODgwMyw2IEBACiAJ
CQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVz
b3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkJFOTY5QTAxRTQzQjg2
RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCODIxRERDMUVFRjA1
REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTMwNzVCMDFERTg1RjU4MDAzOUVDNjkgLyogV2ViUlRDTW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCkBAIC05MDkzLDcgKzkwODAsNiBAQAogCQkJCTM3OTQ4NDA5MTUwQzRC
OTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYwODgy
MzE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMzY3NjNCMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk2QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QTUwMTUxMTc2NUY1
NjAwNzU3NTczIC8qIFdLUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdFMzc3OTE4
RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTdFMzc3NTE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDQzMiw3ICsxMDQxOCw2IEBACiAJCQkJMzc2MDg4MUUxNTA0MTNFOTAw
RkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTBBRkZC
OTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4
MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUQxNzVGMUVBNkFGOTkwMDNCMDg5NCAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDYzMSw3ICsxMDYx
Niw2IEBACiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVy
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjNBMTMwQzk5REMwMDZDOURFMiAv
KiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OTlF
MUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1l
c3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNGQzkgLyog
V0tTY3JvbGxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlEQzAwMTQy
Q0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3NTM1OWZlYTNlNzA1N2ZkMjVj
NjNmMGI2YzQwZmZiZWNmYzNiODNlLi40YzI5OGI3MDgxYzBlNTE4NjFjMzRhZWRmMGFjZTlhMzU5
YzNlMWQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjQgQEAKIDIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAorICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQ
SSBieSBDb2NvYSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBvcnQgV2ViS2l0VGVzdFJ1bm5lciBvdmVyIHRvIHRoZSBuZXcgQ29jb2EgU1BJLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpOgorICAgICAgICBE
cm9wIGNhbGxzIHRvIHRoZSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQSSBoZXJl
LiBUaG9zZSB3ZXJlCisgICAgICAgIG5vLW9wcyBzaW5jZSB0aGlzIGNvZGUgcnVucyBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCBub3QgdGhlCisgICAgICAgIFVJUHJvY2Vzcy4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKworMjAxNy0wNi0zMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgc3RvcmUgbG9n
aWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0byBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxYWEwZTVkNTlhNzRmOTYxMTAyOTlhN2My
MTY3OTNkZTZhODlkNDlmLi4xNTBhMzRiYzQ0OTYxNTA3NTEwMDYzNzMyMzhlZjNjYzk5N2JkNjZl
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVT
Y3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tQYWdlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dl
YktpdDJfQy5oPgpAQCAtMTQ1NiwxMyArMTQ1NSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0
aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIiKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQotICAgIAorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZh
bHVlKQpAQCAtMTQ3MSwxMyArMTQ2OSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChibwogICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKHZhbHVlKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSkK
IHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdh
c0NhcHR1cmVkKHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA4YWE2YTY4MGUyNTFlZTVi
YTM5OGU1MmQxNjQzNmVjYjI4MzJlZjUyLi4zMzQyNjU3NGJiYjhjNTJiYTc4MzVhMTM5Y2UwMGQy
NmU1NDJjYjg2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BsdWdpbkluZm9ybWF0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS1RleHRDaGVja2VyLmg+CkBAIC0zODgsOCArMzg3LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6Omluc3RhbGxNb2NrR2FtZXBhZFByb3ZpZGVy
KCk7CiAjZW5kaWYKLSAgICAKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGZhbHNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBwYWdlR3JvdXBJZGVudGlmaWVyKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFk
b3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5n
ZXQoKSkpOwpAQCAtMjIwOSwxNTcgKzIyMDYsMTM3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1p
CiAgICAgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMobV9tYWluV2ViVmlldy0+
cGFnZSgpLCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50
UmVzb3VyY2UoaG9zdE5hbWUsIHZhbHVlKTsKKyAgICBXS0NvbnRleHRUZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6Omlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorI2lmICFQ
TEFURk9STShDT0NPQSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3Qo
Y29uc3QgVGVzdEludm9jYXRpb24mKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VySXNQcmV2YWxlbnRSZXNvdXJjZShob3N0TmFtZSk7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdS
ZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgbV9tYWlu
V2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9u
LCBvcHRpb25zKTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorUGxhdGZvcm1XZWJWaWV3KiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oaG9zdE5hbWUpOworICAgIHJldHVybiBu
ZXcgUGxhdGZvcm1XZWJWaWV3KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi12b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSkKK1dLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1B
ZGp1c3RDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNv
bnRleHQ7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVy
ZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKGhvc3ROYW1lKTsKKwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQordW5z
aWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkKCkgY29u
c3QKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKGhvc3ROYW1lLCB0b3BGcmFtZUhvc3ROYW1lKTsKKyAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0TmFtZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50
aWFscygpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CiB9Ci0g
ICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGly
ZWN0ZWRUbykKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oaG9zdE5hbWUsIGhvc3ROYW1l
UmVkaXJlY3RlZFRvKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCitib29sIFRlc3RDb250cm9s
bGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZikKIHsKLSAgICBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihzZWNvbmRzKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25k
cykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkK
K2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcigpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVk
KFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgVGVzdENvbnRy
b2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlckZvck9uZURvbWFpbihob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJGaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQotICAgIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7
Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wgdmFsdWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9Ci0g
ICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVu
RGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKIHsKLSAg
ICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNl
Y29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoaG91
cnMpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGUoKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpCiB7Ci0gICAgV0tDb250ZXh0
VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKQotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCkKIHsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoYm9vbCkKIHsKLSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi1QbGF0
Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSkK
IHsKLSAgICByZXR1cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25z
KTsKIH0KIAotV0tDb250ZXh0UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRl
eHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4
dENvbmZpZ3VyYXRpb24pCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gY29udGV4dDsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKCkKIHsKLQogfQogCi11bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2Vu
ZXJhbFBhc3RlYm9hcmQoKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQp
CiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MjQxZTRjYmVlYTMzZTNmOGRj
ZmYwOTVjZDI0ZTc0NjJkMWNmMGZmLi4xOGNiZjc3ZDUxNDk3ODQ4ZDg1MTM0NDdjMWIyM2IyNjg1
NjgwNjVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNyYXNoUmVwb3J0
ZXJJbmZvLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1
bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdEludm9jYXRpb24uaCIKICNpbXBvcnQgIlRlc3RSdW5u
ZXJXS1dlYlZpZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgpAQCAtNDIs
NiArNDMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTUwLDYgKzUy
LDExIEBACiAKIG5hbWVzcGFjZSBXVFIgewogCitzdGF0aWMgTlNTdHJpbmcqIHRvTlNTdHJpbmco
V0tTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENT
dHJpbmc6dG9XVEZTdHJpbmcoc3RyaW5nKS51dGY4KCkuZGF0YSgpXTsKK30KKwogc3RhdGljIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwogCiB2b2lk
IGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFyKiBsaWJyYXJ5UGF0aCwg
V0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKQEAgLTcwLDcgKzc3
LDggQEAgdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGli
cmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGUKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRDb29r
aWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKGNv
bnRleHQpLCB0cnVlKTsKICNlbmRpZgogCi0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShjb250
ZXh0KSwgdHJ1ZSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6Tk9dOwogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sg
PSBZRVM7CkBAIC0yMTEsNCArMjE5LDExOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6dmFsdWUg
Zm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorewor
ICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6dG9OU1N0cmluZyhob3N0
TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQoreworICAgIFtn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyho
b3N0TmFtZSldOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAgcmV0dXJuIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzSGFkVXNlckludGVyYWN0aW9uOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc0dyYW5kZmF0aGVy
ZWQ6dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENv
bnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUp
Cit7CisgICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOnRvTlNTdHJpbmcoaG9z
dE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9w
RnJhbWVIb3N0TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbjp0b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpIGZvckhvc3Q6dG9OU1N0cmluZyho
b3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1Jl
ZiB0b3BGcmFtZUhvc3ROYW1lKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luOnRvTlNTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkgZm9ySG9zdDp0b05T
U3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3Ry
aW5nUmVmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvOnRvTlNTdHJpbmcoaG9zdE5hbWVSZWRpcmVjdGVkVG8pIGZv
ckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKK3sK
KyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb246c2Vjb25kc107Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQoreworICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyXTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFp
bjp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1
ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQ6dmFsdWVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkK
K3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlz
dGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCit7Cisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDp2YWx1
ZV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6c2Vjb25kc107Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91
YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6c2Vj
b25kc107Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBo
b3VycykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnM6aG91cnNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0
aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314368</attachid>
            <date>2017-06-30 21:25:26 -0700</date>
            <delta_ts>2017-06-30 21:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630212524.patch</filename>
            <type>text/plain</type>
            <size>69283</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uOWJkOTczNjY1NjQ1OTAzOWI5ZDQyOGJkZjNjMmMy
YmQ4ODM0Yjk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgYnkgQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBDIEFQSSBieSBDb2NvYSBTUEkuIFRoZSBuZXcgQ29jb2EgU1BJIGlzIG9uCisgICAg
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZSwgd2hpY2ggYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgdGhl
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyCisgICAgICAgIHNpbmdsZXRvbiBhcyB0
aGUgU1BJIGNhbiBub3cgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAg
IERyb3Agb2xkIEMgQVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgRHJvcCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciBzaW5nbGV0b24gd2hpY2ggd2FzIG9ubHkgcmVx
dWlyZWQgYnkgdGhlCisgICAgICAgIEMgQVBJLiBUaGlzIGlzIGJlY2F1c2UgdGhlIEMgQVBJIHdh
cyBnbG9iYWwsIHJhdGhlciB0aGFuIHdvcmtpbmcgb24gYSBzcGVjaWZpYworICAgICAgICBzdG9y
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oOgorICAgICAgICBBZGQgbmV3IENvY29hIFNQSSBvbiBXS1dlYnNpdGVEYXRhU3RvcmUuIFRo
aXMgaXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZl
cik6CisgICAgICAgIFN0b3AgcmVnaXN0ZXJpbmcgdGhlIHN0b3JlIHdpdGggdGhlIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiwKKyAgICAgICAgYXMgdGhpcyBzaW5n
bGV0b24gaXMgZ29uZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOgorICAgICAgICBBZGQgbmV3IGdldHRlciB0byByZXRyaWV2ZSB0aGUg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZyb20gdGhlCisgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBuZXcgQ29jb2EgU1BJLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBEcm9wIHNvbWUg
ZmlsZXMuCisKKzIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwog
ICAgICAgICBNb3ZlIHN0b3JlIGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAppbmRleCAzYzEyNzk3ZWZhNTM0ZTc1YjgzMDE1NWJiYTdlYTk1NzBhMzk5ZDNiLi45ZGYzNzZl
YzlhMDY0YjhkZTEwMGQxNDIyYmRhN2U0MDI1ZmMyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApA
QCAtMzI4LDcgKzMyOCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKLSAgICBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCiAgICAg
VUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggMzYzNzc3ZDdjZmQ1YjNjYjljY2M0ZTliN2JjOWYyYjE2NzEzZmUyYS4uMzQyM2Qz
ZjBiOGE3Mjc1Mjk1ZTFkZjUyNTgyYjRjM2M2YzA5N2Q3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEwNywxNCArMTA3LDEyIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmdOb25lLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVGV4dENo
ZWNrZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNw
cAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggODU3YzRlNmZjODk0NTZlYzdjZDVjZDg0ZDNl
YjhhYzhhNWYxMDA4Yy4uNTJjNmQ1NDc4MWI0MjQ3MDNkZTUwYjNkOTJlZTNmNzA1OTIxMDhkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE2NSw3ICsxNjUsNiBAQCBsaXN0KEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHAK
LSAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIApAQCAtMTc5LDggKzE3
OCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVJlY29y
ZC5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcAotCiAgICAgVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1t
CiAgICAgVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1XUEUuY21ha2UKaW5kZXggOTI1NTBmY2U3N2ViNjRlYWEyMmY4OGU4MWExOTY5ODUzMDFh
ZGE1Yi4uM2Y3YzAwZmY2MmJjYTQyOWY5NWM2MzhiNWZhMTY2ZjcyMWRlMTM2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTEyNSwxMiArMTI1LDEwIEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNz
L0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nTm9uZS5jcHAKLSAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCi0gICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCiAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTZh
YmM4ZWY1YWFjM2ZkMWE4ZDM1ZjEyODU2Y2QzNGIyOTI3NDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCi0jaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRQcmV2YWxlbnRS
ZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAodmFs
dWUpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwot
ICAgIGVsc2UKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFt
ZSkpKTsKLX0KLQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNQcmV2YWxl
bnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICByZXR1cm4gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotICAgIGVsc2UKLSAgICAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFyVXNlckludGVyYWN0aW9u
KFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLS8vIEZJWE1FOiBUaGlz
IEFQSSBuYW1lIGlzIHdyb25nLgotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
SXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAgcmV0
dXJuIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5oYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKGhvc3ROYW1lKSksIHZhbHVlKTsKLX0KLQotYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJl
dHVybiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNHcmFuZGZh
dGhlcmVkKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKLXsK
LSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0U3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSwg
VVJMKFVSTCgpLCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUp
Ci17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3RO
YW1lKSksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkpKTsKLX0KLQot
dm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGly
ZWN0ZWRUbykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVk
KCkuc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgdG9XVEZTdHJpbmco
aG9zdE5hbWUpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZVJlZGlyZWN0ZWRUbykp
KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2
ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihT
ZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpCi17
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVU
b0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lk
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRz
UmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQotewot
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZh
dGhlcmluZ1RpbWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlckZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCi17Ci0gICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVEYXRhTW9kaWZp
Y2F0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcih7IH0sIHsgdG9XVEZTdHJpbmcoaG9zdE5hbWUpIH0sIGZhbHNlKTsKLSAgICBl
bHNlCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5m
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB0b1dURlN0cmluZyhob3N0TmFtZSkg
fSwgeyB9LCBmYWxzZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2hhcmVkKCkuZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLX0KLQotdm9pZCBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZChib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7Ci19
Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9v
bCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3Vs
ZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQotewotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWdu
ZWQgaG91cnMpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJl
ZCgpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKLX0KLQotdm9pZCBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCi17Ci0g
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0
X2gpOwotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRN
aW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKLSAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFf
aCk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChm
YWxzZSk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFz
c2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJJbk1lbW9yeVN0b3JlKCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODFmZTI0NGY1YjVkMmRkNDU1NGUwMzhjODlhMDVjMjM5YWMyYzg1OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIg
ewotI2VuZGlmCi0gICAgCi0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlclNldFByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VySXNQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tfRVhQ
T1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEhhc0hhZFVzZXJJbnRl
cmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JU
IGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlckludGVyYWN0
aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIGJvb2wgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcklzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSk7Ci0gICAgV0tf
RVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVk
VG8pOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJT
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKLSAgICBXS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMp
OwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJl
RGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7
Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlckZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpOwotICAgIFdL
X0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnModW5zaWduZWQpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDk1NzEwNTk5YjMxN2Y1MWJmZWU4
Y2ExOTJiOWZkMmFiYjg0NzU4YTcuLjM2ZDY0MjIzZWM5OWNmYTYyZWE4OWNmMTBkYmRlNTAzNWRl
YTRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zMSwxMCArMzEsMTUgQEAKICNpbXBvcnQgIldL
SFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9y
dCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbXBvcnQg
Il9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURh
dGFTdG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKQEAgLTIwMiw2ICsyMDcsMjM0IEBAIC0gKHZvaWQp
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGVuYWJsZWQpOwogfQogCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0SXNQcmV2YWxlbnRSZXNvdXJjZTooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhv
c3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJl
c291cmNlKFVSTChVUkwoKSwgaG9zdCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7Cit9CisKKy0gKEJPT0wpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIHJldHVybiBzdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCks
IGhvc3QpKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEhhZFVzZXJJ
bnRlcmFjdGlvbjooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIGhvc3QpKTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlv
bihVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0hhZFVzZXJJbnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUg
PSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1
cm4gc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3QpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzR3JhbmRmYXRoZXJlZDooQk9PTCl2
YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRHcmFu
ZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdCksIHZhbHVlKTsKK30KKworLSAoQk9PTClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilob3N0Cit7CisgICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICByZXR1cm4gc3RvcmUtPmlzR3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3QpKTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKK30KKwor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbzooTlNTdHJpbmcgKilob3N0TmFtZVJlZGlyZWN0ZWRUbyBmb3JIb3N0OihOU1N0cmluZyAq
KWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
VVJMKFVSTCgpLCBob3N0KSwgVVJMKFVSTCgpLCBob3N0TmFtZVJlZGlyZWN0ZWRUbykpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbjooZG91YmxlKXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlm
ICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU6KGRvdWJsZSlz
ZWNvbmRzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZy
ZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6KGRvdWJsZSlzZWNv
bmRzCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0pOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0R3JhbmRmYXRoZXJpbmdUaW1lOihkb3VibGUpc2Vjb25kcworeworICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHtzZWNvbmRzIH0pOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5k
bGVyCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjooQk9PTCl2YWx1ZSBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICgh
c3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RvcmUt
PmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHsgaG9zdCB9LCBmYWxzZSk7
CisgICAgZWxzZQorICAgICAgICBzdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKHsgaG9zdCB9LCB7IH0sIGZhbHNlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyCit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
KyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+ZmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0b3JlLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVl
KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlCit7CisgICAgYXV0
byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdG9yZS0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6KEJPT0wpdmFsdWUKK3sKKyAgICBXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRl
bGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQoreworICAgIGF1dG8q
IHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RvcmUtPnNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlCit7Cisg
ICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKK30KKworLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVN
b2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzCit7CisgICAgYXV0byogc3RvcmUgPSBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkg
LSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIHN0b3JlLT5zZXRUaW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKKyAgICBzdG9yZS0+c2V0TWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7CisgICAgc3RvcmUtPnNldEdyYW5kZmF0
aGVyaW5nVGltZSgxX2gpOworICAgIHN0b3JlLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKGZhbHNlKTsKKyAgICBXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGZhbHNl
KTsKKyAgICBzdG9yZS0+c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwodHJ1ZSk7CisgICAgc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsKK30KKwogQGVuZAog
CiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5k
ZXggOTFlNDYzZTEzZGUxZjE4MzdmNzA5YWE5YjE3MDVlMTVkOTkyNzZiZS4uYjg5YTI2Y2JmNWFm
OTc1YzBhYjUyYWNkNGMzODViYmFlMWFmODU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKQEAgLTQzLDYgKzQzLDMyIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tX
ZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
ZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3Mo
MTAuMCkpOwogCisvLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFNQSSBmb3IgdGVzdGluZy4KKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc1ByZXZhbGVudFJlc291cmNlOihCT09M
KXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6
KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50
ZXJhY3Rpb246KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRJc0dyYW5kZmF0aGVyZWQ6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
Qk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJlZDooTlNTdHJpbmcgKilo
b3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW46KE5TU3RyaW5nICopdG9wRnJhbWVIb3N0TmFtZSBmb3JIb3N0OihOU1N0cmlu
ZyAqKWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvOihOU1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5T
U3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91YmxlKXNlY29uZHMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsOihkb3VibGUpc2Vjb25kcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25l
RG9tYWluOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkOihCT09M
KXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsOihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkOihC
T09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeTooQk9PTCl2YWx1ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVk
KWhvdXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1ZmRlNzdjNjc3YTk0NGJkYmFhMTZj
YzAzYTY4MWFjZWU1M2U4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXImIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI7Ci0gICAgcmV0dXJuIHdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwotfQotCi1X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIoKQotewotfQotCi1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6fldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3RhdGlzdGljc1N0b3JlKFJlZjxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYgc3RvcmUpCi17Ci0gICAgbV9zdG9yZSA9IFdURk1vdmUo
c3RvcmUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVh
ckluTWVtb3J5U3RvcmUoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKLXsK
LSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQobW9kaWZpZWRTaW5jZSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBp
ZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmxvZ1VzZXJJbnRl
cmFjdGlvbih1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9u
KHVybCk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hh
ZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24odXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0
b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJj
ZSh1cmwpOwotfQotCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc1By
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzUHJldmFsZW50UmVz
b3VyY2UodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0
R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1ZSkKLXsKLSAgICBpZiAoIW1f
c3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyZWQo
dXJsLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3N0b3JlLT5pc0dyYW5kZmF0aGVy
ZWQodXJsKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVS
TCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3N0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3ViZnJhbWUsIHRvcEZy
YW1lKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0
IFVSTCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3VicmVzb3Vy
Y2UsIHRvcEZyYW1lKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oc3VicmVzb3VyY2UsIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLX0KLQotdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMpOwot
fQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKCFtX3N0b3Jl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFy
dGl0aW9uRnJlZShzZWNvbmRzKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMg
c2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
c3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRo
ZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsK
LX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2Rp
ZmljYXRpb25IYW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotfQotCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCi17Ci0gICAg
aWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNs
ZWFyRmlyc3QpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpm
aXJlVGVsZW1ldHJ5SGFuZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIyYmIyMDgxMDA1ZDU0MDdjMTcwODY1NjQ1M2ZhMjk2NTU5YWY2Y2UuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDxjaHJvbm8+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwot
Ci0vLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmVjb21lIGFuIEFQSU9iamVjdCBmb3Ig
dGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KLWNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyIHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI+OwotcHVibGljOgotICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgYSBzaW5nbGV0b24uCi0gICAgc3RhdGljIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyJiBzaGFyZWQoKTsKLSAgICB2b2lkIHNldFN0YXRpc3RpY3NTdG9y
ZShSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKLQotICAgIH5XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigpOwotCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLQotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
V2ViQ29yZTo6VVJMJik7Ci0gICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCB2YWx1ZSk7Ci0gICAgYm9vbCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0KLSAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJD
b3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2
b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKLSAgICB2b2lkIHNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291
cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIHZv
aWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwotICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwotCi0gICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlv
bkhhbmRsZXIoKTsKLSAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigp
OwotCi0gICAgdm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKTsKLQotcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcigp
OwotCi0gICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2
YzNkMDBlZTE4OWE5N2U5NjFhOTdkNTY0ZDhhOWRiZDFlYTUzNmFhLi42ODQ5MjEwYmE1NGFiOTA5
ZDYzNjY1OWU1ZTE3ODQ4YjUxY2UxNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0
Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKQEAgLTIxNCw3ICsyMTMs
NiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
U3RhdGlzdGljc1N0b3JlKCp0aGlzKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDdjYTI2ZGVk
NjBjMTVmYmRhY2EzN2E5YmUxYjhkNzYxMzUwZDY4NjYuLmU3NjM5NjA1ZmJhMzY0Y2ZjZTQ4YThi
ZDQxZjI1YmQ5MjY4YjE2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtODksNiArODksNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KICAgICB2b2lkIHJl
Z2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNs
b25lU2Vzc2lvbkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBXZWJQYWdlUHJveHkmIG5l
d1BhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDJhNTNlNjQyNWQ2NWE0MDY5NzJjOTFkYjcxNGFmYzY0Zjg2Yjk4ZWMuLmM4
ZmNiOGNjMmNkY2Y4YTE2N2JjNTdjNmJmZDJjOWE3MGRjNGM0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTEsMTAgKzEx
OTEsNiBAQAogCQk2NUI4NkYxRTEyRjExREUzMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE4
MTJGMTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCODIxRERDMUVFRjA1REQwMEQ3QUY0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovOyB9OwogCQk2QjgyMURE
RDFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjgyMURE
QjFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAgKi87IH07Ci0JCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTZCRTk2OTlFMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcCAqLzsgfTsKLQkJNkJFOTY5QTAxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLzsgfTsKLQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OUExMUU0M0I4QTQwMDhCNzQ4MyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi87IH07CiAJCTZCRTk2OUMx
MUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgz
IC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICovOyB9OwogCQk2QkU5NjlDNzFFNTRENEI2MDA4Qjc0
ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QzYxRTU0RDRCNjAwOEI3NDgz
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNkJFOTY5
Q0ExRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJF
OTY5QzgxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwICovOyB9OwpAQCAtMzQ4MiwxMCArMzQ3OCw2IEBACiAJCTY1Qjg2RjE4MTJGMTFE
N0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0J1bmRsZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCODIxRERCMUVFRjA1REQw
MEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkJFOTY5QzAxRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvcmVQcmVkaWN0aW9uX21vZGVsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QkU5NjlDNjFFNTRENEI2MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NjUsOCArNjg1Nyw2IEBACiAJCQkJQkMxMTFC
MEQxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJE
Q0YxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlByb2Nlc3NQcm94eS5oICovLAogCQkJCUJDRUU3QUIz
MTI4MTcwOTUwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJ
NkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcCAqLywKLQkJCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJ
CQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbiAqLywKQEAgLTcwNzEsOCArNzA2MSw2IEBACiAJCQkJNTE4QUNBRTkx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLywKIAkJCQkzMzM2
NzYzODEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgKi8sCiAJ
CQkJMzMzNjc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAq
LywKLQkJCQk2QkU5Njk5RDFFNDNCNDFEMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAgKi8sCi0JCQkJNkJFOTY5OUIxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQkxQURFNDZCMDE5NTRFQzYxMDAw
Rjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJCTFBREU0NkIxMTk1NEVDNjEw
MDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIxMUQw
MDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTg4MTUsNyArODgwMyw2IEBACiAJ
CQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVz
b3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkJFOTY5QTAxRTQzQjg2
RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCODIxRERDMUVFRjA1
REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTMwNzVCMDFERTg1RjU4MDAzOUVDNjkgLyogV2ViUlRDTW9uaXRvci5o
IGluIEhlYWRlcnMgKi8sCkBAIC05MDkzLDcgKzkwODAsNiBAQAogCQkJCTM3OTQ4NDA5MTUwQzRC
OTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYwODgy
MzE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMzY3NjNCMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk2QkU5Njk5QzFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QTUwMTUxMTc2NUY1
NjAwNzU3NTczIC8qIFdLUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdFMzc3OTE4
RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTdFMzc3NTE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDQzMiw3ICsxMDQxOCw2IEBACiAJCQkJMzc2MDg4MUUxNTA0MTNFOTAw
RkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTBBRkZC
OTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OUEyMUU0M0I4QTQwMDhCNzQ4
MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUQxNzVGMUVBNkFGOTkwMDNCMDg5NCAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDYzMSw3ICsxMDYx
Niw2IEBACiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVy
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjNBMTMwQzk5REMwMDZDOURFMiAv
KiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZCRTk2OTlF
MUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBN0UzNzc4MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1l
c3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU1NTE4QkJFMDQ0MDAwRkNGQzkgLyog
V0tTY3JvbGxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDRDFDNjYxQjM0QjlEQzAwMTQy
Q0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3NTM1OWZlYTNlNzA1N2ZkMjVj
NjNmMGI2YzQwZmZiZWNmYzNiODNlLi40YzI5OGI3MDgxYzBlNTE4NjFjMzRhZWRmMGFjZTlhMzU5
YzNlMWQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjQgQEAKIDIwMTctMDYtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAorICAgICAgICBSZXBsYWNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQ
SSBieSBDb2NvYSBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBvcnQgV2ViS2l0VGVzdFJ1bm5lciBvdmVyIHRvIHRoZSBuZXcgQ29jb2EgU1BJLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpOgorICAgICAgICBE
cm9wIGNhbGxzIHRvIHRoZSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQSSBoZXJl
LiBUaG9zZSB3ZXJlCisgICAgICAgIG5vLW9wcyBzaW5jZSB0aGlzIGNvZGUgcnVucyBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCBub3QgdGhlCisgICAgICAgIFVJUHJvY2Vzcy4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKworMjAxNy0wNi0zMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgc3RvcmUgbG9n
aWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciB0byBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAxYWEwZTVkNTlhNzRmOTYxMTAyOTlhN2My
MTY3OTNkZTZhODlkNDlmLi4xNTBhMzRiYzQ0OTYxNTA3NTEwMDYzNzMyMzhlZjNjYzk5N2JkNjZl
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVT
Y3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tQYWdlUHJpdmF0ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dl
YktpdDJfQy5oPgpAQCAtMTQ1NiwxMyArMTQ1NSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0
aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIiKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDAsIG51bGxwdHIpOwogfQotICAgIAorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1l
c3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sIHZh
bHVlKQpAQCAtMTQ3MSwxMyArMTQ2OSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3Rp
Y3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChibwogICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKHZhbHVlKSk7CiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpzZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSkK
IHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZCIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdh
c0NhcHR1cmVkKHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzTWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA4YWE2YTY4MGUyNTFlZTVi
YTM5OGU1MmQxNjQzNmVjYjI4MzJlZjUyLi4wYmVjMmQ5YWY4MzY0Yzg3OTljMmFiZDBkNzFjN2Zk
ZWVmNzQ0YTQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BsdWdpbkluZm9ybWF0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS1RleHRDaGVja2VyLmg+CkBAIC0zODgsOCArMzg3LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6Omluc3RhbGxNb2NrR2FtZXBhZFByb3ZpZGVy
KCk7CiAjZW5kaWYKLSAgICAKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGZhbHNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBwYWdlR3JvdXBJZGVudGlmaWVyKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFk
b3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5n
ZXQoKSkpOwpAQCAtMjIwOSwxNTcgKzIyMDYsMTQxIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKGJvb2wgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1p
CiAgICAgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMobV9tYWluV2ViVmlldy0+
cGFnZSgpLCBpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50
UmVzb3VyY2UoaG9zdE5hbWUsIHZhbHVlKTsKKyAgICBXS0NvbnRleHRUZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6Omlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorI2lmICFQ
TEFURk9STShDT0NPQSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3Qo
Y29uc3QgVGVzdEludm9jYXRpb24mKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VySXNQcmV2YWxlbnRSZXNvdXJjZShob3N0TmFtZSk7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdS
ZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgbV9tYWlu
V2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9u
LCBvcHRpb25zKTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorUGxhdGZvcm1XZWJWaWV3KiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJhY3Rpb24oaG9zdE5hbWUpOworICAgIHJldHVybiBu
ZXcgUGxhdGZvcm1XZWJWaWV3KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi12b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSkKK1dLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1B
ZGp1c3RDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIGNv
bnRleHQ7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVy
ZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogewotICAgIHJldHVybiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKGhvc3ROYW1lKTsKKwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQordW5z
aWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkKCkgY29u
c3QKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKGhvc3ROYW1lLCB0b3BGcmFtZUhvc3ROYW1lKTsKKyAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0TmFtZSkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50
aWFscygpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CiB9Ci0g
ICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGly
ZWN0ZWRUbykKKworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8ICFXS19BUElfRU5B
QkxFRAorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UoV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhob3N0TmFtZSwgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNl
Y29uZHMpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBzZWNvbmRzKQor
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZiwgYm9vbCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
U2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQorYm9v
bCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3Ry
aW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAgCi12b2lkIFRl
c3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KCkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tT
dHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogfQogCi12b2lkIFRlc3RDb250cm9s
bGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQorYm9vbCBUZXN0Q29udHJvbGxl
cjo6aXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
Rm9yT25lRG9tYWluKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CiB9Ci0gICAgCi12b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sIHZhbHVlKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAg
ICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7CiB9Ci0gICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92
YWwoYm9vbCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7Ci0gICAg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wg
dmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihkb3VibGUpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlKTsKIH0KLSAgICAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUpCiB7Ci0gICAg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcykKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQogewotICAgIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25k
cyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3Jl
TW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVkIGhvdXJzKQordm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbihX
S1N0cmluZ1JlZiwgYm9vbCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyhob3Vycyk7
CiB9Ci0gICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5
SGFuZGxlcigpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCkKIHsKLSAgICBXS0NvbnRleHRUZXJt
aW5hdGVOZXR3b3JrUHJvY2VzcyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0
IFRlc3RJbnZvY2F0aW9uJikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sKQogewogfQog
Ci12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlX
YXNDYXB0dXJlZChib29sKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiB9CiAKLVBsYXRmb3Jt
V2ViVmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3Jt
V2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
LCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlKQogewot
ICAgIHJldHVybiBuZXcgUGxhdGZvcm1XZWJWaWV3KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwog
fQogCi1XS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRqdXN0Q29udGV4dChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29u
ZmlndXJhdGlvbikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhl
cmluZ1RpbWUoZG91YmxlKQogewotICAgIHJldHVybiBjb250ZXh0OwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUo
KQogewotCiB9CiAKLXVuc2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW5lcmFs
UGFzdGVib2FyZCgpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCkKIHsK
LSAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDQyNDFlNGNiZWVhMzNlM2Y4ZGNmZjA5
NWNkMjRlNzQ2MmQxY2YwZmYuLmNkMzdkMjM5YTlhM2Q5YWNmZWVmN2EwZmMxNzIxMzA0MzA4NTUw
MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ3Jhc2hSZXBvcnRlcklu
Zm8uaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiU3RyaW5nRnVuY3Rp
b25zLmgiCiAjaW1wb3J0ICJUZXN0SW52b2NhdGlvbi5oIgogI2ltcG9ydCAiVGVzdFJ1bm5lcldL
V2ViVmlldy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CkBAIC00Miw2ICs0
Myw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oPgpAQCAtNTAsNiArNTIsMTEg
QEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK3N0YXRpYyBOU1N0cmluZyogdG9OU1N0cmluZyhXS1N0
cmluZ1JlZiBzdHJpbmcpCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmlu
Zzp0b1dURlN0cmluZyhzdHJpbmcpLnV0ZjgoKS5kYXRhKCldOworfQorCiBzdGF0aWMgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb247CiAKIHZvaWQgaW5p
dGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQYXRoLCBXS1N0
cmluZ1JlZiBpbmplY3RlZEJ1bmRsZVBhdGgsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQpAQCAtNzAsNyArNzcsOCBA
QCB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFyKiBsaWJyYXJ5
UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZQogICAgIFdLQ29va2llTWFuYWdlclNldENvb2tpZVN0
b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoY29udGV4
dCksIHRydWUpOwogI2VuZGlmCiAKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnRleHQp
LCB0cnVlKTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKyAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTpOT107CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlF
UzsKQEAgLTIxMSw0ICsyMTksMTIxIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpCiAjZW5kaWYKIH0KIAorI2lmIFdLX0FQSV9FTkFCTEVECit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdS
ZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc1ByZXZhbGVu
dFJlc291cmNlOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCitib29s
IFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1Jl
ZiBob3N0TmFtZSkKK3sKKyAgICByZXR1cm4gW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNl
OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEhhZFVzZXJJbnRlcmFjdGlvbjp2YWx1ZSBmb3JI
b3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKworYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNT
dGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQorewor
ICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJbnRlcmFjdGlvbjp0b05TU3RyaW5nKGhvc3RO
YW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhl
cmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0SXNHcmFuZGZhdGhlcmVkOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOwor
fQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lKQoreworICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzR3JhbmRmYXRoZXJl
ZDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW46dG9OU1N0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSBmb3JI
b3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nl
dFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbjp0b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5h
bWUpIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFdLU3RyaW5nUmVm
IGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKK3sKKyAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbzp0b05TU3RyaW5nKGhvc3ROYW1l
UmVkaXJlY3RlZFRvKSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91
YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTpzZWNvbmRzXTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
Cit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXJdOworfQorCit2
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXJGb3JPbmVEb21haW46dmFsdWUgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcigp
Cit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJlVGVsZW1ldHJ5SGFuZGxlcl07Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsKGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbDp2YWx1ZV07Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5
V2FzQ2FwdHVyZWQ6dmFsdWVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQor
eworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFs
OnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKGRvdWJsZSBzZWNvbmRzKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0R3JhbmRm
YXRoZXJpbmdUaW1lOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCit7CisgICAgW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6c3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNl
SG91cnModW5zaWduZWQgaG91cnMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzOmhvdXJzXTsKK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQoreworICAgIFtn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZV07Cit9CisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314371</attachid>
            <date>2017-06-30 21:55:03 -0700</date>
            <delta_ts>2017-06-30 22:02:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630215500.patch</filename>
            <type>text/plain</type>
            <size>69287</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uNGZlY2FmNzM1ZDM3MzY4Y2ZjZTQxODk3ZjhhMTUx
MDNkMmQ5OWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgd2l0aCBDb2NvYSBTUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlIEMgQVBJIGJ5IENvY29hIFNQSS4gVGhlIG5ldyBDb2NvYSBTUEkgaXMgb24KKyAg
ICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCBhbGxvd3MgdXMgdG8gZ2V0IHJpZCBvZiB0
aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIKKyAgICAgICAgc2luZ2xldG9uIGFz
IHRoZSBTUEkgY2FuIG5vdyBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgRHJvcCBvbGQgQyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICBEcm9wIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiB3aGljaCB3YXMgb25seSBy
ZXF1aXJlZCBieSB0aGUKKyAgICAgICAgQyBBUEkuIFRoaXMgaXMgYmVjYXVzZSB0aGUgQyBBUEkg
d2FzIGdsb2JhbCwgcmF0aGVyIHRoYW4gd29ya2luZyBvbiBhIHNwZWNpZmljCisgICAgICAgIHN0
b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgIEFkZCBuZXcgQ29jb2EgU1BJIG9uIFdLV2Vic2l0ZURhdGFTdG9yZS4g
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2Vy
dmVyKToKKyAgICAgICAgU3RvcCByZWdpc3RlcmluZyB0aGUgc3RvcmUgd2l0aCB0aGUgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgc2luZ2xldG9uLAorICAgICAgICBhcyB0aGlzIHNp
bmdsZXRvbiBpcyBnb25lLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIEFkZCBuZXcgZ2V0dGVyIHRvIHJldHJpZXZlIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZnJvbSB0aGUKKyAgICAgICAgV2Vic2l0
ZURhdGFTdG9yZS4gVGhpcyBpcyBuZWVkZWQgYnkgdGhlIG5ldyBDb2NvYSBTUEkuCisKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIERyb3Agc29t
ZSBmaWxlcy4KKworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDNjMTI3OTdlZmE1MzRlNzViODMwMTU1YmJhN2VhOTU3MGEzOTlkM2IuLjlkZjM3
NmVjOWEwNjRiOGRlMTAwZDE0MjJiZGE3ZTQwMjVmYzJmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CkBAIC0zMjgsNyArMzI4LDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAotICAgIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCAzNjM3NzdkN2NmZDViM2NiOWNjYzRlOWI3YmM5ZjJiMTY3MTNmZTJhLi4zNDIz
ZDNmMGI4YTcyNzUyOTVlMWRmNTI1ODJiNGMzYzZjMDk3ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMTA3LDE0ICsxMDcsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0
ZUNvZGluZ05vbmUuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3Bw
CiAgICAgVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0
Q2hlY2tlckNsaWVudC5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4NTdjNGU2ZmM4OTQ1NmVjN2NkNWNkODRk
M2ViOGFjOGE1ZjEwMDhjLi41MmM2ZDU0NzgxYjQyNDcwM2RlNTBiM2Q5MmVlM2Y3MDU5MjEwOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTY1LDcgKzE2NSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlci5jcHAKICAgICBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNw
cAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAogICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCkBAIC0xNzksOCAr
MTc4LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVj
b3JkLmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwCi0KICAgICBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW0KICAgICBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybVdQRS5jbWFrZQppbmRleCA5MjU1MGZjZTc3ZWI2NGVhYTIyZjg4ZTgxYTE5Njk4NTMw
MWFkYTViLi4zZjdjMDBmZjYyYmNhNDI5Zjk1YzYzOGI1ZmExNjZmNzIxZGUxMzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTI1LDEyICsxMjUsMTAgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nl
c3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmdOb25lLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAKLSAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5
NmFiYzhlZjVhYWMzZmQxYThkMzVmMTI4NTZjZDM0YjI5Mjc0NGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLSNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZhbGVu
dFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgp
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7
Ci0gICAgZWxzZQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hh
cmVkKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3RO
YW1lKSkpOwotfQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc1ByZXZh
bGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJldHVybiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkubG9nVXNlckludGVyYWN0aW9uKFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci0gICAgZWxzZQotICAgICAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotLy8gRklYTUU6IFRo
aXMgQVBJIG5hbWUgaXMgd3JvbmcuCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJJc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICBy
ZXR1cm4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12
b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgdG9XVEZT
dHJpbmcoaG9zdE5hbWUpKSwgdmFsdWUpOwotfQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJJc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAg
cmV0dXJuIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5pc0dyYW5k
ZmF0aGVyZWQoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQot
ewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkp
LCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFt
ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9z
dE5hbWUpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQot
Ci12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCB0b1dURlN0cmlu
Zyhob3N0TmFtZSkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRv
KSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykK
LXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZv
aWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCi17
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldEdyYW5k
ZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKLXsKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZURhdGFNb2Rp
ZmljYXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCi17Ci0gICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKHsgfSwgeyB0b1dURlN0cmluZyhob3N0TmFtZSkgfSwgZmFsc2UpOwotICAg
IGVsc2UKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgp
LmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHRvV1RGU3RyaW5nKGhvc3ROYW1l
KSB9LCB7IH0sIGZhbHNlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKGJvb2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsK
LX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKLXsKLSAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Ojpz
ZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShi
b29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hv
dWxkU3VibWl0VGVsZW1ldHJ5KHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmUoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNp
Z25lZCBob3VycykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hh
cmVkKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKLXsK
LSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbigyNF9oICogMzAuKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
MjRfaCk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOwotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUo
MV9oKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwotICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVk
KGZhbHNlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRydWUpOwotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5U3RvcmUo
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4MWZlMjQ0ZjViNWQyZGQ0NTU0ZTAzOGM4OWEwNWMyMzlhYzJjODU5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLSAgICAKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCBib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJJc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19F
WFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBP
UlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBX
S19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0
ZWRUbyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEdyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25k
cyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
KTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyRmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0Nh
cHR1cmVkKGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSk7Ci0gICAg
V0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3Vycyh1bnNpZ25lZCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOTU3MTA1OTliMzE3ZjUxYmZl
ZThjYTE5MmI5ZmQyYWJiODQ3NThhNy4uMzZkNjQyMjNlYzk5Y2ZhNjJlYTg5Y2YxMGRiZGU1MDM1
ZGVhNGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDEwICszMSwxNSBAQAogI2ltcG9ydCAi
V0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1w
b3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9y
dCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKIAogKyAoV0tXZWJzaXRl
RGF0YVN0b3JlICopZGVmYXVsdERhdGFTdG9yZQpAQCAtMjAyLDYgKzIwNywyMzQgQEAgLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRJc1ByZXZhbGVudFJlc291cmNlOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7CisgICAgZWxzZQorICAgICAgICBzdG9yZS0+Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdAor
eworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0
dXJuIE5POworCisgICAgcmV0dXJuIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwo
KSwgaG9zdCkpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNl
ckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAg
IGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChV
UkwoKSwgaG9zdCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0
aW9uKFVSTChVUkwoKSwgaG9zdCkpOworfQorCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzSGFkVXNlckludGVyYWN0aW9uOihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHJl
dHVybiBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgaG9zdCkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhlcmVkOihCT09M
KXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldEdy
YW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBob3N0KSwgdmFsdWUpOworfQorCistIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAqKWhvc3QKK3sKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBO
TzsKKworICAgIHJldHVybiBzdG9yZS0+aXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdCkp
OworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJp
bmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luKFVSTChVUkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKFVSTChVUkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvOihOU1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uOihkb3VibGUpc2Vjb25kcworeworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
aWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91Ymxl
KXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbDooZG91YmxlKXNl
Y29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzCit7CisgICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMge3NlY29uZHMgfSk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhh
bmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcgoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9y
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluOihCT09MKXZhbHVlIGZvckhv
c3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYg
KCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgeyBob3N0IH0sIGZhbHNl
KTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoeyBob3N0IH0sIHsgfSwgZmFsc2UpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlVGVs
ZW1ldHJ5SGFuZGxlcigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZDooQk9PTCl2YWx1ZQoreworICAg
IGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFs
dWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVt
b3ZhbCh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDooQk9PTCl2YWx1ZQoreworICAgIFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlCit7CisgICAgYXV0
byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdG9yZS0+c2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KHZhbHVlKTsKK30KKworLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworfQorCistICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZU1vZGlmaWVkU2luY2VIb3VyczoodW5zaWduZWQpaG91cnMKK3sKKyAgICBhdXRvKiBzdG9yZSA9
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5j
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3co
KSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQoreworICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7CisgICAgc3RvcmUtPnNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOworICAgIHN0b3JlLT5zZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKKyAgICBzdG9yZS0+c2V0R3JhbmRm
YXRoZXJpbmdUaW1lKDFfaCk7CisgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoZmFsc2UpOworICAgIFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoZmFs
c2UpOworICAgIHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh0cnVlKTsKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOworfQorCiBAZW5k
CiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApp
bmRleCA5MWU0NjNlMTNkZTFmMTgzN2Y3MDlhYTliMTcwNWUxNWQ5OTI3NmJlLi5iODlhMjZjYmY1
YWY5NzVjMGFiNTJhY2Q0YzM4NWJiYWUxYWY4NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaApAQCAtNDMsNiArNDMsMzIgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlv
cygxMC4wKSk7CiAKKy8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgU1BJIGZvciB0ZXN0aW5nLgor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6KEJP
T0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246KEJPT0wpdmFsdWUgZm9ySG9z
dDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJ
bnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldElzR3JhbmRmYXRoZXJlZDooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3Qg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
IChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAq
KWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG86KE5TU3RyaW5nICopaG9zdE5hbWVSZWRpcmVjdGVkVG8gZm9ySG9zdDoo
TlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb246KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOihkb3VibGUpc2Vjb25kcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVj
b3Jkc1JlbW92YWw6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldEdyYW5kZmF0aGVyaW5nVGltZTooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JP
bmVEb21haW46KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJP
T0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6
KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0
VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VyczoodW5zaWdu
ZWQpaG91cnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzVmZGU3N2M2NzdhOTQ0YmRiYWEx
NmNjMDNhNjgxYWNlZTUzZThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciYgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyPiB3ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjsKLSAgICByZXR1cm4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7Ci19Ci0K
LVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcigpCi17Ci19Ci0KLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjp+
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKQotewotfQotCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9yZSkKLXsKLSAgICBtX3N0b3JlID0gV1RGTW92
ZShzdG9yZSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNs
ZWFySW5NZW1vcnlTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQot
ewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCi17Ci0gICAgaWYgKCFt
X3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChtb2RpZmllZFNpbmNlKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAg
IGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+bG9nVXNlcklu
dGVyYWN0aW9uKHVybCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24odXJsKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFz
SGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbih1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1f
c3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFByZXZhbGVudFJlc291
cmNlKHVybCk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omlz
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aXNQcmV2YWxlbnRS
ZXNvdXJjZSh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQotewotICAgIGlmICgh
bV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJl
ZCh1cmwsIHZhbHVlKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzR3JhbmRmYXRo
ZXJlZCh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJmcmFtZSwgdG9w
RnJhbWUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgVVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJyZXNv
dXJjZSwgdG9wRnJhbWUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJj
ZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAgICBpZiAoIW1fc3RvcmUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhzdWJyZXNvdXJjZSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotfQotCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlKHNlY29uZHMpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9zdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZh
dGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLX0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkKLXsKLSAg
ICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwg
Y2xlYXJGaXJzdCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fc3RvcmUtPmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjJiYjIwODEwMDVkNTQwN2MxNzA4NjU2NDUzZmEyOTY1NTlhZjZjZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgPGNocm9ubz4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7
Ci0KLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYW4gQVBJT2JqZWN0IGZv
ciB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgotY2xhc3MgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIgewotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIG5vdCBiZSBhIHNpbmdsZXRvbi4KLSAgICBzdGF0aWMgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXImIHNoYXJlZCgpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0
b3JlKFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwotCi0gICAgfldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFj
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlv
bihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwotCi0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwm
LCBib29sIHZhbHVlKTsKLSAgICBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLQotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVz
b3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotCi0gICAg
dm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwotICAgIHZvaWQgc2V0
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7Ci0KLSAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KCk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKLSAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVy
KCk7Ci0KLSAgICB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVk
U2luY2UpOwotCi1wcml2YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
KCk7Ci0KLSAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3Jl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDZjM2QwMGVlMTg5YTk3ZTk2MWE5N2Q1NjRkOGE5ZGJkMWVhNTM2YWEuLjY4NDkyMTBiYTU0YWI5
MDlkNjM2NjU5ZTVlMTc4NDhiNTFjZTE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMjE0LDcgKzIx
Myw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJl
ZFJlc291cmNlTG9hZE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIAotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRTdGF0aXN0aWNzU3RvcmUoKnRoaXMpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLT5zZXROb3RpZmljYXRpb25DYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CiAgICAgICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggN2NhMjZk
ZWQ2MGMxNWZiZGFjYTM3YTliZTFiOGQ3NjEzNTBkNjg2Ni4uZTc2Mzk2MDVmYmEzNjRjZmNlNDhh
OGJkNDFmMjViZDkyNjhiMTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC04OSw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQg
cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogCiAgICAgc3RhdGljIHZvaWQg
Y2xvbmVTZXNzaW9uRGF0YShXZWJQYWdlUHJveHkmIHNvdXJjZVBhZ2UsIFdlYlBhZ2VQcm94eSYg
bmV3UGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMmE1M2U2NDI1ZDY1YTQwNjk3MmM5MWRiNzE0YWZjNjRmODZiOThlYy4u
YzhmY2I4Y2MyY2RjZjhhMTY3YmM1N2M2YmZkMmM5YTcwZGM0YzQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSwxMCAr
MTE5MSw2IEBACiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZG
MTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI4MjFEREMxRUVGMDVERDAwRDdB
RjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07CiAJCTZCODIx
REREMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIx
RERCMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcCAqLzsgfTsKLQkJNkJFOTY5OUMxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNkJFOTY5OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwICovOyB9OwotCQk2QkU5NjlBMDFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovOyB9OwotCQk2QkU5NjlBMjFFNDNCOEE0MDA4Qjc0
ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNkJFOTY5
QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0
ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUM3MUU1NEQ0QjYwMDhC
NzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDNjFFNTRENEI2MDA4Qjc0
ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwICovOyB9OwogCQk2QkU5
NjlDQTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZp
ZXJDb2NvYS5jcHAgKi87IH07CkBAIC0zNDgyLDEwICszNDc4LDYgQEAKIAkJNjVCODZGMTgxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI4MjFEREIxRUVGMDVE
RDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk2QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29yZVByZWRpY3Rpb25fbW9kZWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM2MUU1NEQ0QjYwMDhCNzQ4MyAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg2NSw4ICs2ODU3LDYgQEAKIAkJCQlCQzEx
MUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlCQzAz
MkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNFRTdB
QjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJ
CQk2QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwICovLAotCQkJCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZD
NyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBOUNEOEMx
MUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywK
IAkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLm1lc3NhZ2VzLmluICovLApAQCAtNzA3MSw4ICs3MDYxLDYgQEAKIAkJCQk1MThBQ0FF
OTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJCTMz
MzY3NjM4MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCAqLywK
IAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5o
ICovLAotCQkJCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmNwcCAqLywKLQkJCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEw
MDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2
MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjEx
RDAwMzc3MDQyIC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtODgxNSw3ICs4ODAzLDYgQEAK
IAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk2QkU5NjlBMDFFNDNC
ODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkI4MjFEREMxRUVG
MDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxMzA3NUIwMURFODVGNTgwMDM5RUM2OSAvKiBXZWJSVENNb25pdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTkwOTMsNyArOTA4MCw2IEBACiAJCQkJMzc5NDg0MDkxNTBD
NEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4
ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzMzNjc2M0IxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1
RjU2MDA3NTc1NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0UzNzc5
MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBN0UzNzc1MThFNEEzM0EwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNDMyLDcgKzEwNDE4LDYgQEAKIAkJCQkzNzYwODgxRTE1MDQxM0U5
MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEFG
RkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3
NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBRDE3NUYxRUE2QUY5OTAwM0IwODk0
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNjMxLDcgKzEw
NjE2LDYgQEAKIAkJCQkzNzk0ODQwODE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5k
ZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5REUy
IC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5
OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RTM3NzgxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0
TWVzc2FnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTU1MThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS1Njcm9sbFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUNEMUM2NjFCMzRCOURDMDAx
NDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1MzU5ZmVhM2U3MDU3ZmQy
NWM2M2YwYjZjNDBmZmJlY2ZjM2I4M2UuLjA2NDU2NTBkMjYxYTZmYzI5ZGZkY2QzY2ExODA2ZWJj
YTNkOTFjNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyNCBAQAogMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIEMg
QVBJIHdpdGggQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3J0IFdlYktpdFRlc3RSdW5uZXIgb3ZlciB0byB0aGUgbmV3IENvY29hIFNQ
SS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAg
ICAgRHJvcCBjYWxscyB0byB0aGUgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkg
aGVyZS4gVGhvc2Ugd2VyZQorICAgICAgICBuby1vcHMgc2luY2UgdGhpcyBjb2RlIHJ1bnMgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgbm90IHRoZQorICAgICAgICBVSVByb2Nlc3MuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisKKzIwMTctMDYt
MzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIHN0b3Jl
IGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMWFhMGU1ZDU5YTc0Zjk2MTEwMjk5
YTdjMjE2NzkzZGU2YTg5ZDQ5Zi4uMTUwYTM0YmM0NDk2MTUwNzUxMDA2MzczMjM4ZWYzY2M5OTdi
ZDY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVu
ZGxlU2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXQyX0MuaD4KQEAgLTE0NTYsMTMgKzE0NTUsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyIikpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpz
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZh
bHVlKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVm
PiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bCB2YWx1ZSkKQEAgLTE0NzEsMTMgKzE0NjksMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm8K
ICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9v
bGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9Ci0gICAgCisKIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFs
dWUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBt
ZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwotICAg
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGFhNmE2ODBlMjUx
ZWU1YmEzOThlNTJkMTY0MzZlY2IyODMyZWY1Mi4uMGJlYzJkOWFmODM2NGM4Nzk5YzJhYmQwZDcx
YzdmZGVlZjc0NGE0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5JbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgpAQCAtMzg4LDggKzM4Nyw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbnN0YWxsTW9ja0dhbWVwYWRQcm92
aWRlcigpOwogI2VuZGlmCi0gICAgCi0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShmYWxzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllcihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiV2ViS2l0VGVzdFJ1bm5lclBhZ2VHcm91cCIpKTsKICAgICBtX3BhZ2VHcm91
cC5hZG9wdChXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHBhZ2VHcm91cElkZW50aWZp
ZXIuZ2V0KCkpKTsKQEAgLTIyMDksMTU3ICsyMjA2LDE0MSBAQCB2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxl
TGltaQogICAgIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9z
dE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcygpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZh
bGVudFJlc291cmNlKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgV0tDb250ZXh0VGVybWluYXRlTmV0
d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVy
Ojppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5U
ZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcklzUHJldmFsZW50UmVzb3VyY2UoaG9zdE5hbWUpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbihob3N0TmFtZSwgdmFsdWUpOworICAgIG1f
bWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJh
dGlvbiwgb3B0aW9ucyk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkKK1BsYXRmb3JtV2ViVmll
dyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmll
dyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25z
dCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lKTsKKyAgICByZXR1
cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCitXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQWRqdXN0Q29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVy
biBjb250ZXh0OwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZh
dGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzR3JhbmRmYXRoZXJlZChob3N0TmFtZSk7CisKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkK
K3Vuc2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZCgp
IGNvbnN0CiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRv
cEZyYW1lSG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oaG9zdE5hbWUsIHRvcEZyYW1lSG9zdE5hbWUpOwog
fQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pCisKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKENPQ09BKSB8fCAhV0tfQVBJ
X0VOQUJMRUQKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oaG9zdE5hbWUsIGhvc3ROYW1l
UmVkaXJlY3RlZFRvKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCitib29sIFRlc3RDb250cm9s
bGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZikKIHsKLSAgICBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihzZWNvbmRzKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25k
cykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkK
K2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcigpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVk
KFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgVGVzdENvbnRy
b2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlckZvck9uZURvbWFpbihob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJGaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQotICAgIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7
Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wgdmFsdWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9Ci0g
ICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVu
RGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKIHsKLSAg
ICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNl
Y29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoaG91
cnMpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGUoKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpCiB7Ci0gICAgV0tDb250ZXh0
VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKQotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCkKIHsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoYm9vbCkKIHsKLSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi1QbGF0
Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSkK
IHsKLSAgICByZXR1cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25z
KTsKIH0KIAotV0tDb250ZXh0UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRl
eHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4
dENvbmZpZ3VyYXRpb24pCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gY29udGV4dDsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKCkKIHsKLQogfQogCi11bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2Vu
ZXJhbFBhc3RlYm9hcmQoKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQp
CiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MjQxZTRjYmVlYTMzZTNmOGRj
ZmYwOTVjZDI0ZTc0NjJkMWNmMGZmLi5jZDM3ZDIzOWE5YTNkOWFjZmVlZjdhMGZjMTcyMTMwNDMw
ODU1MDE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNyYXNoUmVwb3J0
ZXJJbmZvLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1
bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdEludm9jYXRpb24uaCIKICNpbXBvcnQgIlRlc3RSdW5u
ZXJXS1dlYlZpZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgpAQCAtNDIs
NiArNDMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTUwLDYgKzUy
LDExIEBACiAKIG5hbWVzcGFjZSBXVFIgewogCitzdGF0aWMgTlNTdHJpbmcqIHRvTlNTdHJpbmco
V0tTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENT
dHJpbmc6dG9XVEZTdHJpbmcoc3RyaW5nKS51dGY4KCkuZGF0YSgpXTsKK30KKwogc3RhdGljIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwogCiB2b2lk
IGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBjaGFyKiBsaWJyYXJ5UGF0aCwg
V0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKQEAgLTcwLDcgKzc3
LDggQEAgdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGli
cmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGUKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRDb29r
aWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKGNv
bnRleHQpLCB0cnVlKTsKICNlbmRpZgogCi0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tDb250ZXh0R2V0V2Vic2l0ZURhdGFTdG9yZShjb250
ZXh0KSwgdHJ1ZSk7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6Tk9dOwogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sg
PSBZRVM7CkBAIC0yMTEsNCArMjE5LDEyMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogI2VuZGlmCiB9CiAKKyNpZiBXS19BUElfRU5BQkxFRAor
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNQcmV2
YWxlbnRSZXNvdXJjZTp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwor
Ym9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJp
bmdSZWYgaG9zdE5hbWUpCit7CisgICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNQcmV2YWxlbnRSZXNv
dXJjZTp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246dmFsdWUg
Zm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkK
K3sKKyAgICByZXR1cm4gW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50ZXJhY3Rpb246dG9OU1N0cmluZyho
b3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJlZChXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1NldElzR3JhbmRmYXRoZXJlZDp2YWx1ZSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUp
XTsKK30KKworYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChX
S1N0cmluZ1JlZiBob3N0TmFtZSkKK3sKKyAgICByZXR1cm4gW2dsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc0dyYW5kZmF0
aGVyZWQ6dG9OU1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQoreworICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luOnRvTlNTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkg
Zm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCit7CisgICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW46dG9OU1N0cmluZyh0b3BGcmFtZUhv
c3ROYW1lKSBmb3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1N0cmlu
Z1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCit7CisgICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG86dG9OU1N0cmluZyhob3N0
TmFtZVJlZGlyZWN0ZWRUbykgZm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KGRvdWJsZSBzZWNvbmRzKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0VGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbjpzZWNvbmRzXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKGRvdWJsZSBzZWNvbmRzKQoreworICAgIFtn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWU6c2Vjb25kc107Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyXTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXJdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhvc3ROYW1l
LCBib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyRm9yT25lRG9tYWluOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSld
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXJdOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZChib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZDp2YWx1ZV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6dmFsdWVdOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0
ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25k
cykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbDpzZWNvbmRzXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dy
YW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldEdy
YW5kZmF0aGVyaW5nVGltZTpzZWNvbmRzXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQoreworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZV07Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRT
aW5jZUhvdXJzKHVuc2lnbmVkIGhvdXJzKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyczpob3Vyc107Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKK3sKKyAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVdOworfQorI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECisKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314372</attachid>
            <date>2017-06-30 22:02:43 -0700</date>
            <delta_ts>2017-07-01 09:10:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174060-20170630220240.patch</filename>
            <type>text/plain</type>
            <size>69315</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDdhOTgwYTExMDYzMzFj
NTk1OGRhYWNmYjQ3MmY3ZjViZjBmZTA2Ni4uNGZlY2FmNzM1ZDM3MzY4Y2ZjZTQxODk3ZjhhMTUx
MDNkMmQ5OWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA2LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVwbGFjZSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkgd2l0aCBDb2NvYSBTUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlIEMgQVBJIGJ5IENvY29hIFNQSS4gVGhlIG5ldyBDb2NvYSBTUEkgaXMgb24KKyAg
ICAgICAgV0tXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCBhbGxvd3MgdXMgdG8gZ2V0IHJpZCBvZiB0
aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIKKyAgICAgICAgc2luZ2xldG9uIGFz
IHRoZSBTUEkgY2FuIG5vdyBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRoZSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgRHJvcCBvbGQgQyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICBEcm9wIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyIHNpbmdsZXRvbiB3aGljaCB3YXMgb25seSBy
ZXF1aXJlZCBieSB0aGUKKyAgICAgICAgQyBBUEkuIFRoaXMgaXMgYmVjYXVzZSB0aGUgQyBBUEkg
d2FzIGdsb2JhbCwgcmF0aGVyIHRoYW4gd29ya2luZyBvbiBhIHNwZWNpZmljCisgICAgICAgIHN0
b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgIEFkZCBuZXcgQ29jb2EgU1BJIG9uIFdLV2Vic2l0ZURhdGFTdG9yZS4g
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2Vy
dmVyKToKKyAgICAgICAgU3RvcCByZWdpc3RlcmluZyB0aGUgc3RvcmUgd2l0aCB0aGUgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgc2luZ2xldG9uLAorICAgICAgICBhcyB0aGlzIHNp
bmdsZXRvbiBpcyBnb25lLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIEFkZCBuZXcgZ2V0dGVyIHRvIHJldHJpZXZlIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZnJvbSB0aGUKKyAgICAgICAgV2Vic2l0
ZURhdGFTdG9yZS4gVGhpcyBpcyBuZWVkZWQgYnkgdGhlIG5ldyBDb2NvYSBTUEkuCisKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIERyb3Agc29t
ZSBmaWxlcy4KKworMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIE1vdmUgc3RvcmUgbG9naWMgZnJvbSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlciB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDAzOAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDNjMTI3OTdlZmE1MzRlNzViODMwMTU1YmJhN2VhOTU3MGEzOTlkM2IuLjlkZjM3
NmVjOWEwNjRiOGRlMTAwZDE0MjJiZGE3ZTQwMjVmYzJmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CkBAIC0zMjgsNyArMzI4LDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAotICAgIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCAzNjM3NzdkN2NmZDViM2NiOWNjYzRlOWI3YmM5ZjJiMTY3MTNmZTJhLi4zNDIz
ZDNmMGI4YTcyNzUyOTVlMWRmNTI1ODJiNGMzYzZjMDk3ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMTA3LDE0ICsxMDcsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0
ZUNvZGluZ05vbmUuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3Bw
CiAgICAgVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0
Q2hlY2tlckNsaWVudC5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4NTdjNGU2ZmM4OTQ1NmVjN2NkNWNkODRk
M2ViOGFjOGE1ZjEwMDhjLi41MmM2ZDU0NzgxYjQyNDcwM2RlNTBiM2Q5MmVlM2Y3MDU5MjEwOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTY1LDcgKzE2NSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlci5jcHAKICAgICBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNw
cAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAogICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCkBAIC0xNzksOCAr
MTc4LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVj
b3JkLmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwCi0KICAgICBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW0KICAgICBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybVdQRS5jbWFrZQppbmRleCA5MjU1MGZjZTc3ZWI2NGVhYTIyZjg4ZTgxYTE5Njk4NTMw
MWFkYTViLi4zZjdjMDBmZjYyYmNhNDI5Zjk1YzYzOGI1ZmExNjZmNzIxZGUxMzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTI1LDEyICsxMjUsMTAgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nl
c3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmdOb25lLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAKLSAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5
NmFiYzhlZjVhYWMzZmQxYThkMzVmMTI4NTZjZDM0YjI5Mjc0NGQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKLSNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZhbGVu
dFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgp
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7
Ci0gICAgZWxzZQotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hh
cmVkKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3RO
YW1lKSkpOwotfQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJJc1ByZXZh
bGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQotewotICAgIHJldHVybiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXJTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkubG9nVXNlckludGVyYWN0aW9uKFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoaG9zdE5hbWUpKSk7Ci0gICAgZWxzZQotICAgICAgICBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuY2xlYXJVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotLy8gRklYTUU6IFRo
aXMgQVBJIG5hbWUgaXMgd3JvbmcuCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJJc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkKLXsKLSAgICBy
ZXR1cm4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lKSkpOwotfQotCi12
b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgdG9XVEZT
dHJpbmcoaG9zdE5hbWUpKSwgdmFsdWUpOwotfQotCi1ib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJJc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCi17Ci0gICAg
cmV0dXJuIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5pc0dyYW5k
ZmF0aGVyZWQoVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkpKTsKLX0KLQotdm9pZCBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKQot
ewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCB0b1dURlN0cmluZyhob3N0TmFtZSkp
LCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpKSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFt
ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoaG9z
dE5hbWUpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyh0b3BGcmFtZUhvc3ROYW1lKSkpOwotfQot
Ci12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhvc3ROYW1lUmVk
aXJlY3RlZFRvKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCB0b1dURlN0cmlu
Zyhob3N0TmFtZSkpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGhvc3ROYW1lUmVkaXJlY3RlZFRv
KSkpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQotewotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcykK
LXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHNlY29uZHMgfSk7Ci19Ci0KLXZv
aWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0pOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCi17
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNldEdyYW5k
ZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKLX0KLQotdm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKLXsKLSAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZURhdGFNb2Rp
ZmljYXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpCi17Ci0gICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpOwotfQotCi12b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJG
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKHsgfSwgeyB0b1dURlN0cmluZyhob3N0TmFtZSkgfSwgZmFsc2UpOwotICAg
IGVsc2UKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgp
LmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHRvV1RGU3RyaW5nKGhvc3ROYW1l
KSB9LCB7IH0sIGZhbHNlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzaGFyZWQoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKGJvb2wgdmFsdWUpCi17Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsK
LX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKLXsKLSAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSkKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Ojpz
ZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7Ci19Ci0KLXZvaWQg
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShi
b29sIHZhbHVlKQotewotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hv
dWxkU3VibWl0VGVsZW1ldHJ5KHZhbHVlKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmUoKTsKLX0KLQotdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNp
Z25lZCBob3VycykKLXsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hh
cmVkKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOwotfQotCi12b2lkIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKLXsK
LSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbigyNF9oICogMzAuKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
MjRfaCk7Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNoYXJlZCgpLnNl
dE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgxX2gpOwotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUo
MV9oKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwotICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVk
KGZhbHNlKTsKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRydWUpOwotICAgIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5jbGVhckluTWVtb3J5U3RvcmUo
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4MWZlMjQ0ZjViNWQyZGQ0NTU0ZTAzOGM4OWEwNWMyMzlhYzJjODU5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLSAgICAKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCBib29sIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJJc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBXS19F
WFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0SGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBP
UlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VySXNIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3RO
YW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgYm9vbCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VySXNHcmFuZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKLSAgICBX
S19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3ROYW1lKTsKLSAgICBXS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiBob3N0TmFtZVJlZGlyZWN0
ZWRUbyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwotICAgIFdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldEdyYW5kZmF0aGVyaW5nVGltZShkb3VibGUgc2Vjb25k
cyk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
KTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKFdLU3RyaW5nUmVmIGhv
c3ROYW1lLCBib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyRmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLSAgICBXS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0Nh
cHR1cmVkKGJvb2wgdmFsdWUpOwotICAgIFdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCB2YWx1ZSk7Ci0gICAg
V0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICBXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3Vycyh1bnNpZ25lZCk7Ci0gICAgV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlclJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOTU3MTA1OTliMzE3ZjUxYmZl
ZThjYTE5MmI5ZmQyYWJiODQ3NThhNy4uMzZkNjQyMjNlYzk5Y2ZhNjJlYTg5Y2YxMGRiZGU1MDM1
ZGVhNGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDEwICszMSwxNSBAQAogI2ltcG9ydCAi
V0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1w
b3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9y
dCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKIAogKyAoV0tXZWJzaXRl
RGF0YVN0b3JlICopZGVmYXVsdERhdGFTdG9yZQpAQCAtMjAyLDYgKzIwNywyMzQgQEAgLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTZXRJc1ByZXZhbGVudFJlc291cmNlOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICop
aG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7CisgICAgZWxzZQorICAgICAgICBzdG9yZS0+Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3QpKTsKK30KKworLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdAor
eworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0
dXJuIE5POworCisgICAgcmV0dXJuIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwo
KSwgaG9zdCkpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNl
ckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAg
IGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChV
UkwoKSwgaG9zdCkpOworICAgIGVsc2UKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0
aW9uKFVSTChVUkwoKSwgaG9zdCkpOworfQorCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzSGFkVXNlckludGVyYWN0aW9uOihOU1N0cmluZyAqKWhvc3QKK3sKKyAgICBhdXRvKiBzdG9y
ZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHJl
dHVybiBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgaG9zdCkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhlcmVkOihCT09M
KXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldEdy
YW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBob3N0KSwgdmFsdWUpOworfQorCistIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAqKWhvc3QKK3sKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybiBO
TzsKKworICAgIHJldHVybiBzdG9yZS0+aXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdCkp
OworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJp
bmcgKilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luKFVSTChVUkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0Cit7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKFVSTChVUkwoKSwgaG9zdCksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworfQor
CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvOihOU1N0cmluZyAqKWhvc3ROYW1lUmVkaXJlY3RlZFRvIGZvckhvc3Q6KE5TU3RyaW5n
ICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIGhvc3QpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uOihkb3VibGUpc2Vjb25kcworeworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
aWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZTooZG91Ymxl
KXNlY29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZShTZWNvbmRzIHsgc2Vjb25kcyB9KTsKK30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbDooZG91YmxlKXNl
Y29uZHMKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6KGRvdWJsZSlzZWNvbmRzCit7CisgICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMge3NlY29uZHMgfSk7Cit9
CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhh
bmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsK
K30KKworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcgoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9y
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluOihCT09MKXZhbHVlIGZvckhv
c3Q6KE5TU3RyaW5nICopaG9zdAoreworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYg
KCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwgeyBob3N0IH0sIGZhbHNl
KTsKKyAgICBlbHNlCisgICAgICAgIHN0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXIoeyBob3N0IH0sIHsgfSwgZmFsc2UpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIKK3sKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5maXJlVGVs
ZW1ldHJ5SGFuZGxlcigpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZDooQk9PTCl2YWx1ZQoreworICAg
IGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFs
dWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUKK3sKKyAgICBh
dXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVt
b3ZhbCh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXROb3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDooQk9PTCl2YWx1ZQoreworICAgIFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlCit7CisgICAgYXV0
byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdG9yZS0+c2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KHZhbHVlKTsKK30KKworLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUKK3sK
KyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworfQorCistICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZU1vZGlmaWVkU2luY2VIb3VyczoodW5zaWduZWQpaG91cnMKK3sKKyAgICBhdXRvKiBzdG9yZSA9
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpOworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5j
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3co
KSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOworfQorCistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQoreworICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oMjRfaCAqIDMwLik7CisgICAgc3RvcmUtPnNldFRp
bWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOworICAgIHN0b3JlLT5zZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKKyAgICBzdG9yZS0+c2V0R3JhbmRm
YXRoZXJpbmdUaW1lKDFfaCk7CisgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoZmFsc2UpOworICAgIFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoZmFs
c2UpOworICAgIHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh0cnVlKTsKKyAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOworfQorCiBAZW5k
CiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApp
bmRleCA5MWU0NjNlMTNkZTFmMTgzN2Y3MDlhYTliMTcwNWUxNWQ5OTI3NmJlLi5iODlhMjZjYmY1
YWY5NzVjMGFiNTJhY2Q0YzM4NWJiYWUxYWY4NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaApAQCAtNDMsNiArNDMsMzIgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlv
cygxMC4wKSk7CiAKKy8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgU1BJIGZvciB0ZXN0aW5nLgor
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6KEJP
T0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246KEJPT0wpdmFsdWUgZm9ySG9z
dDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJ
bnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldElzR3JhbmRmYXRoZXJlZDooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3Qg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
IChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAq
KWhvc3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcg
Kilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbjooTlNTdHJpbmcgKil0b3BGcmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3Ry
aW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG86KE5TU3RyaW5nICopaG9zdE5hbWVSZWRpcmVjdGVkVG8gZm9ySG9zdDoo
TlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb246KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlOihkb3VibGUpc2Vjb25kcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVj
b3Jkc1JlbW92YWw6KGRvdWJsZSlzZWNvbmRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1NldEdyYW5kZmF0aGVyaW5nVGltZTooZG91YmxlKXNlY29uZHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JP
bmVEb21haW46KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6KEJP
T0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWw6KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQ6
KEJPT0wpdmFsdWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0
VGVsZW1ldHJ5OihCT09MKXZhbHVlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VyczoodW5zaWdu
ZWQpaG91cnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzVmZGU3N2M2NzdhOTQ0YmRiYWEx
NmNjMDNhNjgxYWNlZTUzZThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlciYgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNoYXJlZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyPiB3ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjsKLSAgICByZXR1cm4gd2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7Ci19Ci0K
LVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcigpCi17Ci19Ci0KLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjp+
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIoKQotewotfQotCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9yZSkKLXsKLSAgICBtX3N0b3JlID0gV1RGTW92
ZShzdG9yZSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmNs
ZWFySW5NZW1vcnlTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5KCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKQot
ewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCi17Ci0gICAgaWYgKCFt
X3N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChtb2RpZmllZFNpbmNlKTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAg
IGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+bG9nVXNlcklu
dGVyYWN0aW9uKHVybCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24odXJsKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFz
SGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbih1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAoIW1f
c3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFByZXZhbGVudFJlc291
cmNlKHVybCk7Ci19Ci0KLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omlz
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9zdG9yZS0+aXNQcmV2YWxlbnRS
ZXNvdXJjZSh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9z
dG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQotewotICAgIGlmICgh
bV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJl
ZCh1cmwsIHZhbHVlKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICghbV9zdG9yZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fc3RvcmUtPmlzR3JhbmRmYXRo
ZXJlZCh1cmwpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJmcmFtZSwgdG9w
RnJhbWUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgVVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdWJyZXNv
dXJjZSwgdG9wRnJhbWUpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJj
ZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAgICBpZiAoIW1fc3RvcmUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhzdWJyZXNvdXJjZSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotfQotCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBpZiAoIW1fc3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlKHNlY29uZHMpOwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9zdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZh
dGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9zdG9yZS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMp
OwotfQotCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKQotewotICAgIGlmICghbV9zdG9yZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLX0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkKLXsKLSAg
ICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwg
Y2xlYXJGaXJzdCk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fc3RvcmUtPmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjJiYjIwODEwMDVkNTQwN2MxNzA4NjU2NDUzZmEyOTY1NTlhZjZjZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgPGNocm9ubz4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7
Ci0KLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYW4gQVBJT2JqZWN0IGZv
ciB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgotY2xhc3MgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIgewotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcj47Ci1wdWJsaWM6Ci0gICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIG5vdCBiZSBhIHNpbmdsZXRvbi4KLSAgICBzdGF0aWMgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXImIHNoYXJlZCgpOwotICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0
b3JlKFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwotCi0gICAgfldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFj
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlv
bihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwotCi0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpVUkwm
LCBib29sIHZhbHVlKTsKLSAgICBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLQotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVz
b3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotCi0gICAg
dm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwotICAgIHZvaWQgc2V0
VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7Ci0gICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7Ci0KLSAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KCk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKLSAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVy
KCk7Ci0KLSAgICB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVk
U2luY2UpOwotCi1wcml2YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
KCk7Ci0KLSAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3Jl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDZjM2QwMGVlMTg5YTk3ZTk2MWE5N2Q1NjRkOGE5ZGJkMWVhNTM2YWEuLjY4NDkyMTBiYTU0YWI5
MDlkNjM2NjU5ZTVlMTc4NDhiNTFjZTE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRl
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMjE0LDcgKzIx
Myw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJl
ZFJlc291cmNlTG9hZE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIAotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzaGFyZWQoKS5z
ZXRTdGF0aXN0aWNzU3RvcmUoKnRoaXMpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLT5zZXROb3RpZmljYXRpb25DYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CiAgICAgICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggN2NhMjZk
ZWQ2MGMxNWZiZGFjYTM3YTliZTFiOGQ3NjEzNTBkNjg2Ni4uZTc2Mzk2MDVmYmEzNjRjZmNlNDhh
OGJkNDFmMjViZDkyNjhiMTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC04OSw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGljcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogICAgIHZvaWQg
cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogCiAgICAgc3RhdGljIHZvaWQg
Y2xvbmVTZXNzaW9uRGF0YShXZWJQYWdlUHJveHkmIHNvdXJjZVBhZ2UsIFdlYlBhZ2VQcm94eSYg
bmV3UGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMmE1M2U2NDI1ZDY1YTQwNjk3MmM5MWRiNzE0YWZjNjRmODZiOThlYy4u
YzhmY2I4Y2MyY2RjZjhhMTY3YmM1N2M2YmZkMmM5YTcwZGM0YzQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSwxMCAr
MTE5MSw2IEBACiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZG
MTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI4MjFEREMxRUVGMDVERDAwRDdB
RjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIxRERBMUVFRjA1REQwMEQ3QUY0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggKi87IH07CiAJCTZCODIx
REREMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCODIx
RERCMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmNwcCAqLzsgfTsKLQkJNkJFOTY5OUMxRTQzQjNGRjAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNkJFOTY5OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIuY3BwICovOyB9OwotCQk2QkU5NjlBMDFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovOyB9OwotCQk2QkU5NjlBMjFFNDNCOEE0MDA4Qjc0
ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgz
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNkJFOTY5
QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDMDFFNTRENDUyMDA4Qjc0
ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZCRTk2OUM3MUU1NEQ0QjYwMDhC
NzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDNjFFNTRENEI2MDA4Qjc0
ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwICovOyB9OwogCQk2QkU5
NjlDQTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZp
ZXJDb2NvYS5jcHAgKi87IH07CkBAIC0zNDgyLDEwICszNDc4LDYgQEAKIAkJNjVCODZGMTgxMkYx
MUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQnVuZGxlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZCODIxRERBMUVFRjA1REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI4MjFEREIxRUVGMDVE
RDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlCMUU0M0IzRkYwMDhCNzQ4MyAvKiBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNkJFOTY5OUQxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk2QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QkU5NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29yZVByZWRpY3Rpb25fbW9kZWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM2MUU1NEQ0QjYwMDhCNzQ4MyAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUM4MUU1NEQ0Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg2NSw4ICs2ODU3LDYgQEAKIAkJCQlCQzEx
MUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywKIAkJCQlCQzAz
MkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJQkNFRTdB
QjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJ
CQk2QkU5NjlBMTFFNDNCOEE0MDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwICovLAotCQkJCTZCRTk2OTlGMUU0M0I4NkUwMDhCNzQ4MyAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZD
NyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBOUNEOEMx
MUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywK
IAkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLm1lc3NhZ2VzLmluICovLApAQCAtNzA3MSw4ICs3MDYxLDYgQEAKIAkJCQk1MThBQ0FF
OTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovLAogCQkJCTMz
MzY3NjM4MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCAqLywK
IAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5o
ICovLAotCQkJCTZCRTk2OTlEMUU0M0I0MUQwMDhCNzQ4MyAvKiBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmNwcCAqLywKLQkJCQk2QkU5Njk5QjFFNDNCM0ZGMDA4Qjc0ODMgLyogV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEw
MDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2
MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjEx
RDAwMzc3MDQyIC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtODgxNSw3ICs4ODAzLDYgQEAK
IAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk2QkU5NjlBMDFFNDNC
ODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkI4MjFEREMxRUVG
MDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxMzA3NUIwMURFODVGNTgwMDM5RUM2OSAvKiBXZWJSVENNb25pdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTkwOTMsNyArOTA4MCw2IEBACiAJCQkJMzc5NDg0MDkxNTBD
NEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4
ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzMzNjc2M0IxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTZCRTk2OTlDMUU0M0IzRkYwMDhCNzQ4MyAvKiBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1
RjU2MDA3NTc1NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0UzNzc5
MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBN0UzNzc1MThFNEEzM0EwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNDMyLDcgKzEwNDE4LDYgQEAKIAkJCQkzNzYwODgxRTE1MDQxM0U5
MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEFG
RkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5QTIxRTQzQjhBNDAwOEI3
NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBRDE3NUYxRUE2QUY5OTAwM0IwODk0
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwNjMxLDcgKzEw
NjE2LDYgQEAKIAkJCQkzNzk0ODQwODE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5k
ZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5REUy
IC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNkJFOTY5
OUUxRTQzQjQxRDAwOEI3NDgzIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RTM3NzgxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0
TWVzc2FnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTU1MThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS1Njcm9sbFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUNEMUM2NjFCMzRCOURDMDAx
NDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1MzU5ZmVhM2U3MDU3ZmQy
NWM2M2YwYjZjNDBmZmJlY2ZjM2I4M2UuLjA2NDU2NTBkMjYxYTZmYzI5ZGZkY2QzY2ExODA2ZWJj
YTNkOTFjNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyNCBAQAogMjAxNy0wNi0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCisgICAgICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIEMg
QVBJIHdpdGggQ29jb2EgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3J0IFdlYktpdFRlc3RSdW5uZXIgb3ZlciB0byB0aGUgbmV3IENvY29hIFNQ
SS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKToKKyAgICAg
ICAgRHJvcCBjYWxscyB0byB0aGUgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgQyBBUEkg
aGVyZS4gVGhvc2Ugd2VyZQorICAgICAgICBuby1vcHMgc2luY2UgdGhpcyBjb2RlIHJ1bnMgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgbm90IHRoZQorICAgICAgICBVSVByb2Nlc3MuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisKKzIwMTctMDYt
MzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIHN0b3Jl
IGxvZ2ljIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQwMzgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMWFhMGU1ZDU5YTc0Zjk2MTEwMjk5
YTdjMjE2NzkzZGU2YTg5ZDQ5Zi4uMTUwYTM0YmM0NDk2MTUwNzUxMDA2MzczMjM4ZWYzY2M5OTdi
ZDY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVu
ZGxlU2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUGFnZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXQyX0MuaD4KQEAgLTE0NTYsMTMgKzE0NTUsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzRmlyZVRlbGVtZXRyeUhhbmRsZXIoKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyIikpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwLCBudWxscHRyKTsKIH0KLSAgICAKKwogdm9pZCBUZXN0UnVubmVyOjpz
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZh
bHVlKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVm
PiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1
bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bCB2YWx1ZSkKQEAgLTE0NzEsMTMgKzE0NjksMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0
aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm8K
ICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLQm9v
bGVhbkNyZWF0ZSh2YWx1ZSkpOwogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CiB9Ci0gICAgCisKIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFs
dWUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBt
ZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwotICAg
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChkb3VibGUgc2Vjb25kcykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGFhNmE2ODBlMjUx
ZWU1YmEzOThlNTJkMTY0MzZlY2IyODMyZWY1Mi4uMGJlYzJkOWFmODM2NGM4Nzk5YzJhYmQwZDcx
YzdmZGVlZjc0NGE0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5JbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgpAQCAtMzg4LDggKzM4Nyw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbnN0YWxsTW9ja0dhbWVwYWRQcm92
aWRlcigpOwogI2VuZGlmCi0gICAgCi0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
clNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShmYWxzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllcihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiV2ViS2l0VGVzdFJ1bm5lclBhZ2VHcm91cCIpKTsKICAgICBtX3BhZ2VHcm91
cC5hZG9wdChXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHBhZ2VHcm91cElkZW50aWZp
ZXIuZ2V0KCkpKTsKQEAgLTIyMDksMTU3ICsyMjA2LDE0MSBAQCB2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyhib29sIGlnbm9yZXNWaWV3cG9ydFNjYWxl
TGltaQogICAgIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9z
dE5hbWUsIGJvb2wgdmFsdWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcygpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFByZXZh
bGVudFJlc291cmNlKGhvc3ROYW1lLCB2YWx1ZSk7CisgICAgV0tDb250ZXh0VGVybWluYXRlTmV0
d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVy
Ojppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5U
ZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcklzUHJldmFsZW50UmVzb3VyY2UoaG9zdE5hbWUpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbihob3N0TmFtZSwgdmFsdWUpOworICAgIG1f
bWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJh
dGlvbiwgb3B0aW9ucyk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSkKK1BsYXRmb3JtV2ViVmll
dyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmll
dyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25z
dCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcklzSGFzSGFkVXNlckludGVyYWN0aW9uKGhvc3ROYW1lKTsKKyAgICByZXR1
cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYg
aG9zdE5hbWUsIGJvb2wgdmFsdWUpCitXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQWRqdXN0Q29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZiBjb250ZXh0Q29uZmlndXJhdGlvbikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJlZChob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVy
biBjb250ZXh0OwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZh
dGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKLSAgICByZXR1cm4gV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcklzR3JhbmRmYXRoZXJlZChob3N0TmFtZSk7CisKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0TmFtZSkK
K3Vuc2lnbmVkIFRlc3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZCgp
IGNvbnN0CiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihob3N0TmFtZSwgdG9wRnJhbWVIb3N0TmFtZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIHRv
cEZyYW1lSG9zdE5hbWUpCit2b2lkIFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oaG9zdE5hbWUsIHRvcEZyYW1lSG9zdE5hbWUpOwog
fQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pCisKKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKENPQ09BKSB8fCAhV0tfQVBJ
X0VOQUJMRUQKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oaG9zdE5hbWUsIGhvc3ROYW1l
UmVkaXJlY3RlZFRvKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpCitib29sIFRlc3RDb250cm9s
bGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZikKIHsKLSAgICBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihzZWNvbmRzKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShkb3VibGUgc2Vjb25k
cykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlclNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkK
K2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihX
S1N0cmluZ1JlZikKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyRmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcigpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVk
KFdLU3RyaW5nUmVmLCBib29sKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXJGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK2Jvb2wgVGVzdENvbnRy
b2xsZXI6OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYpCiB7Ci0gICAgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlckZvck9uZURvbWFpbihob3N0TmFtZSwgdmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXJGaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQotICAgIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSkKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYpCiB7
Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wgdmFsdWUpCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChi
b29sIHZhbHVlKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oZG91YmxlKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSk7CiB9Ci0g
ICAgCi12b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVu
RGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoZG91YmxlKQogewot
ICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJTZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29uZHMpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKIHsKLSAg
ICBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNl
Y29uZHMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnN0YXRpc3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21h
aW4oV0tTdHJpbmdSZWYsIGJvb2wpCiB7Ci0gICAgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlckNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoaG91
cnMpOwogfQotICAgIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGUoKQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzRmlyZVRlbGVt
ZXRyeUhhbmRsZXIoKQogewotICAgIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpCiB7Ci0gICAgV0tDb250ZXh0
VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKQotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCkKIHsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoYm9vbCkKIHsKLSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCi1QbGF0
Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKGRvdWJsZSkK
IHsKLSAgICByZXR1cm4gbmV3IFBsYXRmb3JtV2ViVmlldyhjb25maWd1cmF0aW9uLCBvcHRpb25z
KTsKIH0KIAotV0tDb250ZXh0UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRl
eHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4
dENvbmZpZ3VyYXRpb24pCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKGRvdWJsZSkKIHsKLSAgICByZXR1cm4gY29udGV4dDsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlKCkKIHsKLQogfQogCi11bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2Vu
ZXJhbFBhc3RlYm9hcmQoKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnModW5zaWduZWQp
CiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA0MjQxZTRjYmVlYTMzZTNmOGRj
ZmYwOTVjZDI0ZTc0NjJkMWNmMGZmLi43ODMxMTFjYTY1MTRlY2EwOTc5YjNmNGJiODQ1YmE4Yzk0
YmVhMTc3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNyYXNoUmVwb3J0
ZXJJbmZvLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlN0cmluZ0Z1
bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdEludm9jYXRpb24uaCIKICNpbXBvcnQgIlRlc3RSdW5u
ZXJXS1dlYlZpZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgpAQCAtNDIs
NiArNDMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTUwLDYgKzUy
LDEzIEBACiAKIG5hbWVzcGFjZSBXVFIgewogCisjaWYgV0tfQVBJX0VOQUJMRUQKK3N0YXRpYyBO
U1N0cmluZyogdG9OU1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgcmV0dXJuIFtO
U1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzp0b1dURlN0cmluZyhzdHJpbmcpLnV0ZjgoKS5kYXRh
KCldOworfQorI2VuZGlmCisKIHN0YXRpYyBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbjsKIAogdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRp
b24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGVkQnVuZGxlUGF0
aCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4
dENvbmZpZ3VyYXRpb24pCkBAIC03MCw3ICs3OSw4IEBAIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXdD
b25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQYXRoLCBXS1N0cmluZ1JlZiBpbmplY3Rl
CiAgICAgV0tDb29raWVNYW5hZ2VyU2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQo
V0tDb250ZXh0R2V0Q29va2llTWFuYWdlcihjb250ZXh0KSwgdHJ1ZSk7CiAjZW5kaWYKIAotICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLQ29u
dGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoY29udGV4dCksIHRydWUpOworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDpZRVNdOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5
Ok5PXTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOwpAQCAtMjExLDQgKzIyMSwxMjEgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKICNlbmRp
ZgogfQogCisjaWYgV0tfQVBJX0VOQUJMRUQKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkK
K3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFsZW50UmVzb3VyY2U6dmFsdWUgZm9ySG9zdDp0
b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQoreworICAgIHJldHVy
biBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6dG9OU1N0cmluZyhob3N0TmFtZSldOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQoreworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2V0SGFkVXNlckludGVyYWN0aW9uOnZhbHVlIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSld
OworfQorCitib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAgcmV0dXJuIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFk
VXNlckludGVyYWN0aW9uOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJc0dyYW5kZmF0aGVyZWQ6dmFsdWUg
Zm9ySG9zdDp0b05TU3RyaW5nKGhvc3ROYW1lKV07Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCit7CisgICAg
cmV0dXJuIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0
TmFtZSkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbjp0
b05TU3RyaW5nKHRvcEZyYW1lSG9zdE5hbWUpIGZvckhvc3Q6dG9OU1N0cmluZyhob3N0TmFtZSld
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBXS1N0cmluZ1JlZiB0b3BGcmFt
ZUhvc3ROYW1lKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2luOnRvTlNTdHJpbmcodG9wRnJhbWVIb3N0TmFtZSkgZm9ySG9zdDp0b05TU3RyaW5nKGhv
c3ROYW1lKV07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIFdLU3RyaW5nUmVmIGhv
c3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvOnRvTlNTdHJpbmcoaG9zdE5hbWVSZWRpcmVjdGVkVG8pIGZvckhvc3Q6dG9O
U1N0cmluZyhob3N0TmFtZSldOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb246c2Vjb25kc107Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShkb3VibGUgc2Vjb25kcykKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlOnNlY29uZHNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0
aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcl07Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NGaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQoreworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3RhdGlzdGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9u
ZURvbWFpbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlckZvck9uZURvbWFpbjp2YWx1ZSBm
b3JIb3N0OnRvTlNTdHJpbmcoaG9zdE5hbWUpXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc0ZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcmVU
ZWxlbWV0cnlIYW5kbGVyXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkKK3sKKyAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1NldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQ6dmFs
dWVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCB2YWx1ZSkKK3sKKyAgICBb
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1NldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1v
dmFsOnZhbHVlXTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUpCit7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZDp2YWx1ZV07Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRh
UmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWw6c2Vjb25kc107Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoZG91YmxlIHNlY29u
ZHMpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUg
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRHcmFuZGZhdGhlcmluZ1RpbWU6c2Vjb25kc107Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKCkKK3sKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmVdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKK3sK
KyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnM6aG91cnNdOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlXTsKK30KKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCiB9IC8vIG5hbWVzcGFjZSBX
VFIK
</data>

          </attachment>
      

    </bug>

</bugzilla>